Советники: Лентяй

 

Лентяй:

Советник выставляет Take Profit и Stop Loss для всех ордеров, у которых они не заполнены, и тралит Stop Loss.

Автор: Anton Yakovlev

 
А где можно увидеть не только более подробное описание, но и НАСТРОЙКУ самого скрипта?
 

Я уверен, что есть смысл немного ДОРАБОТАТЬ данный СКРИПТ с таким расчетом, чтобы он мог не только устанавливать  Стоп-лосей и Профиты, но и выставлять ПОЛНОЦЕННЫЕ ОРДЕРА со всеми предварительными настройками в ОДИН  КЛИК!

Это очень удобно и практично, особенно тогда, когда рынок начал неожиданно заваливаться и чтобы успеть в отходящий поезд нужно успеть быстро открыть нужные ордера. В структуру этого СКРИПТА нужно добавить установку и настройку всех рыночных и ОТЛОЖЕННЫХ ордеров со всеми Тейк-профитами, Стоп-лосями, Трейлинг-Стопами, БАЙ-Стопами, СЕЛЛ-Стопами, БАЙ-Лимитом, СЕЛЛ-Лимитом. И это был бы  ИДЕАЛЬНЫЙ СКРИПТ для торговли на НОВОСТЯХ!

 
VAL8GRYS:

Я уверен, что есть смысл немного ДОРАБОТАТЬ данный СКРИПТ с таким расчетом, чтобы он мог не только устанавливать  Стоп-лосей и Профиты, но и выставлять ПОЛНОЦЕННЫЕ ОРДЕРА со всеми предварительными настройками в ОДИН  КЛИК!

Это очень удобно и практично, особенно тогда, когда рынок начал неожиданно заваливаться и чтобы успеть в отходящий поезд нужно успеть быстро открыть нужные ордера. В структуру этого СКРИПТА нужно добавить установку и настройку всех рыночных и ОТЛОЖЕННЫХ ордеров со всеми Тейк-профитами, Стоп-лосями, Трейлинг-Стопами, БАЙ-Стопами, СЕЛЛ-Стопами, БАЙ-Лимитом, СЕЛЛ-Лимитом. И это был бы  ИДЕАЛЬНЫЙ СКРИПТ для торговли на НОВОСТЯХ!

да-да идея классная, я тоже думаю что стоит доработать - пусть еще пригрывает похоронный марш, если сольет весь баланс, либо день победы, если весь день в прифите. ну и встроенный приферанс не момешал бы.

вообще люблю такие коментарии. всегда после них фигню написать можно. )

 

ну а если по делу 2автор кода: чего в один цикл никак? 

 
Не ставиться на график. Вообще ни накакой.
 
pavard:

да-да идея классная, я тоже думаю что стоит доработать - пусть еще пригрывает похоронный марш, если сольет весь баланс, либо день победы, если весь день в прифите. ну и встроенный приферанс не момешал бы.

вообще люблю такие коментарии. всегда после них фигню написать можно. )

 

ну а если по делу 2автор кода: чего в один цикл никак? 

можно и в один, но так код читается и отлаживается проще. Если когда придется код усложнять и расширять функционал, в отладке будет проще. Пусть это будет мой подход к написанию программы, выработанный годами...
 

Хорошая и простая идея, не смог пройти мимо поэтому предложу свои пару копеек

1 в функции Инит расположено открытие ордера, не думаю что людям понравитья поставить модификатор и сразу получить открытый ордер 

int OnInit()
  {
   int ticket=OrderSend(Symbol(),OP_SELL,0.01,Ask,3,0,0,"My order",16384,0,clrGreen);
  return(INIT_SUCCEEDED);
  }

 наверно тестировали и не удалили, а местные модераторы пропустили...

2

   for( i=0;i<OrdersTotal();i++)    //  проверка делается в положительную сторону, правильнее и надежнее в отрицательную
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
        {
        if(OrderTakeProfit()==0 || OrderStopLoss()==0){
            if(OrderType()==OP_BUY ) {
                bool res=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-sl*Point,Bid+tp*Point,0,Blue);          //   Нет проверки на результат, что будет если брокер закидает реквотами или советник будет пытаться выставить стопы и профиты по запрещенным ценам ?    
            }
            if(OrderType()==OP_SELL ) {
                bool res=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+sl*Point,Bid-tp*Point,0,Blue);         // Нет нормализации цен в результате этой операции Ask+sl*Point может получиться 6 значное число что вызовет ошибку
            }
        }
     }
   } 

3

for( i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderType()==OP_BUY && OrderStopLoss()< Bid-sl*Point) {     // при таком условии выставленный стоп будет тралиться моментально и будет срабатывать при колебаниях цены лучше так же проводить сравнение относительно цены открытия
           bool res=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-sl*Point,OrderTakeProfit(),0,Blue);
         }
         if(OrderType()==OP_SELL && (OrderStopLoss()> Ask+sl*Point || OrderStopLoss()==0)) {
             bool res=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+sl*Point,OrderTakeProfit(),0,Blue);
         }
      }
   } 
 
VOLDEMAR:

Хорошая и простая идея, не смог пройти мимо поэтому предложу свои пару копеек

1 в функции Инит расположено открытие ордера, не думаю что людям понравитья поставить модификатор и сразу получить открытый ордер 

 наверно тестировали и не удалили, а местные модераторы пропустили...

2

3

Спасибо за ваш вклад, 1 пункт действительно мой косяк... сильно извиняюсь...  в ближайшее время исправлю, никак руки не доходят.

что касается пункта 2, про отрицательную сторону, у меня был только один случай когда это оказалось критично, в остальных случаях если уж и по какой-то причине прервется и цикл не исполнится полностью, что маловероятно, то в следующий проход отработает... про нормализацию если sl и tp целочисленные переменные, то шестого знака не будет, хотя для очистки совести поставить то можно конечно. что касается проверки на результат, если будет ошибка метатрейдер сам напишет код ошибки, я поэтому не делаю повторный вывод ошибок, обычно стараюсь просто недопустить их появления... в данном случае они возможны, и буду исправлять.

пункт 3. учту, тем более есть заявки на улучшение функционала, трейлинга с определенным шагом...

Советник будет модернизироваться, сей час я бы посоветовал воздержаться от реальной торговли и дождаться исправлений найденых недочетов.

 
yakton:

Спасибо за ваш вклад, 1 пункт действительно мой косяк... сильно извиняюсь...  в ближайшее время исправлю, никак руки не доходят.

что касается пункта 2, про отрицательную сторону, у меня был только один случай когда это оказалось критично, в остальных случаях если уж и по какой-то причине прервется и цикл не исполнится полностью, что маловероятно, то в следующий проход отработает... про нормализацию если sl и tp целочисленные переменные, то шестого знака не будет, хотя для очистки совести поставить то можно конечно. что касается проверки на результат, если будет ошибка метатрейдер сам напишет код ошибки, я поэтому не делаю повторный вывод ошибок, обычно стараюсь просто недопустить их появления... в данном случае они возможны, и буду исправлять.

пункт 3. учту, тем более есть заявки на улучшение функционала, трейлинга с определенным шагом...

Советник будет модернизироваться, сей час я бы посоветовал воздержаться от реальной торговли и дождаться исправлений найденых недочетов.

Вы наверно просто не имеете опыта работы с циклами ордеров,дело не  только в прерывании, (хотя в рятли оно будет), дело в другом,  предположим в терминале 85 ордеров, (такое то же часто бывает) и люди которые захотят их Лентяйкой модифицировать могут получить неприятность, цикл в плюс начинает перебор от самого последнего ордера до самого первого по времени, а в это время может появиться новый ордер который не будет обработан вовремя.

Про шестой знак, будет, поверьте будет.... может в тестере и нет а вот на реале обязательно будет. Лучще сразу защититься от подобных проскоков. 

 
VOLDEMAR:

Вы наверно просто не имеете опыта работы с циклами ордеров,дело не  только в прерывании, (хотя в рятли оно будет), дело в другом,  предположим в терминале 85 ордеров, (такое то же часто бывает) и люди которые захотят их Лентяйкой модифицировать могут получить неприятность, цикл в плюс начинает перебор от самого последнего ордера до самого первого по времени, а в это время может появиться новый ордер который не будет обработан вовремя.

Про шестой знак, будет, поверьте будет.... может в тестере и нет а вот на реале обязательно будет. Лучще сразу защититься от подобных проскоков. 

Ок. Принял, доработаю... от меня не убудит, две строчки кода добавить, хотя и не переубедили, если бы это был скрипт, то он мог бы неотработать, и пропустить ордер, а т.к. это советник, то даже если на тик позже отработает ордер, в данном советнике это не принципиально... это становится критично когда открывается серия ордеров, и быстрое движение, чтобы они успели все закрыться разом...
 

Добрый день!

Заметил такой фокус у Лентяя – выставив первоначально стоплосс на обозначенную пользователем величину (1000), он, затем, через некоторое время сбрасывает этот стоплосс до 150. Изменил в настройках Лентяя трейлинг на 1000, после чего руками передвинул стоп опять на 1000, но Лентяй опять все перекинул на 150. И уже не первый раз... Подправьте, пожалуйста.

Причина обращения: