MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1856

 

ひとことお願いします。質問で困っています。

iOpenは AskやBidにどのようにカウントされるのですか?

double DayOpenone = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 0), Digits);

double DayOpentwo = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 1), Digits); 

問題は、今日の始値と昨日の始値を比較すると、スプレッドのコロケーションが発生し、さらにコードに問題があるようです。iOpen 価格が正しくない 日があるため、バイまたはセルのみが取引されています。

 
Порт-моне тв iOpenは AskやBidにどのようにカウントされるのですか?

問題は、今日の建値と昨日の建値を比較するとスプレッドコロケーションが発生するようで、コードに問題が出てきます。iOpenの 価格が正しくない 日があるので、買いか売りしか取引できないのです。

チャートはBid価格に基づいています。

 

みんな、アドバイスをお願いします。

多通貨のEAを書いて いるのですが、注文を開始する以外はすべて計画通りに動きます。何が問題なのか、教えてください。

      if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         OrderSend("USDJPY", OP_BUY, 0.1, Bid1, 3, NormalizeDouble((Ask1+StopLoss*Point1),2), NormalizeDouble((Ask1-TakeProfit*Point1),2), NULL, 0, 0, 0);
        }

エラーは出ないが、注文が開けない

 
Sergey Dymov 多通貨のEAを書いて いるのですが、注文を開始する以外はすべて計画通りに動きます。何が問題なのか、教えてください。

エラーは出ないが、注文が開けない

オーダーセンド

戻り値

トレードサーバーが注文に割り当てたチケット番号、または失敗した場合は -1 を返します。 エラー情報を取得 するには、 GetLastError()呼び出す必要が あります。

コンパイラでも、Ordersendはチェックするように言われています。

購入はAskで行います。ただ、Bidでもスリッページがスプレッドと同等以上であれば動作する可能性があり、このバグを発見するのは難しいかもしれません。

 

多通貨EAを 開発中で、注文を開始する以外はすべて計画通りに動いています。エラーメッセージを探しています。

      if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         OrderSend("USDJPY", OP_BUY, 0.1, Bid1, 3, NormalizeDouble((Ask1+StopLoss*Point1),2), NormalizeDouble((Ask1-TakeProfit*Point1),2), NULL, 0, 0, 0);
        }

エラーが出るわけでもなく、ただ注文が開けないだけです。

エラーの場所に気づきましたか?

       if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         int nDigits = (int)MarketInfo("USDJPY", MODE_DIGITS);
         OrderSend("USDJPY", OP_SELL, 0.1, NormalizeDouble(Bid1, nDigits), 3, NormalizeDouble((Ask1-StopLoss*Point1), nDigits), NormalizeDouble((Ask1+TakeProfit*Point1), nDigits), NULL, magic, 0, 0);
        }

https://docs.mql4.com/ru/trading/ordersend

Примечание

成行注文(OP_SELLまたはOP_BUY)を発注する場合、最新のBid(売り)またはAsk(買い)の価格のみを開始価格として使用することができます。現在の金融商品とは異なる金融商品に対して操作を行う場合、その金融商品の最新の相場を取得するには、MarketInfo()関数を MODE_BIDまたはMODE_ASKパラメータで使用する必要があります。

推定価格や正規化されていない価格を使用 することはできません。要求した始値が価格フローにない場合、または要求した価格が小数点 以下の桁数で正規化されて いない場合、エラー129(ERR_INVALID_PRICE)が発生します。要求された始値が著しく古い場合、slimageパラメータの値に関係なく、エラー138(ERR_REQUOTE)が発生します。一方、要求された価格が期限切れであっても、価格の流れの中に存在する場合、注文は現在の価格で、現在の価格が価格+スリッページの範囲に含まれる場合にのみ発注されます。

...

また、ロボットに固有の魔法を設定することも望ましい。

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderSend - Торговые функции - Справочник MQL4
 
Mihail Matkovskij #:

始値が価格フローにない場合、または要求された価格が 小数点以下の桁数によって正規化されて いない場合、

私の知る限り、AskとBidはすでに正規化されています。すでに同様の質問が出されており、矛盾はない。

ストップロスやプロフィットのマジやケタは適当かもしれないが、作者の意図は不明である。

 
Andrey Sokolov #:

私の知る限り、AskとBidはすでに正規化されています。すでに同様の質問が出されており、矛盾はない。

マジコンや損切り・利食いの桁に言及するのが適切なのかもしれないが、筆者の考えはわからない。

私の知る限り、ドキュメントには一言も書かれていない。だから、予防線を張っておいたほうがいい。悪化させることはないでしょう。

SLとTPについては、計算されて います。従って、桁数に応じて正規化 する必要があります

 

こんにちは、友人たち。

 
ストーリーの利益が青丸で囲まれていますが、これは手数料とスワップが含まれているか教えてください。
 

こんにちは。

また、OpenOrderPrice() のアナログは最初の注文の価格も 表示するため、2つ目以降の注文の開始時刻を 取得するにはどうすればよいでしょうか。