Скачать MetaTrader 5

Вопрос по Symbol() - страница 3

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел хорошего программиста? Ставь адресную заявку!
Ihor Herasko
9036
Ihor Herasko 2014.05.23 16:18  
ClanVi:
Да, но во всех функциях есть проверка OrderSymbol()==Symbol() , так что по логике перебор мог остановится только на символе на котором работает сова

К тому моменту, когда выполнение передается функциям LastSeriesLot и OrderLotFun, проверка на соответствие символа ордера текущему символу уже проведена. После указанных функций советник оперирует другим ордером, а не тем, что был выбран в OrderSelect цикла. Вынесите использование функций LastSeriesLot и OrderLotFun за тело цикла и советник будет работать верно.
ClanVi
58
ClanVi 2014.05.23 16:28  
AlexeyVik:

Не совсем так.

Перебор ордеров, проверка свой/чужой -> свой.

Затем повторный перебор в другой функции, проверка свой/чужой/размер лота ->ничего не найдено... НО ордер уже выбран перед проверкой свой/чужой...

Возврат в функцию уже с другим ордером для работы...

Спасибо за дополнительное объяснение,теперь все еще более понятнее, интересно,а в справке есть информация про этот подводный камень или это сюрприз такой)
Alexey Viktorov
6782
Alexey Viktorov 2014.05.23 18:19  
Никакого сюрприза, ордер выбран... всё, с ним работает вся программа. В справке везде написано что перед ... ордер должен быть выбран функцией OrderSend()
Viktor
228
Viktor 2014.05.23 19:24  
ClanVi:
Спасибо за дополнительное объяснение,теперь все еще более понятнее, интересно,а в справке есть информация про этот подводный камень или это сюрприз такой)

Четыре оператора печати и вы бы четко увидели, где появляется сюрприз ...

 

      if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol() && OrderCloseTime()==0)
       {
        if(OrderType()==OP_BUY)
         {     
PrintFormat("Блок OP_BUY;1; OrderMagicNumber()=%d, Magic=%d, OrderSymbol()=%s, Symbol()=%s", OrderMagicNumber(), Magic, OrderSymbol(), Symbol());
                          OpenPriceOrder  = NormalizeDouble(OrderOpenPrice(),Digits);
PrintFormat("Блок OP_BUY;2; OrderMagicNumber()=%d, Magic=%d, OrderSymbol()=%s, Symbol()=%s", OrderMagicNumber(), Magic, OrderSymbol(), Symbol());
                         Ubitok = NormalizeDouble(LastSeriesloss(),2);
PrintFormat("Блок OP_BUY;3; OrderMagicNumber()=%d, Magic=%d, OrderSymbol()=%s, Symbol()=%s", OrderMagicNumber(), Magic, OrderSymbol(), Symbol());
                        Lot = NormalizeDouble(OrderLotFun(OP_BUY),2);
PrintFormat("Блок OP_BUY;4; OrderMagicNumber()=%d, Magic=%d, OrderSymbol()=%s, Symbol()=%s", OrderMagicNumber(), Magic, OrderSymbol(), Symbol());

          if(Lot!=0)
                         Punkti = MathAbs(Ubitok/Lot)*Point;
          else return;

ClanVi
58
ClanVi 2014.05.23 20:31  
prorab:

Четыре оператора печати и вы бы четко увидели, где появляется сюрприз ...

 

Увидел бы, но я и так понял где это произошло,а вот причину все равно не докумекал бы, спасибо форуму
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий