Скачал библиотеку трейлинг - стопов TrailingFuncLib.mq4 с библиотеки кодэбазе.
Отредактировал стандартный tral_stop.mqh инклюда учебника трейлингом из этой библиотеки по 2-м ATR.
//--------------------------------------------------------------------// Tral_Stop.mqh//// ТРЕЙЛИНГ ПО 2-ум ATR (Average True Range, Средний истинный диапазон) // период АТR и коэффициент, на который умножается ATR. Т.о. стоплосс "тянется" на расстоянии// ATR х N от текущего курса; перенос - на новом баре (т.е. от цены // открытия очередного бара). Выбирается из двух АТР максимальный, чтобы из-за возможной // низкой волатильности рынка, дерганьем цены не выбило лося.//--------------------------------------------------------------- 1 --// Функция модификации StopLoss всех ордеров указанного типа// Глобальные переменные:// Mas_Ord_New Массив ордеров последний известный// int TralingStop Значение TralingStop(количество пунктов)//--------------------------------------------------------------- 2 --int Tral_Stop(int Tip){int Ticket;// Номер ордераdouble
Price,// Цена открытия рыночного ордера
TS,// TralingStop (относит.знач.цены)
SL,// Значение StopLoss ордера
TP;// Значение TakeProfit ордераbool Modify;// Признак необходимости модифи.double curr_atr1;// текущее значение ATR - 1double curr_atr2;// текущее значение ATR - 2double best_atr;// большее из значений ATRdouble atrXmul;// результат умножения большего из ATR на множительdouble newstop;// новый стоплосс//--------------------------------------------------------------- 3 --for(int i=1;i<=Mas_Ord_New[0][0];i++)// Цикл по всем ордерам{// Ищем ордера задан. типаif(Mas_Ord_New[i][6]!=Tip)// Если это не наш тип..continue;//.. то переступим ордер
Modify=false;// Пока не назначен к модифи
Price =Mas_Ord_New[i][1];// Цена открытия ордера
SL =Mas_Ord_New[i][2];// Значение StopLoss ордера
TP =Mas_Ord_New[i][3];// Значение TakeProft ордера
Ticket=Mas_Ord_New[i][4];// Номер ордера//if (TralingStop<Level_new) // Если меньше допустимого..// TralingStop=Level_new; // .. то допустимый// TS=TralingStop*Point; // То же в относит.знач.цены//--------------------------------------------------------- 4 --// текущее значение ATR-1, ATR-2
curr_atr1 =iATR(Symbol(),0,ATRPeriod_1,0);
curr_atr2 =iATR(Symbol(),0,ATRPeriod_2,0);// большее из значений
best_atr =MathMax(curr_atr1,curr_atr2);// после умножения на множитель
atrXmul = best_atr * Mul;switch(Tip)// Переход на тип ордера{case0:// Ордер Buy// откладываем от текущего курса новый стоплосс// модифицируем его
SL=Bid-atrXmul;// Новый его StopLoss
Modify=true;// Назначен к модифи.break;// Выход из switchcase1:// Ордер Sell// откладываем от текущего курса новый стоплосс// модифицируем его
SL=Ask+atrXmul;// Новый его StopLoss
Modify=true;// Назначен к модифи.}// Конец switchif(Modify==false)// Если его не надо модифи..continue;// ..то идём по циклу дальшеbool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его!//--------------------------------------------------------- 5 --if(Ans==false)// Не получилось {// Поинтересуемся ошибками:if(Errors(GetLastError())==false)// Если ошибка непреодолимаяreturn;// .. то уходим.
i--;// Понижение счётчика}
Terminal();// Функция учёта ордеров
Events();// Отслеживание событий}return;// Выход из пользов. функции}//--------------------------------------------------------------- 6 --
Получается, что трейлинг-стоп передвигается как в сторону повышения, так и в сторону понижения. Я понимаю, что трейлинг-стоп движется только в
одну сторону за трендом (если - бай - то вверх, если - селл - то вниз). А здесь получается, что открывается позиция (бай), устанавливается стоп-лосс, если
цена идет в сторону стоп-лосса, то он посредством данной функции тр-стопа может отодвигаться на большее расстояние от первоначального размещения...
Допустим был стоп-лосс при открытии бай: 1,42345, цена пошла вниз - стоп-лосс стал 1,42000.
Или если цена идет вверх при "бай", тр-стоп также на расстоянии АТР*коэфф. движется вверх, цена развернулась и пошла вниз - тр-стоп также на расстоянии АТР*коэфф. пошел вниз, пока случайным сильным движением цены не будет выбит.
Если я правильно понимаю, то подобные движения трейлинг-стопа противоречат его определению - лоси не увеличиваются от первоначальных на сделке и
трейлинг стоп идет строго по тренду за ценой: если "бай" - то строго вверх, если "селл" - то строго вниз... Т.е. ф-ия изначально была не доработана, тре-
буется правка кода... Я все правильно по этому вопросу понимаю? Будет время проконсультируйте...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Скачал библиотеку трейлинг - стопов TrailingFuncLib.mq4 с библиотеки кодэбазе.
Отредактировал стандартный tral_stop.mqh инклюда учебника трейлингом из этой библиотеки по 2-м ATR.
Получается, что трейлинг-стоп передвигается как в сторону повышения, так и в сторону понижения. Я понимаю, что трейлинг-стоп движется только в
одну сторону за трендом (если - бай - то вверх, если - селл - то вниз). А здесь получается, что открывается позиция (бай), устанавливается стоп-лосс, если
цена идет в сторону стоп-лосса, то он посредством данной функции тр-стопа может отодвигаться на большее расстояние от первоначального размещения...
Допустим был стоп-лосс при открытии бай: 1,42345, цена пошла вниз - стоп-лосс стал 1,42000.
Или если цена идет вверх при "бай", тр-стоп также на расстоянии АТР*коэфф. движется вверх, цена развернулась и пошла вниз - тр-стоп также на расстоянии АТР*коэфф. пошел вниз, пока случайным сильным движением цены не будет выбит.
Если я правильно понимаю, то подобные движения трейлинг-стопа противоречат его определению - лоси не увеличиваются от первоначальных на сделке и
трейлинг стоп идет строго по тренду за ценой: если "бай" - то строго вверх, если "селл" - то строго вниз... Т.е. ф-ия изначально была не доработана, тре-
буется правка кода... Я все правильно по этому вопросу понимаю? Будет время проконсультируйте...
Библиотеку трейлингов прилагаю.