Прошу перевести советник с МТ4 в МТ5.
Это чистый трал по ZigZagу.
Нужен поручитель.
Советник прилагается:
Tral_ZZ.mq4 (5 Kb)
//+------------------------------------------------------------------+
//| Tral_ZZ.mq4 |
//| Copyright 2022, MetaQuotes Software Corp. |
//|
www.mql5.com |
//+------------------------------------------------------------------+
#property copyright «Copyright 2022, MetaQuotes Software Corp.»
#property link «
www.mql5.com»
#property version «1.00»
#property strict
//+------------------------------------------------------------------+
extern int ExtDepth = 5;
extern int ExtDeviation = 3;
extern int ExtBackstep = 2;
extern bool _trailingStop = true; // вкл. трала
//+------------------------------------------------------------------+
void OnTick()
{
if (_trailingStop)
{ _TrailingStop();
}
}
//+------------------------------------------------------------------+
double GetExtremumZZPrice(int ne=0) {
double zz;
int i, k=iBars(Symbol(), 0), ke=0;
for (i=1; i<k; i++) {
zz=iCustom(Symbol(),0, «ZigZag», ExtDepth,ExtDeviation,ExtBackstep,0,i);
if (zz!=0) {
ke++;
if (ke>ne) return(zz);
}
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void _TrailingStop(){
int i;
bool m;
double _lastExtremum_1 = GetExtremumZZPrice(1);
double _lastExtremum_2 = GetExtremumZZPrice(2);
double _stopLossSellF = _lastExtremum_2,
_stopLossBuyF = _lastExtremum_2;
if (OrdersTotal()>0){
for (i=OrdersTotal()-1; i>=0; i--){
if (OrderSelect(i, SELECT_BY_POS)){
if (OrderSymbol()==Symbol() /*&& OrderMagicNumber()==-1*/){
if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF && _lastExtremum_1 > _lastExtremum_2){
while (IsTradeContextBusy()) Sleep(1000);
RefreshRates();
m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
}
if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0 && _lastExtremum_1 < _lastExtremum_2){
while (IsTradeContextBusy()) Sleep(1000);
RefreshRates();
m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
}
}
}
}
}
return;
}
//+------------------------------------------------------------------+
Комментарии (3)
9 droba Автор Сообщений: 239 - Droba
18 Boris54 Сообщений: 810 - ПенSионер
35 AM2 Сообщений: 16266 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий