OnTradeTransactionバックテストでのストップトリガーの検出

 

こんにちは。

私のEAでストップ実行を検出しようとしています。残念ながら、MqlTradeTransaction が OnTradeTransaction に渡すDEAL_ENTRY_IN しか得られないのです。

これはバックテストの場合のみと思われます。

どなたか、バックテストでトリガーされたストップを確実に検出する方法をご存知の方、価格と(部分的な)利益とともにベストな方法を教えてください。

ありがとうございます。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
chinaski:

こんにちは。

私のEAでストップ実行を検出しようとしています。残念ながら、MqlTradeTransaction が OnTradeTransaction に渡すDEAL_ENTRY_IN しか得られないのです。

これはバックテストの場合のみと思われます。

どなたか、バックテストでトリガーされたストップを 確実に検出する方法をご存知の方、価格と(部分的な)利益とともにベストな方法を教えてください。

ありがとうございます。

OnTradeTransaction で、. をチェックする必要があります。

trans.order_state = ORDER_STATE_PLACED;

を持つ別のトランザクションが続いている。

trans.type = TRADE_TRANSACTION_DEAL_ADD;
 
angevoyageur:

OnTradeTransactionで、:

その後に、別の取引で:

こんにちは、Angevoyageur。

私のダンプをご覧ください。このダンプは、すべての取引をファイルに出力します。私のEAはとてもシンプルです。私のEAは非常にシンプルで、ストップとターゲットを指定して売買します。残念ながら、ログにはストップやターゲットに関連するトランザクションは見当たりません。

トリガーされたストップやターゲットに関連するログを見つけることができません。

20130507 00:26:59:672 entry short at 1.32176 <- entry short
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=2 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.00 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00

/// before the entry long, the stop or target of entry short should be triggerd.
/// The EA does not allow to enter new trade before latest is closed, simply by check current positions for symbol before open an entry tradde.

20130507 00:26:59:674 entry long at 1.32140 <- entry long
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=3 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.00 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00

/// As you can see, my entry short shows transaction BUY, SELL, SELL what ever the purpose of this confusing transactions is.
/// No a bit about stop or target orders

では、ストップとターゲットの取引を取得する方法は?私はここでバックテストについて話して います。本番環境でもそうなのかどうかはわかりません。

 
chinaski:

こんにちは、Angevoyageur。

私のダンプをご覧ください。このダンプはすべての取引をファイルに出力します。私のEAは非常にシンプルです。ストップとターゲットを指定して売買します。残念ながら、ログにはストップやターゲットに関連するトランザクションは見当たりません。

トリガーされたストップやターゲットに関連するログを見つけることができません。

では、ストップとターゲットの取引を取得する方法は?私はここでバックテストについて話しています。本番環境でもそうなのかどうかはわかりません。

OK、すみません、最初の質問を誤解していました。「トリガーされたストップ」と言われたとき、私は保留中の注文(買いのストップまたは売りのストップ)を考えていました。

本当に取引を監視する必要があるのでしょうか?一度に1つの取引しか行わないのであれば、PositionSelect(_Symbol)でオープンしたポジションを確認するだけでよいのです。

 
angevoyageur:

OK、最初の質問を誤解してすみません。「トリガーされたストップ」と言われたとき、私は保留中の注文(買いストップまたは売りストップ)を想像していたのです。

本当に取引を監視する必要があるのでしょうか?もし、一度に一つの取引しかしないのであれば、PositionSelect(_Symbol)でオープンしたポジションを簡単に確認することができます。

こんにちは。

ポジションが開いているかどうかを確認するために、私はすでにCPositionInfo.Selectを実行しています。

しかし、ストップやターゲットがトリガーされた場合、どのように実行されたストップやターゲット価格を取得するのでしょうか?スマートな方法はありますか?

 
chinaski:

こんにちは。

ポジションが開いているかどうかを確認するために、私はすでにCPositionInfo.Selectを実行しています。

しかし、一旦ストップやターゲットがトリガーされた場合、どのように実行されたストップやターゲット価格を取得するのでしょうか?スマートな方法はありますか?

なぜ、取引履歴をチェック しないのですか?
 
angevoyageur:
取引履歴を確認されてはいかがでしょうか?

もっと詳しく教えてください。約定したストップまたはターゲット価格が必要です。ターゲットまたはストップをトリガーした(トランザクションとして渡されない)取引IDまたはチケットを持っていません。

履歴はDEAL_PRICEを 提供しますが、私は取引番号または チケットが必要です。どのチケットまたはディールを取るべきですか? ありがとうござい ます

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
chinaski:

もっと詳しく教えてください。約定したストップまたはターゲット価格が必要です。ターゲットまたはストップをトリガーした(トランザクションとして渡されない)取引IDまたはチケットを持っていません。

履歴はDEAL_PRICEを 提供しますが、私は取引番号または チケットが必要です。どのチケットまたはディールを取るべきですか? ありがとうござい ます

ストップやスプレッドのトリガーがかかると、取引の反対側の取引が追加されます。例えば、0.25ロットの買いポジションを保有しているとします。SL/TPがトリガーされると、売りタイプの取引が発生します。OnTradeTransactionを使用してこれを監視するか、またはポジションがクローズされたことが分かった時点で取引の履歴を確認するだけです。

コード例は こちらをご覧ください。

 
angevoyageur:

SlまたはTpがトリガーされると、取引の反対側と取引が追加されます。例えば、0.25ロットの買いポジションを保有しているとします。この場合、OnTradeTransactionを使用して、この取引を監視するか、またはポジションがクローズされたことを確認したら、取引の履歴を確認することができます。

コード例は こちらをご覧ください。

こんにちは、angevさん。

これは私の問題です:明らかに私はOnTradeTransactionを使用することはできません。上記の私のログをご覧ください。そこにはストップやターゲットの注文は記載されていません。つまり、ストップやターゲットに関連する取引は実行されていないのです。

再び、私はバックテストについて話します。

 
chinaski:

こんにちは、angevです。

これは私の問題です:明らかに私はOnTradeTransactionを使用することはできません。上記の私のログをご覧ください。そこにはストップやターゲットの注文は記載されていません - 従って、ストップやターゲットに関連する取引は実行されていません ダンプはOnTradeTransactionに渡された各トランザクションに対して作成されます。

もう一度言いますが、私はバックテストについて話しています。

私ができる唯一の考えは、あなたがそれを提供する場合、あなたのコードをテストすることです。私はそのような問題を持っていない。
 
angevoyageur:
あなたがそれを提供する場合、私ができる唯一の考えは、あなたのコードをテストすることです。私はそのような問題を持っていない。

こんにちは、angevoyageurさん。

この問題を説明する簡単なEAを添付します。このEAは、ストップとターゲットと共にロングをオープンし、その後ショート、ロングと続きます。

また、ダンプ方法も含まれています。EUR.USD 1 minute 1 week を適用して、バックテストログの トランザクションダンプを見るだけです。

助けてくれてありがとうございます。

ファイル:
tc_ea_trans.mq5  11 kb
理由: