"플로팅" PositionSelect() 오류 - 페이지 7

 
prostotrader :
예, 주문과 수량에 관계없이

작업 계획은 다음과 같습니다.

  1. 보류 중인 주문 을 하고 변수 m_volume에 주문량을 기록했습니다.
  2. TRADE_TRANSACTION_DEAL_ADD가 수신되면 위치 볼륨을 m_volume 변수와 비교하고 원래 주문이 여전히 매달려 있는지 확인합니다(부분 실행일 수 있지만 수동으로 볼륨을 추가했을 수 있음).

 
prostotrader :

여기요!

상황은 다음 MT5, 빌드 1375입니다.

로봇은 작업에서 선물을 거래할 때 OrderSendAsync() 함수를 사용합니다.

2개의 계약 볼륨이 있는 열린 포지션이 있다고 가정해 보겠습니다.

개발자에게 오류가 있음을 보여주기 위해 로깅을 작성하는 방법은 무엇입니까?

MOEX 모스크바 거래소를 위한 거래 로봇을 만들 때 시작해야 할 기사에는 TradeTransaction 이벤트를 수신하는 고문의 예가 있습니다.

거래 작업을 수행하는 동안 실행하고 로그를 살펴보십시오. 질문은 사라져야 합니다.

이 "리스너"가 작동하는 방식의 예:

 2016.06 . 09 14 : 51 : 19.763 TradeTransactionListener (Si- 6.16 ,M15)  LAST PING= 14 ms
Покупка
2016.06 . 09 14 : 51 : 24.856 TradeTransactionListener (Si- 6.16 ,M15)   1 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.856 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_ADD order # 49118594 ORDER_TYPE_BUY ORDER_STATE_STARTED    
2016.06 . 09 14 : 51 : 24.859 TradeTransactionListener (Si- 6.16 ,M15)   2 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.859 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_REQUEST
2016.06 . 09 14 : 51 : 24.859 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeResult : order # 49118594 retcode= TRADE_RETCODE_PLACED 
2016.06 . 09 14 : 51 : 24.859 TradeTransactionListener (Si- 6.16 ,M15)   3 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.859 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE order # 49118594 ORDER_TYPE_BUY ORDER_STATE_REQUEST_ADD    
2016.06 . 09 14 : 51 : 24.881 TradeTransactionListener (Si- 6.16 ,M15)   4 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.881 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE order # 49118594 ORDER_TYPE_BUY ORDER_STATE_PLACED    
2016.06 . 09 14 : 51 : 24.881 TradeTransactionListener (Si- 6.16 ,M15)   5 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.881 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_DELETE order # 49118594 ORDER_TYPE_BUY ORDER_STATE_PLACED    
2016.06 . 09 14 : 51 : 24.884 TradeTransactionListener (Si- 6.16 ,M15)   6 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.884 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_HISTORY_ADD order # 49118594 ORDER_TYPE_BUY Si- 6.16 ORDER_STATE_FILLED    (MOEX ticket= 3377179723 )
2016.06 . 09 14 : 51 : 24.884 TradeTransactionListener (Si- 6.16 ,M15)   7 . OnTradeTransaction
2016.06 . 09 14 : 51 : 24.885 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_DEAL_ADD deal # 6945344 DEAL_TYPE_BUY Si- 6.16 1.00 lot   (MOEX deal= 185290434 )
Установка SL/TP
2016.06 . 09 14 : 51 : 50.872 TradeTransactionListener (Si- 6.16 ,M15)   1 . OnTradeTransaction
2016.06 . 09 14 : 51 : 50.872 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_REQUEST
2016.06 . 09 14 : 51 : 50.872 TradeTransactionListener (Si- 6.16 ,M15)   2 . OnTradeTransaction
2016.06 . 09 14 : 51 : 50.872 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : Position   # 0 Si- 6.16 modified: SL= 62000.00000 TP= 67000.00000
Закрытие позиции (продажа)
2016.06 . 09 14 : 52 : 24.063 TradeTransactionListener (Si- 6.16 ,M15)   1 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.063 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_ADD order # 49118750 ORDER_TYPE_SELL ORDER_STATE_STARTED    
2016.06 . 09 14 : 52 : 24.067 TradeTransactionListener (Si- 6.16 ,M15)   2 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.067 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_REQUEST
2016.06 . 09 14 : 52 : 24.067 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeResult : order # 49118750 retcode= TRADE_RETCODE_PLACED 
2016.06 . 09 14 : 52 : 24.067 TradeTransactionListener (Si- 6.16 ,M15)   3 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.067 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE order # 49118750 ORDER_TYPE_SELL ORDER_STATE_REQUEST_ADD    
2016.06 . 09 14 : 52 : 24.071 TradeTransactionListener (Si- 6.16 ,M15)   4 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.071 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE order # 49118750 ORDER_TYPE_SELL ORDER_STATE_PLACED    
2016.06 . 09 14 : 52 : 24.073 TradeTransactionListener (Si- 6.16 ,M15)   5 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.073 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_DEAL_ADD deal # 6945378 DEAL_TYPE_SELL Si- 6.16 1.00 lot   (MOEX deal= 185290646 )
2016.06 . 09 14 : 52 : 24.075 TradeTransactionListener (Si- 6.16 ,M15)   6 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.075 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_ORDER_DELETE order # 49118750 ORDER_TYPE_SELL ORDER_STATE_PLACED    
2016.06 . 09 14 : 52 : 24.077 TradeTransactionListener (Si- 6.16 ,M15)   7 . OnTradeTransaction
2016.06 . 09 14 : 52 : 24.077 TradeTransactionListener (Si- 6.16 ,M15)   MqlTradeTransaction : TRADE_TRANSACTION_HISTORY_ADD order # 49118750 ORDER_TYPE_SELL Si- 6.16 ORDER_STATE_FILLED    (MOEX ticket= 3377182821 )

 
Rashid Umarov :

MOEX 모스크바 거래소를 위한 거래 로봇을 만들 때 시작해야 할 기사에는 TradeTransaction 이벤트를 수신하는 고문의 예가 있습니다.

거래 작업을 수행하는 동안 실행하고 로그를 살펴보십시오. 질문은 사라져야 합니다.

정말 감사합니다.

나는 진짜 대답을 했으면 좋겠어.

실수를 고칠 것인가?

 
Karputov Vladimir :

작업 계획은 다음과 같습니다.

  1. 보류 중인 주문 을 하고 변수 m_volume에 주문량을 기록했습니다.
  2. TRADE_TRANSACTION_DEAL_ADD가 도착하면 포지션 볼륨을 m_volume 변수와 비교하고 원래 주문이 여전히 정지되어 있는지 확인하십시오(부분 실행일 수 있지만 수동으로 볼륨을 추가했을 수 있음).

Karputov Vladimir I (대략) 탬버린으로 춤추는 법을 알고 있습니다....
 

prostotrader :

나는 진짜 대답을 했으면 좋겠어.

실수를 고칠 것인가?

다시 끼어들어서 정말 죄송합니다... 하지만 분명히 말씀드리겠습니다. 무슨 문제가 있습니까?
 
Dennis Kirichenko :
다시 끼어들어서 정말 죄송합니다... 하지만 분명히 말씀드리겠습니다. 무슨 문제가 있습니까?
나도 똑같이 쓰고 싶었다.
 
prostotrader :

정말 감사합니다.

나는 진짜 대답을 했으면 좋겠어.

실수를 고칠 것인가?

따라서 예가 필요하지 않습니다. 거래 주문 실행의 모든 단계가 명확하게 표시됩니다. 당신은 쳐다보지도 않았습니다:

 MqlTradeTransaction : TRADE_TRANSACTION_DEAL_ADD deal # 6945344 DEAL_TYPE_BUY Si- 6.16 1.00 lot   (MOEX deal= 185290434 )
 
Rashid Umarov :

따라서 예가 필요하지 않습니다. 거래 주문 실행의 모든 단계가 명확하게 표시됩니다. 당신은 쳐다보지도 않았습니다:

당신은 그것을 보지도 않았다!

MQ Alexander 2016.08 . 03 18 : 00 #     EN
Что касается ордеров, позиций и сделок.

Как написано в хелпе - последовательность поступления транзакций не гарантирована - транзакция переноса ордера в историю может быть получена раньше, чем транзакция сделки.
Изменение позиции в терминале происходит строго в результате получения сделочной транзакции , соответственно её получение является гарантией того что позиция поменялась.
Получение транзакции переноса ордера в историю, гарантирует только то, что ордер перестал быть активным (открытым) и был перенесён в историю ордеров.



Кроме того, транзакции могут потеряться при доставке от сервера к терминалу.
Что касается этой фразы. 

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

 
prostotrader :

당신은 그것을 보지도 않았다!

TRADE_TRANSACTION_DEAL_ADD는 당신의 모든 것입니다. 이 이벤트가 수신될 때까지 위치 정보가 거짓일 수 있습니다. 다른 모든 것은 작동 방식에 대한 귀하의 아이디어일 뿐입니다. 즉, 위시리스트.

TRADE_TRANSACTION_DEAL_ADD를 기다린 다음 위치에 대한 정보를 얻으십시오. 그게 다야

 
Karputov Vladimir :

TRADE_TRANSACTION_DEAL_ADD는 당신의 모든 것입니다. 이 이벤트가 수신될 때까지 위치 정보가 거짓일 수 있습니다. 다른 모든 것은 작동 방식에 대한 귀하의 아이디어일 뿐입니다. 즉, 위시리스트.

TRADE_TRANSACTION_DEAL_ADD를 기다린 다음 위치에 대한 정보를 얻으십시오. 그게 다야

나는 이미 당신에게 말했다 :

나는 (대략) 탬버린으로 춤추는 법을 안다.