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

 
Karputov Vladimir:

Я выше говорил - не увлекайтесь ордерами: смотрите на сделки. Вот короткий код, который показывает КОГДА изменяется объём позиции и какой тип транзакции при этом:

И вот принты, при частичном закрытии:

 

Хорошо видно, что как только прошло события с типом торговой транзакции TRADE_TRANSACTION_DEAL_ADD - всё, данные позиции в терминале обновлены. 

Я просто в шоке!

Вы специально это делаете или вообще не читаете, что я пишу?

 
prostotrader:

Я просто в шоке!

Вы специально это делаете или вообще не читаете, что я пишу?

Мне кажется, это Вы не хотите понять, что ордер - это ещё не всё. А вот запись о сделке в историю - это сигнал программисту о том, что данные о позиции уже изменены.
 
Karputov Vladimir:
Мне кажется, это Вы не хотите понять, что ордер - это ещё не всё. А вот запись о сделке в историю - это сигнал программисту о том, что данные о позиции уже изменены.
Всё ясно, спасибо.
 
prostotrader:
Всё ясно, спасибо.

Ордер - это блоха, может записаться, может нет. Над ордером стоит сделка. Над сделкой - позиция. Изменения в данных позиции проходят после записи сделки в историю. 

 

То, что Вы иногда ловите - ну просто заслуга быстрых компьютеров и интернета. Если хотите - случайность. 

 

Добавлено: хотя будет интересно узнать ответ на Вашу заявку из СервисДеска. 

 
prostotrader:

1. >Не зная точный алгоритм (ТО, ЧТО нужно от программы), сложно оценивать правильность его реализации...

Думал, что не сложно понять, что делает программа, ну если не понятно, то

Экперт открывает позизию на рынке ФОРТС объёмом 2 контракта, если позизия открыта, то она частично закрывается объёмом в 1 контракт,

затем, позиция закрывается полностью. И так несколько раз, пока счётчик tr_cnt<50  

2. Вы можете "крутить" PositionSelect() хоть миллион раз - это ничего не изменит, потому что

пока вы в цикле, событие TRADE_TRANSACTION_DEAL_ADD не поступит, а значит терминал не обновит

информацию о позициию 

Таки да! Может цель программы и правильно обозначена, но средства достижения - фуфловые, пардон за французский...

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

Только сумасшедший может такую программу запустить на реал...

 
Dennis Kirichenko:

Таки да! Может цель программы и правильно обозначена, но средства достижения - фуфловые, пардон за французский...

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

Только сумасшедший может такую программу запустить на реал...

Понятно "профессор", но речь идёт не о моём сумашествии, а о наличие ошибки в термиеале.

Кстати, вот ещё одна обнаружилась (и она после СДЕЛКИ!!!!!!!!!!):

2016.08.03 17:25:57.693 Test_Pos_selct (GAZR-9.16,M1)   OpenPosition: Order sent successfully for open position volume = 2.0
2016.08.03 17:25:57.703 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order resived #50278099
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099 done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 1
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099 add to history.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099 not found.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099 done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position exists
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position volume: 2
 
prostotrader:

Понятно "профессор", но речь идёт не о моём сумашествии, а о наличие ошибки в термиеале.

Кстати, вот ещё одна обнаружилась (и она после СДЕЛКИ!!!!!!!!!!):

Приведите, пожалуйста,  свой код к моему - у Вас не принтуется тип торговой транзакции. Уберите проверку ордеров - они здесь не нужны. 
 

Ещё раз, для "кандидатов", "докторов", "профессоров" и "академиков".

Любое событие, приходящее в OnTradeTransaction() может потерятся 

Поэтому я считаю ошибкой, что после прихода значащаго события TRADE_TRANSACTION_HISTORY_ADD

данные в терминало о позиции не обновляются! 

 
Karputov Vladimir:
Приведите, пожалуйста,  свой код к моему - у Вас не принтуется тип торговой транзакции. Уберите проверку ордеров - они здесь не нужны. 
Спасибо, за настойчивость.
 
prostotrader:

Понятно "профессор", но речь идёт не о моём сумашествии, а о наличие ошибки в термиеале.

Кстати, вот ещё одна обнаружилась (и она после СДЕЛКИ!!!!!!!!!!):

Ошибся, не заметил что было 2 сделки.
Причина обращения: