OnTradeTransactionバックテストでのストップトリガーの検出 - ページ 3 12345 新しいコメント chinaski 2013.05.08 17:06 #21 angevoyageur:確認しました。SL/TPがトリガーされると、このようなトランザクションが発生します。TRADE_TRANSACTION_POSITIONでSLとTPが設定されている(ただし、まだ取引は行われていない)、次にトレード_トランザクション_ディール_追加処女ポジションからショートをする場合、3つのトランザクションが発生します。エントリー)20130507 21:52:28:943 entry short at 1.31060 time=2013.01.10 11:43 20130507 21:52:28:943 symbol=EURUSD price=1.3106000 volume=0.01 sl=1.3119000 tp=1.3088000 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 21:52:28:943 symbol=EURUSD price=1.3106000 volume=0.01 sl=1.3119000 tp=1.3088000 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 21:52:28:943 symbol=EURUSD price=1.3106000 volume=0.00 sl=1.3119000 tp=1.3088000 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ストップ・ロスが 発動されると、次のようになります。B 終了)20130507 21:52:28:945 symbol=EURUSD price=1.3119000 volume=0.01 sl=0.0000000 tp=0.0000000 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.00TRADE_TRANSACTION_POSITIONが ない。ここでは使えないと思います。概要ショートがオープンされ、最初のトランザクションはentry-type=IN trans-type=DEAL_ADD order_type=BUYsl=1.3119000 tp=1.3088000ショートをクローズ、ストップまたはターゲットで、最初の取引は反映された取引エントリータイプ=IN トランスタイプ=DEAL_ADD オーダータイプ=BUY sl=0.0 tp=0.0これは紛らわしいですね。となるはずです。オープンショートentry-type=IN trans-type=DEAL_ADD order_type=SELLsl=1.3119000 tp=1.3088000ショートをクローズします。エントリータイプ=OUT trans-type=DEAL_ADD order_type=BUY sl=0.0 tp=0.0angevoyageur: 確認しました。SL/TPがトリガーされると、このようなトランザクションが発生します。SLとTPが設定されたTRADE_TRANSACTION_POSITION(ただし、まだ取引は行われていない)、次にTRADE_TRANSACTION_DEAL_ADD Detect stop trigger in MetaEditor build 1490 Simple EA wanted for Alain Verleyen 2013.05.08 18:01 #22 chinaski:処女ポジションから空売りをする場合、3つのトランザクションが発生します。エントリー)ストップ・ロスが 発動されると、次のようになります。B exit )TRADE_TRANSACTION_POSITIONがない。ここでは 使えないと思います。...いくつかの取引を見逃している、なぜかわからない。バックテストが原因? Alain Verleyen 2013.05.08 18:07 #23 少し余談ですが、intead of :ORDER_TYPE_to_string(t.order_type) を使用することができます。EnumToString(t.order_type) chinaski 2013.05.08 18:20 #24 angevoyageur:少し余談ですが、intead of :を使うことができます。EnumToStringをありがとうございます.そうですね、私の懸念はバックテストでの トランザクションについてです。しかし、可能な限りリアルにするために、取引は本番と同じであるべきです。TRADE_TRANSACTION_POSITIONは、あなたが以前にも述べたように、取引とは関係ありません。例えば、口座のお金を移動させた時などに表示されると思います。 Alain Verleyen 2013.05.08 19:32 #25 chinaski: ...バックテスト時に利用できないトランザクションがあるようです。バグか バックテストの制限か。フォワードテストで実行すると、SL/TPがトリガーされたときにTRADE_TRANSACTION_POSITIONが発生するのですが、これは何ですか?2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT 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.34 Get in touch with developers using Service Desk! www.mql5.com We therefore attach great importance to all user reports about issues in our programs and try to answer each one of them. Detect stop trigger in MetaEditor build 1490 MetaEditor build 1490 chinaski 2013.05.09 00:22 #26 angevoyageur:バックテスト時に利用できないトランザクションがあるようです。バグか バックテストの制限か。フォワードテストで実行すると、SL/TPがトリガーされたときにTRADE_TRANSACTION_POSITIONが発生するのですが、これは何ですか?2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 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 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD 2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT 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.34 OK、この情報をありがとうございました。それで、私はこれを私の検討に含めることを知っています。 chinaski 2013.05.14 23:23 #27 こんにちは、angevoyageurさん。バックテストでは、ストップやロスカットの約定値を取得するのに苦労しています。本番でどうなるかは今のところわかりません。これはバックテストのログです。KP 0 23:18:29 Core 1 2010.05.11 11:00:00 instant buy 0.01 EURUSD at 1.26882 (1.26871 / 1.26882 / 1.26871) EM 0 23:18:29 Core 1 2010.05.11 11:00:00 deal #2 buy 0.01 EURUSD at 1.26882 done (based on order #2) MG 0 23:18:29 Core 1 2010.05.11 11:00:00 deal performed [#2 buy 0.01 EURUSD at 1.26882] RI 0 23:18:29 Core 1 2010.05.11 11:00:00 order performed buy 0.01 at 1.26882 [#2 buy 0.01 EURUSD at 1.26882] JS 0 23:18:29 Core 1 2010.05.11 11:00:00 CTrade::OrderSend: instant buy 0.01 EURUSD at 1.26882 [done at 1.26882] LP 0 23:18:29 Core 1 2010.05.11 11:00:00 position modified [buy 0.01 EURUSD 1.26882 sl: 1.26809 tp: 1.27028] LM 0 23:18:29 Core 1 2010.05.11 11:00:00 CTrade::OrderSend: modify EURUSD (sl: 1.26809, tp: 1.27028) [done] LR 0 23:18:29 Core 1 2010.05.11 11:00:00 trans=symbol=EURUSD price=1.2688200 volume=0.01 sl=0.0000000 tp=0.0000000 order=2 deal=2 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000 GG 0 23:18:29 Core 1 2010.05.11 11:18:40 take profit triggered buy 0.01 EURUSD 1.26882 sl: 1.26809 tp: 1.27028 [#3 sell 0.01 EURUSD at 1.27028] MD 0 23:18:29 Core 1 2010.05.11 11:18:40 deal #3 sell 0.01 EURUSD at 1.27028 done (based on order #3) PI 0 23:18:29 Core 1 2010.05.11 11:18:40 deal performed [#3 sell 0.01 EURUSD at 1.27028] NO 0 23:18:29 Core 1 2010.05.11 11:18:40 order performed sell 0.01 at 1.27028 [#3 sell 0.01 EURUSD at 1.27028] RS 0 23:18:29 Core 1 2010.05.11 11:18:40 trans=symbol=EURUSD price=1.2702800 volume=0.01 sl=0.0000000 tp=0.0000000 order=3 deal=3 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000 JM 0 23:18:29 Core 1 2010.05.20 09:00:00 ut =3.00 candle=o=1.24130 c=1.24170 h=1.24360 l=1.24100 b=39 uw=190 lw=29 FK 0 23:18:29 Core 1 2010.05.20 09:00:00 instant sell 0.01 EURUSD at 1.24180 (1.24180 / 1.24195 / 1.24180) MG 0 23:18:29 Core 1 2010.05.20 09:00:00 deal #4 sell 0.01 EURUSD at 1.24180 done (based on order #4) IG 0 23:18:29 Core 1 2010.05.20 09:00:00 deal performed [#4 sell 0.01 EURUSD at 1.24180] CN 0 23:18:29 Core 1 2010.05.20 09:00:00 order performed sell 0.01 at 1.24180 [#4 sell 0.01 EURUSD at 1.24180] EO 0 23:18:29 Core 1 2010.05.20 09:00:00 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.24180 [done at 1.24180] EQ 0 23:18:29 Core 1 2010.05.20 09:00:00 position modified [sell 0.01 EURUSD 1.24180 sl: 1.24253 tp: 1.24034] DO 0 23:18:29 Core 1 2010.05.20 09:00:00 CTrade::OrderSend: modify EURUSD (sl: 1.24253, tp: 1.24034) [done] HI 0 23:18:29 Core 1 2010.05.20 09:00:00 trans=symbol=EURUSD price=1.2418000 volume=0.01 sl=0.0000000 tp=0.0000000 order=4 deal=4 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000 JH 0 23:18:29 Core 1 2010.05.20 09:00:40 stop loss triggered sell 0.01 EURUSD 1.24180 sl: 1.24253 tp: 1.24034 [#5 buy 0.01 EURUSD at 1.24253] HI 0 23:18:29 Core 1 2010.05.20 09:00:40 deal #5 buy 0.01 EURUSD at 1.24253 done (based on order #5) MK 0 23:18:29 Core 1 2010.05.20 09:00:40 deal performed [#5 buy 0.01 EURUSD at 1.24253] NL 0 23:18:29 Core 1 2010.05.20 09:00:40 order performed buy 0.01 at 1.24253 [#5 buy 0.01 EURUSD at 1.24253] KQ 0 23:18:29 Core 1 2010.05.20 09:00:40 trans=symbol=EURUSD price=1.2425300 volume=0.01 sl=0.0000000 tp=0.0000000 order=5 deal=5 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000 PJ 0 23:18:30 Core 1 2010.08.26 09:08:00 ut =3.83 candle=o=1.27238 c=1.27274 h=1.27448 l=1.27238 b=35 uw=174 lw=0 IH 0 23:18:30 Core 1 2010.08.26 09:08:00 instant sell 0.01 EURUSD at 1.27276 (1.27276 / 1.27287 / 1.27276) GH 0 23:18:30 Core 1 2010.08.26 09:08:00 deal #6 sell 0.01 EURUSD at 1.27276 done (based on order #6) MR 0 23:18:30 Core 1 2010.08.26 09:08:00 deal performed [#6 sell 0.01 EURUSD at 1.27276] HR 0 23:18:30 Core 1 2010.08.26 09:08:00 order performed sell 0.01 at 1.27276 [#6 sell 0.01 EURUSD at 1.27276] PR 0 23:18:30 Core 1 2010.08.26 09:08:00 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.27276 [done at 1.27276] FE 0 23:18:30 Core 1 2010.08.26 09:08:00 position modified [sell 0.01 EURUSD 1.27276 sl: 1.27349 tp: 1.27130] LK 0 23:18:30 Core 1 2010.08.26 09:08:00 CTrade::OrderSend: modify EURUSD (sl: 1.27349, tp: 1.27130) [done] NE 0 23:18:30 Core 1 2010.08.26 09:08:00 trans=symbol=EURUSD price=1.2727600 volume=0.01 sl=0.0000000 tp=0.0000000 order=6 deal=6 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000 HM 0 23:18:30 Core 1 2010.08.26 09:08:40 stop loss triggered sell 0.01 EURUSD 1.27276 sl: 1.27349 tp: 1.27130 [#7 buy 0.01 EURUSD at 1.27349] 最後の行にあるように、約定価格はログに記載されています -> [#7 buy 0.01 EURUSD at 1.27349].しかし、構造、取引、取引履歴、注文履歴には、この価格はありません。この行は停止をトリガーした取引に関連するものをダンプしています。NE 0 23:18:30 Core 1 2010.08.26 09:08:00 trans=symbol=EURUSD price=1.2727600 volume=0.01 sl=0.0000000 tp=0.0000000 order=6 deal=6 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 order-open=0.000000 order-current=0.000000 deal-price=0.000000これはダンプ機能のコードです。string dump_MqlTradeTransaction(const MqlTradeTransaction& t) { //CDealInfo deal; //deal.Ticket(t.deal); if(t.deal > 0) HistoryDealSelect(t.deal); string msg=StringFormat("symbol=%s price=%.7f volume=%.2f sl=%.7f tp=%.7f order=%d deal=%d entry-type=%s trans-type=%s order_type=%s deal_type=%s type_time=%d expiration=%s price_trigger=%.7f profit=%.2f order-open=%.6f order-current=%.6f deal-price=%.6f" ,t.symbol ,t.price ,t.volume ,t.price_sl ,t.price_tp ,t.order ,t.deal ,tc_DEAL_ENTRY_to_string_short((ENUM_DEAL_ENTRY)HistoryDealGetInteger(t.deal,DEAL_ENTRY)) ,tc_ENUM_TRADE_TRANSACTION_TYPE_to_string_short((ENUM_TRADE_TRANSACTION_TYPE) t.type) ,tc_ORDER_TYPE_to_string(t.order_type) ,tc_DEAL_TYPE_to_string(t.deal_type) ,t.time_type ,TimeToString(t.time_expiration) ,t.price_trigger ,HistoryDealGetDouble(t.deal,DEAL_PROFIT) ,HistoryOrderGetDouble(t.order,ORDER_PRICE_OPEN) ,HistoryOrderGetDouble(t.order,ORDER_PRICE_CURRENT) ,HistoryDealGetDouble(t.deal,DEAL_PRICE) ); return msg; }そこで、注文と取引履歴から執行価格を取得しようとしたのですが、結果が出ません。 Alain Verleyen 2013.05.14 23:38 #28 chinaski:angevoyageurさん、こんにちは。... ありがとうございます、私は早急にそれを勉強しに行きます。 chinaski 2013.05.15 00:23 #29 angevoyageur: ありがとうございます、早速勉強しに行きます。これは本当に素敵なことです。急がないでください。OnTradeTransactionに渡された各トランザクション、リクエスト、結果を確認しました。バックテストログ(MetaTraderで作成)に記載されているトリガーされたストップロス価格は、sl価格以外では見つからず、価格や取引価格、執行価格では見つかりませんでした。 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 Alain Verleyen 2013.05.15 10:43 #30 chinaski:これは本当に素敵なことです。急がないでください。OnTradeTransactionに渡された各トランザクション、リクエスト、結果を確認しました。バックテストログ(MetaTraderで作成)に記載されているトリガーされたストップロス価格は、sl価格以外では見つからず、価格や取引価格、執行価格では見つかりませんでした。つまり、バックテストのみの話です。私は自分のコードでテストし、私はストップがトリガされたときに3つのトランザクションを取得しました。 2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_DEAL_ADD(6) 2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_ORDER_DELETE(2) 2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_HISTORY_ADD(3) DEAL_ADDで取引価格を取得し、私の場合はSLを取得しました。すべて正しいようです。使用したコード、バックテストログ(ファイルとして)、ストラテジーテスターの設定のスクリーンショットを私に送ることを提案します。そうすれば、あなたと全く同じテストを再現し、その結果を分析することができます。もしご希望であれば、PMで送っていただいても結構です。 Detect stop trigger in PREDICT time period static array ? 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
確認しました。SL/TPがトリガーされると、このようなトランザクションが発生します。
処女ポジションからショートをする場合、3つのトランザクションが発生します。
エントリー)
ストップ・ロスが 発動されると、次のようになります。
B 終了)
TRADE_TRANSACTION_POSITIONが ない。ここでは使えないと思います。
概要
ショートがオープンされ、最初のトランザクションは
entry-type=IN trans-type=DEAL_ADD order_type=BUYsl=1.3119000 tp=1.3088000
ショートをクローズ、ストップまたはターゲットで、最初の取引は反映された取引
エントリータイプ=IN トランスタイプ=DEAL_ADD オーダータイプ=BUY sl=0.0 tp=0.0
これは紛らわしいですね。となるはずです。
オープンショート
entry-type=IN trans-type=DEAL_ADD order_type=SELLsl=1.3119000 tp=1.3088000
ショートをクローズします。
エントリータイプ=OUT trans-type=DEAL_ADD order_type=BUY sl=0.0 tp=0.0
確認しました。SL/TPがトリガーされると、このようなトランザクションが発生します。
処女ポジションから空売りをする場合、3つのトランザクションが発生します。
エントリー)
ストップ・ロスが 発動されると、次のようになります。
B exit )
TRADE_TRANSACTION_POSITIONがない。ここでは 使えないと思います。
...いくつかの取引を見逃している、なぜかわからない。バックテストが原因?
少し余談ですが、intead of :
を使用することができます。
EnumToString(t.order_type)
少し余談ですが、intead of :
を使うことができます。
EnumToStringをありがとうございます.
そうですね、私の懸念はバックテストでの トランザクションについてです。しかし、可能な限りリアルにするために、取引は本番と同じであるべきです。
TRADE_TRANSACTION_POSITIONは、あなたが以前にも述べたように、取引とは関係ありません。例えば、口座のお金を移動させた時などに表示されると思います。
...
バックテスト時に利用できないトランザクションがあるようです。バグか バックテストの制限か。フォワードテストで実行すると、SL/TPがトリガーされたときにTRADE_TRANSACTION_POSITIONが発生するのですが、これは何ですか?
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT 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.34
バックテスト時に利用できないトランザクションがあるようです。バグか バックテストの制限か。フォワードテストで実行すると、SL/TPがトリガーされたときにTRADE_TRANSACTION_POSITIONが発生するのですが、これは何ですか?
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 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
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT 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.34
こんにちは、angevoyageurさん。
バックテストでは、ストップやロスカットの約定値を取得するのに苦労しています。本番でどうなるかは今のところわかりません。
これはバックテストのログです。
最後の行にあるように、約定価格はログに記載されています -> [#7 buy 0.01 EURUSD at 1.27349].
しかし、構造、取引、取引履歴、注文履歴には、この価格はありません。
この行は停止をトリガーした取引に関連するものをダンプしています。
これはダンプ機能のコードです。
そこで、注文と取引履歴から執行価格を取得しようとしたのですが、結果が出ません。
angevoyageurさん、こんにちは。
...ありがとうございます、早速勉強しに行きます。
これは本当に素敵なことです。急がないでください。
OnTradeTransactionに渡された各トランザクション、リクエスト、結果を確認しました。
バックテストログ(MetaTraderで作成)に記載されているトリガーされたストップロス価格は、sl価格以外では見つからず、価格や取引価格、執行価格では見つかりませんでした。
これは本当に素敵なことです。急がないでください。
OnTradeTransactionに渡された各トランザクション、リクエスト、結果を確認しました。
バックテストログ(MetaTraderで作成)に記載されているトリガーされたストップロス価格は、sl価格以外では見つからず、価格や取引価格、執行価格では見つかりませんでした。
つまり、バックテストのみの話です。私は自分のコードでテストし、私はストップがトリガされたときに3つのトランザクションを取得しました。
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_HISTORY_ADD(3)