сравнение балансов - страница 2

 
pro_:

Так действительно будет лучше. Четко и красиво. Только вот это верно или опечатка?


LastNOrdersProfit=+OrderProfit(); эквивалентно LastNOrdersProfit=LastNOrdersProfit+OrderProfit(); Это MQL4 так позволяет.

Ну тут еще немного подумал, чуть неправильно я Вам выше выложил. Мне кажется при этом суммарный профит в Вашем случае( коде который я выложил) будет учитываться не двух последних закрытых ордеров, а профит двух более поздних по времени открытых, которые к данному моменту времени уже закрыты). Черт, сам сказал, уже сам не пойму. Потому что перебирая из закрытых ордеров от последних к меньшему, учитываем только время открытия. Следует использовать OrderCloseTime(....), но это приведет к каждый раз к перебиранию ордеров в истории, что замедлит работу советника/индикатора....

 
Да, конечно же, я понял чтО это и зачем, просто сам я использую +=, а не =+. Поэтому и показалось мне опечаткой.
 
Вообщем упростил по максимуму все, чтобы оценить функциональность идеи, и она оказалось как обычно) сливной. Да и тестер от альпов тупит страшно. Выставляю сл-50 тп-100 все норм, далее сл-200 тп-300 и все уже советник в тестере не торгует. еще благодарю ответивших.
 
Не удивительно, потому что решение о направлении следующего трейда никак не должно зависеть от результата предыдущих сделок. Разве что лот вынужденно придется изменить, но это уже ММ.
 
pro_:
Да, конечно же, я понял чтО это и зачем, просто сам я использую +=, а не =+. Поэтому и показалось мне опечаткой.

Правильно будет +=. При втором варианте будет присваивание нового значения а не суммирование. ИМХО, не проверял) Но в документации +=.

 

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

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

 
Jequile:

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

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


Дык нормальный трейлинг стоп и не бегает за ценой по определению...Скажем для лонг никогда не опустится ниже ранее достигнутого максимума...Однако кривой какой-то у Вас трейлинг-стоп. Может у Вас пытается ТП как-нибудь тралить? Но это, по-моему, бесперспективное занятие.
 

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

  void ModifyOrders()
  {


   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY) 
         {
            if ((Ask-OrderOpenPrice())>TrailingStop*Point*2 && (Ask-OrderOpenPrice())<TrailingStop*Point*3)
             {
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+TrailingStop*Point,OrderTakeProfit(),0,Blue);
             }
            if ((Ask-OrderOpenPrice())>TrailingStop*Point*3 && (Ask-OrderOpenPrice())<TrailingStop*Point*4)
             {
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+TrailingStop*Point*2,OrderTakeProfit(),0,Blue);
             }
         

И далее цепочка if=> OrderModify

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