OnTradeTransactionバックテストでのストップトリガーの検出 - ページ 2

 
chinaski:

こんにちは、angevoyageurさん。

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

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

よろしくお願いします。

ここでストップロスが発動されます。

2013.05.03 16:52106EURUSD買う0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSD売りアウト0.011.310401070.000.00-2.009 976.84SL 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 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

 
angevoyageur:

ここでストップロスが発動されます。

2013.05.03 16:52106EURUSD買う0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSD売りアウト0.011.310401070.000.00-2.009 976.84SL 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 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

こんにちは。

しかし、これはentry-type=INであり、outではありません....

 
chinaski:

こんにちは。

が、これはentry-type=INであってout ではないのですが・・

そうかもしれませんが、それにしても、あなたのスリップの引き金になりましたね。 プログラムの言う ことを 鵜呑みに しない ようにしましょう;-)
 
angevoyageur:
そうかもしれない、しかし、それはあなたのSLがトリガーされたことに変わりはない。 プログラムの言う ことは 決して信じては いけません;-)

その通りなのですが、一方で、sl=0.0, tp=0.0 がストップまたはターゲットオーダーであり、sl と tp が単に(取引構造上)失敗したということではない、ということをどうやって知ることができるのでしょうか?

 
chinaski:

その通りですが、一方で、sl=0.0 と tp=0.0 がストップまたはターゲットオーダーであり、sl と tp が単に(取引構造上)失敗したということではない、ということをどうやって知ることができるでしょうか。

構造体がフィールドを欠落させることはできません。これは取引(DEAL_TYPE_SELL)に関するもので、取引に SL/TP が含まれることはありえない、それは意味がない。SL (または TP) は注文 (特別な保留注文の一種) で、それがトリガーされると、その注文は取引になります。OnTradeTransactionの中でそのすべてを確認することができます。

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
 
angevoyageur:

構造体はフィールドを持つことができません。これは取引(DEAL_TYPE_SELL)に関するもので、取引はSL/TPを持つことができません。SL(またはTP)は注文(特別保留注文の一種)であり、それがトリガーされると、その注文は取引となる。OnTradeTransactionの中でそのすべてを確認することができます。

もちろん、構造体のメンバーという意味ではなく、値のことです。
 
chinaski:
もちろん、構造体のメンバーという意味ではなく、価値観という意味です。
それで ちょっとわかりにくいですがまだ お役に立てますか?
 
angevoyageur:
というのは ちょっとわかりにくいですがまだ お役に立てますか?

はい、助かりました。紛らわしいとはどういう意味ですか?常にENTRY_INを取得することについて疑問に思っていました。プログラムが教えてくれることを信じるなということですね。そのとおりで、sl=0.0やtp=0.0(ミス値)は、サーバーのミス(値を書き忘れている)かもしれませんね。

私にとって重要な のは、どのトランザクションがストップアウトになるかを判断するための保存方法です。MTは素晴らしいものですが、多くの点で混乱し、このケースのように、通常期待されることを行っていません。

私が何を言いたいか分かりますか?

 
chinaski:

はい、助かりました。紛らわしいとはどういう意味ですか?常にENTRY_INを取得することについて疑問に思っていました。プログラムが教えてくれることを信じるなということですね。そのとおりで、sl=0.0やtp=0.0(ミス値)は、サーバーのミス(値を書き忘れている)かもしれませんね。

私にとって重要なのは、どのトランザクションがストップアウトになるかを判断するための保存方法です。MTは素晴らしいものですが、多くの点で混乱し、このケースのように、通常期待されることを行っていません。

私の言っていることがわかりますか?

混乱 してるのは です;-) 私は多くの題材を 読み、 それに応えて います。私はあなたが言ったことを理解し、 MT4で 習慣を 変更 することができなければなりません
 
chinaski:

はい、助かりました。紛らわしいとはどういう意味ですか?常にENTRY_INを取得することについて疑問に思っていました。プログラムが教えてくれることを信じるなということですね。そのとおりで、sl=0.0やtp=0.0(ミス値)は、サーバーのミス(値を書き忘れている)かもしれませんね。

私にとって重要なのは、どのトランザクションがストップアウトになるかを判断するための保存方法 です。MTは素晴らしいものですが、多くの点で混乱し、このケースのように、通常期待されることを行っていません。

どういう意味かわかりますか?

私は確認しました。SL/TPが発動すると、以下のようなトランザクションが発生します。

  1. TRADE_TRANSACTION_POSITION でSLとTPが設定されている(ただし、まだ取引は行われていない)、次に
  2. トレード・トランザクション・ディール・アド(TRADE_TRANSACTION_DEAL_ADD

取引ポジション

取引実行に関係のないポジションを変更すること。このタイプの取引は、取引サーバー側でポジションが変更されたことを示します。ポジションの数量、建値、ストップロス、テイクプロフィットのレベルを変更することができます。 変更に関するデータは、OnTradeTransactionハンドラを介してMqlTradeTransaction 構造体に送信されます。取引実行によるポジション変更(追加、変更、決済)は、TRADE_TRANSACTION_POSITION トランザクションの発生につながりません。

理由: