"Плавающая" ошибка PositionSelect() - страница 5

 

prostotrader:

Так понятней "профессор"?

Гы-гы. Вы вообще взрослый человек или как?

Что хотели показать на скриншоте?

Давайте по пунктам Вашего лога.

Первым идёт:

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    History done. Ticket: 50942179

Во втором пункте что Вы видите?

Не поленюсь и напишу:

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    Volume initial: 1.0. Volume current: 0.0 Deals done: 0.0 

 

Но Вы снова пытаетесь что-то (ордера) анализировать, при этом напрочь не учитываете, что спусковой крючок, который разрешает Вам анализировать объём позиции - это транзакция с типом TRADE_TRANSACTION_DEAL_ADD - добавление сделки в историю.

При этом Вы настойчиво, в который раз, при TRADE_TRANSACTION_DEAL_ADD не проверяете объём позиции.

Вот Ваш код, из сообщения Выше: 

      case TRADE_TRANSACTION_DEAL_ADD:
        if((order_ticket!=0) && (trans.order==order_ticket))
        {
         Print("Deal done. Ticket: ",trans.order);
        }
      break; 
 
Изменение позиции в терминале происходит строго в результате получения сделочной транзакции, ....

Неужели не видно, что позиция (во втором случае) изменилась ДО ПРИХОДА сделочной транзакции? 

ТАКОГО НЕ ДОЛЖНО БЫТЬ, потому что Алексндр писал:

Изменение позиции в терминале происходит СТРОГО в результате получения сделочной транзакции, ....
 

СТРОГО!

СТРОГО!

СТРОГО!

СТРОГО! 

 
prostotrader:

Неужели не видно, что позиция (во втором случае) изменилать ДО ПРИХОДА сделочной транзакции? 

ТАКОГО НЕ ДОЛЖНО БЫТЬ, потому что Алексндр писал:

Ах вот оно что... Точнее скажет только автор :-))

Но, имхо, к этим словам не стоит придираться. Сделочная транзакция уже пришла, просто она не сразу обработалась в OnTradeTransaction().

Прикольно, что Вы показываете на сделочную транзакцию, тогда как в Вашем коде там case  TRADE_TRANSACTION_HISTORY_ADD.

Имхо, тут важно её обрабатывать, изучая сделки - case TRADE_TRANSACTION_DEAL_ADD.

 
Dennis Kirichenko:

Ах вот оно что... Точнее скажет только автор :-))

Но, имхо, к этим словам не стоит придираться. Сделочная транзакция уже пришла, просто она не сразу обработалась в OnTradeTransaction().

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

Спасибо Дениска!

А я то лох, даже и не знаю что такое  OnTradeTransaction 

 
prostotrader:

Спасибо Дениска!

А я то лох, даже и не знаю что такое  OnTradeTransaction 

На здоровье! Но Ваша ирония напрасна. Вам втирают уже несколько раз подряд, что именно неправильно в коде.

Вы хотя бы Владимиру спасибо сказали, он первый указал правильное направление  ;-)

 
Dennis Kirichenko:

На здоровье! Но Ваша ирония напрасна. Вам втирают уже несколько раз подряд, что именно неправильно в коде.

Вы хотя бы Владимиру спасибо сказали, он первый указал правильное направление  ;-)

Прочтите "на досуге":

https://www.mql5.com/ru/forum/93357#comment_2707875 

 

Karputov Vladimir

А нельзя под моим аваторам циферьки умножить на 1000? 

И ещё...

Если Вы не обратили внимания, то я скажу, что во всех примерах ордера выставляются

ассинхронно, поэтому архиважно их контролировать! 

 
prostotrader:

Karputov Vladimir

А нельзя под моим аваторам циферьки умержить на 1000? 

Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).

 

Добавлено.

Забудьте про ордера, пока не прошла транзакция с типом  TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО.

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