void TrailingUdavka(int ticket,int trl_dist_1,int level_1,int trl_dist_2,int level_2,int trl_dist_3){double newstop =0;// новый стоплоссdouble trldist;// расстояние трейлинга (в зависимости от "пройденного" может = trl_dist_1, trl_dist_2 или trl_dist_3)// проверяем переданные значенияif((trl_dist_1<MarketInfo(Symbol(),MODE_STOPLEVEL))||(trl_dist_2<MarketInfo(Symbol(),MODE_STOPLEVEL))||(trl_dist_3<MarketInfo(Symbol(),MODE_STOPLEVEL))||(level_1<=trl_dist_1)||(level_2<=trl_dist_1)||(level_2<=level_1)||(ticket==0)||(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))){Print("Трейлинг функцией TrailingUdavka() невозможен из-за некорректности значений переданных ей аргументов.");return(0);}// если длинная позиция (OP_BUY)if(OrderType()==OP_BUY){// если профит <=trl_dist_1, то trldist=trl_dist_1, если профит>trl_dist_1 && профит<=level_1*Point ...if((Bid-OrderOpenPrice())<=level_1*Point) trldist = trl_dist_1;if(((Bid-OrderOpenPrice())>level_1*Point)&&((Bid-OrderOpenPrice())<=level_2*Point)) trldist = trl_dist_2;if((Bid-OrderOpenPrice())>level_2*Point) trldist = trl_dist_3;// если стоплосс = 0 или меньше курса открытия, то если тек.цена (Bid) больше/равна дистанции курс_открытия+расст.трейлингаif((OrderStopLoss()==0)||(OrderStopLoss()<OrderOpenPrice())){if(Bid>(OrderOpenPrice()+ trldist*Point))
newstop =Bid- trldist*Point;}// иначе: если текущая цена (Bid) больше/равна дистанции текущий_стоплосс+расстояние трейлинга, else{if(Bid>(OrderStopLoss()+ trldist*Point))
newstop =Bid- trldist*Point;}// модифицируем стоплоссif(newstop>OrderStopLoss())OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration());}// если короткая позиция (OP_SELL)if(OrderType()==OP_SELL){// если профит <=trl_dist_1, то trldist=trl_dist_1, если профит>trl_dist_1 && профит<=level_1*Point ...if((OrderOpenPrice()-(Ask+MarketInfo(Symbol(),MODE_SPREAD)*Point))<=level_1*Point) trldist = trl_dist_1;if(((OrderOpenPrice()-(Ask+MarketInfo(Symbol(),MODE_SPREAD)*Point))>level_1*Point)&&((OrderOpenPrice()-(Ask+MarketInfo(Symbol(),MODE_SPREAD)*Point))<=level_2*Point)) trldist = trl_dist_2;if((OrderOpenPrice()-(Ask+MarketInfo(Symbol(),MODE_SPREAD)*Point))>level_2*Point) trldist = trl_dist_3;// если стоплосс = 0 или меньше курса открытия, то если тек.цена (Ask) больше/равна дистанции курс_открытия+расст.трейлингаif((OrderStopLoss()==0)||(OrderStopLoss()>OrderOpenPrice())){if(Ask<(OrderOpenPrice()-(trldist +MarketInfo(Symbol(),MODE_SPREAD))*Point))
newstop =Ask+ trldist*Point;}// иначе: если текущая цена (Bid) больше/равна дистанции текущий_стоплосс+расстояние трейлинга, else{if(Ask<(OrderStopLoss()-(trldist +MarketInfo(Symbol(),MODE_SPREAD))*Point))
newstop =Ask+ trldist*Point;}// модифицируем стоплоссif(newstop>0){if((OrderStopLoss()==0)||(OrderStopLoss()>OrderOpenPrice()))OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration());else{if(newstop<OrderStopLoss())OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration());}}}}
Я уже говорил, что предпочитаю давать прибыли расти и резать убытки, поэтому к трейлингам отношусь осторожно. Удавка IMHO не лучший способ, но кому-то она наверное понравится.
Я когда дойду до необходимости трейлинга буду в первую очередь делать это по фракталам и в дополнение просто закрывать с рынка. И еще уважаю одну мудрость, если цена долгое время не идет в нужную сторону, она обязательно пойдет против Вас!! Удачи всем и профитов!!! P.S. Casper повнимательнее, помни про "эффект сборки" и о "чайниках"
За Два прошедших дня этой недели полноценно на демо тестировать не получалось ( пятый знак Альпари тому "виной"))) Сегодня в полночь поставил исправленное и дополненное ПО по девяти инструментам. По тестам эти два дня прошли лучше, чем прошлая неделя. Эквити $750. Лидеры Евро +$354 Кабель +$257 Франк (что удивляет) +$176 В минусе йена -$90 еврйена -$162 и канадец чуть-чуть(что привычно) -$15 Остальные : киви +$89, фунтйена +$77 и EURGBP +$59
Я уже говорил, что предпочитаю давать прибыли расти и резать убытки, поэтому к трейлингам отношусь осторожно. Удавка IMHO не лучший способ, но кому-то она наверное понравится.
Я когда дойду до необходимости трейлинга буду в первую очередь делать это по фракталам и в дополнение просто закрывать с рынка. И еще уважаю одну мудрость, если цена долгое время не идет в нужную сторону, она обязательно пойдет против Вас!! Удачи всем и профитов!!! P.S. Casper повнимательнее, помни про "эффект сборки" и о "чайниках"
Чем дальше уходит цена, тем выше возможность отката. И прибыль терять не стоит. Я успел прогнать по евройене и по фунтойене при сетах за прошлую неделю. На обоих парах выше прибыль и ниже просадка.
ЧТо касается вызова - согласен. Ошибся. Там еще и условие поменять надо. Иначе он ну уж очень большой шаг изначально делает. Как-то так наверное
Лениво сейчас переделывать блок. Убил соответсвующие if-ы методом указания || true. Опять таки вернуть легко будет назад..
Что касается "эффекта сборки" и чайника. Я раньше достаточно серьезно программил на делфи C++ и C#. Но это было лет 5-6 назад наверное. Так что тоже могу портачить, навык к сожалению теряется. Поэтому и выкладываю код.
Навесил трал "удавка". По результатам и сетам на прошлую неделю результаты неплохи. Уменьается просадка. Растет профит.
Тестируйте...
Исправление кода
Сама удавка
---------------
Идея не плохая, еще бы работала :-)
Casper исправь плз здесь
TrailingUdavka(OrderTicket(), sl, sl, sl+sl/2, sl/2, sl/4);}}
хотя бы так или на свое усмотрение
TrailingUdavka(OrderTicket(), sl, sl+sl/2, sl/2, 2*sl, sl/4);}}
Я уже говорил, что предпочитаю давать прибыли расти и резать убытки, поэтому к трейлингам отношусь осторожно.
Удавка IMHO не лучший способ, но кому-то она наверное понравится.
Я когда дойду до необходимости трейлинга буду в первую очередь делать это по фракталам и в дополнение просто закрывать с рынка.
И еще уважаю одну мудрость, если цена долгое время не идет в нужную сторону, она обязательно пойдет против Вас!!
Удачи всем и профитов!!!
P.S.
Casper повнимательнее, помни про "эффект сборки" и о "чайниках"
По тестам эти два дня прошли лучше, чем прошлая неделя. Эквити $750.
Лидеры Евро +$354 Кабель +$257 Франк (что удивляет) +$176 В минусе йена -$90 еврйена -$162 и канадец чуть-чуть(что привычно) -$15 Остальные : киви +$89, фунтйена +$77 и EURGBP +$59
Идея не плохая, еще бы работала :-)
Casper исправь плз здесь
TrailingUdavka(OrderTicket(), sl, sl, sl+sl/2, sl/2, sl/4);}}
хотя бы так или на свое усмотрение
TrailingUdavka(OrderTicket(), sl, sl+sl/2, sl/2, 2*sl, sl/4);}}
Я уже говорил, что предпочитаю давать прибыли расти и резать убытки, поэтому к трейлингам отношусь осторожно.
Удавка IMHO не лучший способ, но кому-то она наверное понравится.
Я когда дойду до необходимости трейлинга буду в первую очередь делать это по фракталам и в дополнение просто закрывать с рынка.
И еще уважаю одну мудрость, если цена долгое время не идет в нужную сторону, она обязательно пойдет против Вас!!
Удачи всем и профитов!!!
P.S.
Casper повнимательнее, помни про "эффект сборки" и о "чайниках"
Чем дальше уходит цена, тем выше возможность отката. И прибыль терять не стоит. Я успел прогнать по евройене и по фунтойене при сетах за прошлую неделю. На обоих парах выше прибыль и ниже просадка.
ЧТо касается вызова - согласен. Ошибся. Там еще и условие поменять надо. Иначе он ну уж очень большой шаг изначально делает. Как-то так наверное
Лениво сейчас переделывать блок. Убил соответсвующие if-ы методом указания || true. Опять таки вернуть легко будет назад..
Что касается "эффекта сборки" и чайника. Я раньше достаточно серьезно программил на делфи C++ и C#. Но это было лет 5-6 назад наверное. Так что тоже могу портачить, навык к сожалению теряется. Поэтому и выкладываю код.
Опять таки форум разработчиков...
По отчётам похоже что инструмент в умелых руках автора РАБОТАЕТ.
Может пора на реал или хотя бы микро-реал?
По отчётам похоже что инструмент в умелых руках автора РАБОТАЕТ.
Может пора на реал или хотя бы микро-реал?
У меня на реале центовом стоит...
У меня на реале центовом стоит...
Можно стейт приаттачить?
По отчётам похоже что инструмент в умелых руках автора РАБОТАЕТ.
Может пора на реал или хотя бы микро-реал?
Не торопитесь!!!
Советник не будет нормально работать на реале, если брокер не дремлет.
Или хотя бы у Вас должна быть возможность постоянного контроля за терминалом.
Советник не умеет работать с реквотами и т.п.
Он не умеет проверять состояние и разделять торговые потоки если ставить много инструментов.
Не хватает еще одного флага-запрета при работе во время выхода новостей и резких спекулятивных колебаний,
и запрет торговли в том же направлении на одном баре.
Нет защиты от сбоев и не проверяется правильность входных параметров.
У меня на демо было пару раз сбрасывались входные параметры.
Что это - шутки брокера - терминал у меня от Альпари, или просто глюки.
Да еще кое-чего не хватает.