「フローティング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 イベントをリッスンするowlの例があります。

実行してみて、トレード操作のログをご覧ください。疑問は解消されるはずです。

ありがとうございました。

要点を知りたいんです。

直してくれますか?

 
Karputov Vladimir:

その方式は次の通りです。

  1. 保留中の注文を 設定したら、その注文の数量をm_volume変数に設定する
  2. TRADE_TRANSACTION_DEAL_ADD を受信したら、ポジションのボリュームを m_volume 変数と比較し、最初の注文がまだそこにぶら下がっているかどうかをチェックします(多分それは部分的に実行され、ボリュームを手動で追加したのでしょう)。

カルプトフ・ウラジーミル タンバリンの踊り方......(だいたい)知っているんだけど......。
 

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を待って、ポジション情報を取得します。それだけです。

すでにお話したとおりです。

タンバリンの踊り方......だいたい知っています。