初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 83

 

ある地点でのテスト時に、原因不明で「無効な停止位置」というエラーが表示されるが、停止位置は正しいという問題が発生した。

アルゴリズムは簡単です。

   MqlTradeResult result = { 0 };
   MqlTradeRequest request = { 0 };
   
   double price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
   double sl = price - lvl * _Point;
   double tp = price + lvl * _Point;

   request.action = TRADE_ACTION_DEAL;
   request.magic = magic;
   request.symbol = _Symbol;
   request.volume = lot;
   request.price = price;
   request.deviation = deviation;
   request.type = isBuy ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;

   OrderSend(request, result);

   order = result.order;
   
   if (order)
   {   
      ZeroMemory(result);
      ZeroMemory(request);

      request.action = TRADE_ACTION_SLTP;
      request.order = order;
      request.symbol = _Symbol;
      request.sl = isBuy ? sl : tp;
      request.tp = isBuy ? tp : sl;

      if (!OrderSend(request, result))
      {
         Print(" --- Can not modify order --- error = " + GetLastError() + " order = " + order + " price = " + price);
      }
   }

閉じている場合は、この手順を繰り返してください。

その結果、このような結果になりました(2010.05.01から始めています)。

2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 order = 4720 price = 1.41795
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   order performed buy 0.10 at 1.42003 [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal performed [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal #4719 buy 0.10 EURUSD at 1.42003 done (based on order #4719)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   stop loss triggered sell 0.10 EURUSD 1.41703 sl: 1.42003 tp: 1.41403 [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   position modified [sell 0.10 EURUSD 1.41703 sl: 1.42003 tp: 1.41403]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   order performed sell 0.10 at 1.41703 [#4718 sell 0.10 EURUSD at 1.41703]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal performed [#4718 sell 0.10 EURUSD at 1.41703]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal #4718 sell 0.10 EURUSD at 1.41703 done (based on order #4718)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   exchange sell 0.10 EURUSD at 1.41703 (1.41703 / 1.41711 / 1.41703)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   order performed buy 0.10 at 1.41711 [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal performed [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal #4717 buy 0.10 EURUSD at 1.41711 done (based on order #4717)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   stop loss triggered sell 0.10 EURUSD 1.41411 sl: 1.41711 tp: 1.41111 [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   position modified [sell 0.10 EURUSD 1.41411 sl: 1.41711 tp: 1.41111]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   order performed sell 0.10 at 1.41411 [#4716 sell 0.10 EURUSD at 1.41411]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal performed [#4716 sell 0.10 EURUSD at 1.41411]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal #4716 sell 0.10 EURUSD at 1.41411 done (based on order #4716)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   exchange sell 0.10 EURUSD at 1.41411 (1.41411 / 1.41420 / 1.41411)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   order performed buy 0.10 at 1.41420 [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal performed [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal #4715 buy 0.10 EURUSD at 1.41420 done (based on order #4715)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   stop loss triggered sell 0.10 EURUSD 1.41120 sl: 1.41420 tp: 1.40820 [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   position modified [sell 0.10 EURUSD 1.41120 sl: 1.41420 tp: 1.40820]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   order performed sell 0.10 at 1.41120 [#4714 sell 0.10 EURUSD at 1.41120]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal performed [#4714 sell 0.10 EURUSD at 1.41120]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal #4714 sell 0.10 EURUSD at 1.41120 done (based on order #4714)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   exchange sell 0.10 EURUSD at 1.41120 (1.41120 / 1.41126 / 1.41120)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   order performed buy 0.10 at 1.41126 [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal performed [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal #4713 buy 0.10 EURUSD at 1.41126 done (based on order #4713)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   stop loss triggered sell 0.10 EURUSD 1.40826 sl: 1.41126 tp: 1.40526 [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   position modified [sell 0.10 EURUSD 1.40826 sl: 1.41126 tp: 1.40526]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   order performed sell 0.10 at 1.40826 [#4712 sell 0.10 EURUSD at 1.40826]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal performed [#4712 sell 0.10 EURUSD at 1.40826]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal #4712 sell 0.10 EURUSD at 1.40826 done (based on order #4712)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   exchange sell 0.10 EURUSD at 1.40826 (1.40826 / 1.40835 / 1.40826)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   order performed buy 0.10 at 1.40832 [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal performed [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal #4711 buy 0.10 EURUSD at 1.40832 done (based on order #4711)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   stop loss triggered sell 0.10 EURUSD 1.40532 sl: 1.40832 tp: 1.40232 [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   position modified [sell 0.10 EURUSD 1.40532 sl: 1.40832 tp: 1.40232]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   order performed sell 0.10 at 1.40532 [#4710 sell 0.10 EURUSD at 1.40532]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal performed [#4710 sell 0.10 EURUSD at 1.40532]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal #4710 sell 0.10 EURUSD at 1.40532 done (based on order #4710)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   exchange sell 0.10 EURUSD at 1.40532 (1.40532 / 1.40542 / 1.40532)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   order performed buy 0.10 at 1.40543 [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal performed [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal #4709 buy 0.10 EURUSD at 1.40543 done (based on order #4709)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   take profit triggered sell 0.10 EURUSD 1.40843 sl: 1.41143 tp: 1.40543 [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   position modified [sell 0.10 EURUSD 1.40843 sl: 1.41143 tp: 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   order performed sell 0.10 at 1.40843 [#4708 sell 0.10 EURUSD at 1.40843]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   deal performed [#4708 sell 0.10 EURUSD at 1.40843]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   deal #4708 sell 0.10 EURUSD at 1.40843 done (based on order #4708)
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   exchange sell 0.10 EURUSD at 1.40843 (1.40843 / 1.40852 / 1.40843)
...

何が問題なのでしょうか?(当時は預金の8割が無料だった)。

 
Forux: ある地点で原因不明のテストをすると、「無効な停止位置」というエラーが表示されるが、停止位置は正しいという問題に遭遇した。

結局、こうなりました(2010.05.01開始)。

何が問題なのでしょうか?(当時はデポジットの8割が無料だった)。

位置修正に対応したエラーメッセージが ポップアップ表示されます。同時に、SL/TPレベルの現在値からの許容距離のチェックもコード上ではありません。現在の市場価格が、サーバーが許容するよりも短い距離でslやtpのレベルに接近することがあります。ORDER_STOPS_LEVEL ハンドブックを見る
 
Yedelkin:
位置修正に対応したエラーメッセージが ポップアップ表示されます。このコードでは、SL/TPレベルの現在値からの許容距離をチェックしません。2つの取引要求を 処理している間に、現在の市場価格がサーバーが許容する距離よりもSLまたはTPレベルに近づいたということが起こり得ます。ORDER_STOPS_LEVEL ハンドブックを見る

確認するためのコードに変更を加えた。

price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print(" --- Can not modify order --- error = " + GetLastError() + " order = " + order + " price = " + price);

その結果、エラーラインは変化しなかった(つまり価格が変わらなかった)。そして、おそらくそれはできなかった、それは分、アルパリの歴史(98%の歴史の品質)で2年半のテストです。

それ以前も同じようなことが起きていましたが、エラーは出ていなかったので、MetaTrader自体のエラーのように見えます。

 
Forux:確認するためのコードに変更を加えた。
さて、許容範囲のインデントも確認しましたか?
 
Yedelkin:
Ну а проверку на допустимый отступ тоже сделали?
Yedelkin
:

許容インデント量も確認されましたか?

試験における許容距離は0.そして価格は変わっておらず、エラー後は修正前の注文が作成された時の価格と同じです。

price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print("SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == " + SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL));
Print(" --- Can not modify order --- error = " + GetLastError() + " isBuy = " + isBuy + " order = " + order +  " price = " + price);

ログ

2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.41795
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 0
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
 
Forux: そして、価格は変わっておらず、エラー後は修正前の注文作成時の価格と同じです。

価格自体は(一般的に)当初はサーバーが現在許容しているレベルよりも近いかもしれません。したがって、そのような状態を常に確認することが望ましい。

Forux :テストでの許容距離は0です。

そう、この場合、インデントをチェックしても問題が解決しないことが、これではっきりしました。売りポジションのSL/TPレベルは、Bid価格に基づいて設定されると正しく理解していましたか?

 
Yedelkin:

価格自体は(一般的に)当初はサーバーが現在許容しているレベルよりも近いかもしれません。したがって、そのような状態を常に確認することが望ましい。

そう、この場合、インデントをチェックしても問題が解決しないことは、これで明らかです。売りポジションのSL/TPレベルは、Bid価格に基づいて設定されるという理解で合っていましたか?

はい、そしてエントリーとエグジットは、注文の種類によって、AskまたはBidのどちらかになります。
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Forux: はい、そしてエントリーとエグジットは、注文の種類によって、ascまたはbidで行われます。
売りポジション のSL/TPレベルは、Bid価格に基づいて 設定されるというのは正しい理解でしょうか?難しければ、問題箇所の現在のAsk, Bid, SL & TPをプリントアウトする。
 
Yedelkin:
売りポジション のSL/TPレベルは、Bid価格に基づいて 設定されるというのは正しい理解でしょうか?難しければ、問題箇所の現在のAsk, Bid, SL & TPをプリントアウトする。
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.41795
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   TP == 1.41495
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   SL == 1.42095
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   BID == 1.41795
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   ASK == 1.42399
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 0
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
質問を削除しました。(まあ、見開きもだけどねo_o)。
 

こんにちは!以前はMT-5のプログラムはなかったのですが、今は「シグナル」のコーナーで教えてくれるようになりました。

情報は必要ない。モバイルインターネットを利用しており、Mbごとに料金を支払っています。

そして、これらの信号により、インターネットの消費量が3〜4倍になったのです。

質問:これらの信号を受信するものとしないものをどのように設定するのですか?私はどのシグナルも購読していません。

理由: