voidOnTradeTransaction(constMqlTradeTransaction& trans,
constMqlTradeRequest& request,
constMqlTradeResult& result)
{
// Здесь надо поставить фильтр по типу транзакции// По символу и магику// и только если всё совпало, тогда
Count++; Print("Ontrade_test = ",Count);
}
どうも説明するのが苦手なんです。ここで実例を紹介します。以下はそのコードです。
といった具合に。
2 つの Expert Advisor の OnTradeTransaction の応答時間がミリ秒に一致 することがわかります。そこで質問なのですが、「取引」イベントは、あるEAのOnTradeTransactionにまず来て、次に別のEAの次のイベントに来るのでしょうか、それとも何らかの方法ですべてのEAのハンドラーに一度に来るのでしょうか?まあ、プログラミングで言うところのマルチスレッドの並列処理みたいなものですね。すべてが順次行われ、1ミリ秒以内に処理されるだけだと思いますが、念のため質問させていただきました。
どうも説明するのが苦手なんです。ここで実例を紹介します。以下はそのコードです。
void OnTradeTransaction(constMqlTradeTransaction& trans,
const MqlTradeRequest& request,
コンスタントMqlTradeResult& result)
{
カウント++。
Print("Ontrade_test = ",Count);
}
ハンドラは2つのExpert Advisorに実装されているため、1つのトレードが実行されると2つのExpert Advisorで複数回実行されます。コードが出力されます。
18:31:06.495 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 1
18:31:06.495 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 1
18:31:06.497 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 2
18:31:06.497 ontrade_trans_functions2 (MXI-12.17,M5) Ontrade_test = 2
18:31:06.498 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 3
18:31:06.498 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 3
18:31:06.500 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 4
18:31:06.500 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 4 ...
といった具合に。
2 つの Expert Advisor の OnTradeTransaction の 応答時間がミリ秒単位で同じ であることがわかります。そこで質問なのですが、トレードイベントは、あるEAのOnTradeTransactionにまず来て、次に別のEAのOnTradeTransactionに来るのか、それとも何らかの方法ですべてのEAのハンドラに一度に来るのでしょうか?まあ、プログラミングで言うところのマルチスレッドの並列処理みたいなものですね。すべてが順次行われ、1ミリ秒以内に高速で動作しているだけだと思いますが、念のため質問させていただきました。
1つのシンボル (m_symbol.Name()) と1つのマジック (m_magic) に対する OnTradeTransaction ハンドラです。
トランザクションを最初にキャッチする
貿易取引取引追加
トランザクションを履歴に追加します。注文の執行や口座残高の取引の結果として行われます。
そして、それがトレードであるかどうかを確認します。
DEAL_ENTRY_OUT
市場の出口
OnTradeTransaction イベントはブロードキャストイベントであり、端末が実行するすべてのアクションはそこに「ダンプ」されます。
ただ、それぞれのEAが自分の行動をフィルタリングする必要があるのです。
そして、それぞれのタイプで、チケットでフィルタリングし、もしオーダーが非同期で送信されるのであれば
まず、リクエストIDでチケットを取得し、そのチケットでフィルタリングを行います。
TRADE_TRANSACTION_REQUESTイベントが常に最初に来て、他のイベントは "好きなように " 来る。
追加
これは何度も議論されてきたことです。
取引所取引で調べる
ありがとうございます。正しい取引を「書き留める」ことができるようになったようです。