StopLimit - ページ 7 1234567 新しいコメント Denis Kirichenko 2019.12.12 18:57 #61 Sergey Chalyshev: どうやら誰も使っていないようです。 存在しない価格で注文が開始される。 は、簡単な例で確認することができます。 //+------------------------------------------------------------------+ //| StopLimit_Test.mq5 | //+------------------------------------------------------------------+ #include <Trade\Trade.mqh> CTrade trade; input int Deviation = 100; //+------------------------------------------------------------------+ void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol,tick); trade.SetTypeFilling(ORDER_FILLING_RETURN); double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); if(OrdersTotal()==0) trade.OrderOpen( _Symbol, // символ ORDER_TYPE_BUY_STOP_LIMIT, // тип ордера 1.0, // объем ордера tick.ask+Deviation*ticksise, // цена исполнения tick.ask+10*ticksise, // цена стоплимита 0, // цена stop loss 0 // цена take profit ); } //+------------------------------------------------------------------+ これ でよいのでしょうか?最初に逆指値、次に権利行使価格が来る。ドキュメントを ご覧ください。 bool OrderOpen( const string symbol, // символ ENUM_ORDER_TYPE order_type, // тип ордера double volume, // объем ордера double limit_price, // цена стоплимита double price, // цена исполнения double sl, // цена stop loss double tp, // цена take profit ENUM_ORDER_TYPE_TIME type_time, // тип по истечению datetime expiration, // истечение const string comment="" // комментарий ) Denis Kirichenko 2019.12.12 19:19 #62 トピックスターターのコードを少し修正しました。 //+------------------------------------------------------------------+ //| StopLimit_Test.mq5 | //+------------------------------------------------------------------+ #include <Trade\Trade.mqh> CTrade trade; input int Deviation = 5; //+------------------------------------------------------------------+ void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol,tick); trade.SetTypeFilling(ORDER_FILLING_RETURN); double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); if(OrdersTotal()==0) { ENUM_ORDER_TYPE ord_type=ORDER_TYPE_BUY_STOP_LIMIT; double ord_vol=0.1; double ask_pr=NormalizeDouble(tick.ask,_Digits); double ord_pr=NormalizeDouble(tick.ask+Deviation*ticksise,_Digits); double limit_pr=NormalizeDouble(tick.ask+10*ticksise,_Digits); string ord_comment=StringFormat("%0."+IntegerToString(_Digits)+"f;%0."+ IntegerToString(_Digits)+"f;%0."+ IntegerToString(_Digits)+"f",ask_pr,limit_pr,ord_pr); trade.OrderOpen( _Symbol, // символ ord_type, // тип ордера ord_vol, // объем ордера limit_pr, // цена стоплимита ord_pr, // цена исполнения 0., // цена stop loss 0., // цена take profit 0, // тип по истечению 0, // истечение ord_comment // комментарий ); } } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { PrintFormat(" %s",EnumToString(trans.type)); //--- /*if(trans.type==TRADE_TRANSACTION_DEAL_ADD) { DebugBreak(); } else if(trans.type==TRADE_TRANSACTION_ORDER_UPDATE) { ENUM_ORDER_TYPE curr_ord_type=trans.order_type; if(curr_ord_type!=ORDER_TYPE_BUY_STOP_LIMIT) DebugBreak(); }*/ } //+------------------------------------------------------------------+ 以下は、EURUSDの例です。 重要:ストップリミットプライスは悪く設定 されています。交換実行のためです。 買いの逆指値が設定され、指値注文として有効化され、開設された。 スクリーンショットでは、コメントに価格が表示されているのがわかります。最初の価格(1.10258)は注文が出された時のアスク価格、2番目(1.10268)は注文のリミット部分の発動価格、3番目(1.10263)は注文のストップ部分の発動価格です。 Denis Kirichenko 2019.12.12 19:42 #63 ロジックは以下の通りです。市場の売値が1.10263に達した場合、注文のストップ部分(ストライクプライス)が有効になります。そして、指値注文の権利行使価格は市場価格(1.10268)よりも悪いので、指値注文の部分は直ちにトリガーされるはずです。 ログファイルを見るのです。 2019.12.12 21:08:10.306 2019.12.02 00:00:11 buy stop limit 0.10 EURUSD at 1.10263 (1.10268) (1.10239 / 1.10258) 2019.12.12 21:08:10.310 2019.12.02 00:00:11 CTrade::OrderSend: buy stop limit 0.10 EURUSD at 1.10263 (1.10268) [done] 2019.12.12 21:08:10.310 2019.12.02 00:00:11 TRADE_TRANSACTION_ORDER_ADD 2019.12.12 21:08:10.310 2019.12.02 00:00:11 TRADE_TRANSACTION_REQUEST 2019.12.12 21:08:10.312 2019.12.02 00:02:15 order [#2 buy stop limit 0.10 EURUSD at 1.10263 (1.10268)] triggered 2019.12.12 21:08:10.312 2019.12.02 00:02:15 TRADE_TRANSACTION_ORDER_UPDATE 2019.12.12 21:09:18.333 2019.12.02 00:02:15 order [#2 buy limit 0.10 EURUSD at 1.10268] triggered 2019.12.12 21:09:18.333 2019.12.02 00:02:15 deal #2 buy 0.10 EURUSD at 1.10265 done (based on order #2) 2019.12.12 21:09:18.333 2019.12.02 00:02:15 deal performed [#2 buy 0.10 EURUSD at 1.10265] 2019.12.12 21:09:18.333 2019.12.02 00:02:15 order performed buy 0.10 at 1.10265 [#2 buy limit 0.10 EURUSD at 1.10268] 00:02:15 、注文が指値注文に変わったことがわかります(ストップ部分がトリガーされたのです)。そして、それはすぐに市場でのポジションに変わりました。そして面白いのは、ログには1行目のようなビッド・アスクの価格(1.10239 / 1.10258)は出ていないことです。そして、それは不便なことです。はい、1.10265でポジションをオープンしています。 1.10263でオープンすることが予想さ れた。ここで、2ptsのズレが生じたと思います。 ティック基盤を見ているところ。はい、テストは2019年12月2日からの本物のティックを使って行いました。 私たちのティック(1.10265)があることがわかります。スクリーンショットで強調表示しました。そして、00:02:15からこれが3回目の刻みと なった。前回のアスク=1.10271(00:02:15.428~)はさらに 高値更新。とはいえ、私たちのティックと同じタイミングでつまり、より良い価格でエントリーされた。結論:予想 通り、ストップ部分の注文で2ポイントのスリッページが発生しました。 Dmitry Fedoseev 2019.12.12 20:22 #64 Denis Kirichenko: これは 正しいことなのでしょうか?最初に逆指値、次に権利行使価格が来る。ドキュメントを見て ください。 これは、stoplimitが限界に達したとき、すぐにリミットを発動させるために意図的に行っているものです。トリガーされると、注文で指定された価格ではなく、stoplimitを作動させた価格(実際にはそうだった)で、どこか外の世界にいるように見えます。 削除済み 2019.12.12 21:12 #65 Denis Kirichenko: ロジックは以下の通りです。市場の売値が1.10263に達した場合、注文のストップ部分(ストライクプライス)が有効になります。また、指値注文の権利行使価格は市場価格(1.10268)よりも悪いので、指値注文の部分は直ちにトリガーされるはずです。 123の価格があります。 BUY_STOP_LIMITです。ストップ高は133円です。指値は111です。 価格がストップ価格を超えた場合、指値が有効になります。価格が111に戻れば、ポジションがオープン されます。 価格がストップ価格を通過し、リミット価格に戻っていない場合、ポジションは開設されません。 そんな感じではないでしょうか? Sergey Chalyshev 2019.12.12 21:59 #66 Denis Kirichenko: FXでもテスターで逆指値注文を確認することができます。実行」=「Exchange」と設定すればよい。 買い指値は以下のように確認しました。指値注文の価格をアクティベーション価格より悪く設定しました。注文は、起動時に市場価格(アスク価格)で始まりました。ということで、Testerに搭載されている機能は動作するようです。 はい、取引所取引のFX商品では、正しく動作します。 そして今度は「決済方法」=FORTS Futuresも変更し、取引所取引商品での動作を確認します。 取引所取引商品で計算方法=FXとした場合、正しく動作しますが、証拠金が正しくカウントされません。 prostotrader 2019.12.12 22:07 #67 Sergey Chalyshev: 実際の取引でStopLimitを 使用していますか? テスターではStopLimitが十分に機能 しないことは明らかです。 実際の取引で使うことに意味はあるのでしょうか?メリットとデメリットを教えてください。 このような注文は使う意味がない。 注文の有効期間を任意に指定できるため、すぐに保留注文を 出すことができ、非常に楽である。 取引所にはいるがMQサーバーにはいない場合、この注文はその中で指定された価格で動作することが保証 されています。 そして、サーバーが「不具合」を起こすこともあります。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どうやら誰も使っていないようです。
存在しない価格で注文が開始される。
は、簡単な例で確認することができます。
これ でよいのでしょうか?最初に逆指値、次に権利行使価格が来る。ドキュメントを ご覧ください。
トピックスターターのコードを少し修正しました。
以下は、EURUSDの例です。
重要:ストップリミットプライスは悪く設定 されています。交換実行のためです。
買いの逆指値が設定され、指値注文として有効化され、開設された。
スクリーンショットでは、コメントに価格が表示されているのがわかります。最初の価格(1.10258)は注文が出された時のアスク価格、2番目(1.10268)は注文のリミット部分の発動価格、3番目(1.10263)は注文のストップ部分の発動価格です。
ロジックは以下の通りです。市場の売値が1.10263に達した場合、注文のストップ部分(ストライクプライス)が有効になります。そして、指値注文の権利行使価格は市場価格(1.10268)よりも悪いので、指値注文の部分は直ちにトリガーされるはずです。
ログファイルを見るのです。
00:02:15 、注文が指値注文に変わったことがわかります(ストップ部分がトリガーされたのです)。そして、それはすぐに市場でのポジションに変わりました。そして面白いのは、ログには1行目のようなビッド・アスクの価格(1.10239 / 1.10258)は出ていないことです。そして、それは不便なことです。はい、1.10265でポジションをオープンしています。 1.10263でオープンすることが予想さ れた。ここで、2ptsのズレが生じたと思います。
ティック基盤を見ているところ。はい、テストは2019年12月2日からの本物のティックを使って行いました。
私たちのティック(1.10265)があることがわかります。スクリーンショットで強調表示しました。そして、00:02:15からこれが3回目の刻みと なった。前回のアスク=1.10271(00:02:15.428~)はさらに 高値更新。とはいえ、私たちのティックと同じタイミングでつまり、より良い価格でエントリーされた。結論:予想 通り、ストップ部分の注文で2ポイントのスリッページが発生しました。
これは 正しいことなのでしょうか?最初に逆指値、次に権利行使価格が来る。ドキュメントを見て ください。
これは、stoplimitが限界に達したとき、すぐにリミットを発動させるために意図的に行っているものです。トリガーされると、注文で指定された価格ではなく、stoplimitを作動させた価格(実際にはそうだった)で、どこか外の世界にいるように見えます。
ロジックは以下の通りです。市場の売値が1.10263に達した場合、注文のストップ部分(ストライクプライス)が有効になります。また、指値注文の権利行使価格は市場価格(1.10268)よりも悪いので、指値注文の部分は直ちにトリガーされるはずです。
123の価格があります。 BUY_STOP_LIMITです。ストップ高は133円です。指値は111です。
価格がストップ価格を超えた場合、指値が有効になります。価格が111に戻れば、ポジションがオープン されます。
価格がストップ価格を通過し、リミット価格に戻っていない場合、ポジションは開設されません。
そんな感じではないでしょうか?
FXでもテスターで逆指値注文を確認することができます。実行」=「Exchange」と設定すればよい。
買い指値は以下のように確認しました。指値注文の価格をアクティベーション価格より悪く設定しました。注文は、起動時に市場価格(アスク価格)で始まりました。ということで、Testerに搭載されている機能は動作するようです。
はい、取引所取引のFX商品では、正しく動作します。
そして今度は「決済方法」=FORTS Futuresも変更し、取引所取引商品での動作を確認します。
取引所取引商品で計算方法=FXとした場合、正しく動作しますが、証拠金が正しくカウントされません。
実際の取引でStopLimitを 使用していますか?
テスターではStopLimitが十分に機能 しないことは明らかです。
実際の取引で使うことに意味はあるのでしょうか?メリットとデメリットを教えてください。
このような注文は使う意味がない。
注文の有効期間を任意に指定できるため、すぐに保留注文を 出すことができ、非常に楽である。
取引所にはいるがMQサーバーにはいない場合、この注文はその中で指定された価格で動作することが保証 されています。
そして、サーバーが「不具合」を起こすこともあります。