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

 

バーの始値を 正しく取得する方法と、始値の取得に失敗した場合の終了方法について教えてください。

いくつかの選択肢をスケッチしてみた。しかし、もしかしたらもっと良い、正しいコードがあるかもしれません。

   if(iOpen(Symbol(),Period(),0)==0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }
  if(iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     } 
  if(iOpen(Symbol(),Period(),0)==0 && iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0 && iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }     
 
ilvic:

バーの始値を 正しく取得する方法と、始値の取得に失敗した場合の終了方法について教えてください。

いくつかの選択肢をスケッチしてみた。しかし、もしかしたらもっと良い、正しいコードがあるかもしれません。

iXXXX関数は、ループを使わず、他のiXXXX関数を呼び出すことなく、一回限りのリクエストを実行する場合にのみ意味を持ちます。

始値を一度だけ取得する必要がある場合は、iOpenの ヘルプをご覧ください。

戻り値

エラーの場合は*** 0となります。

そこで、価格を照会し、それがゼロかどうかをチェックする必要があります。ゼロでなければ、価格を受信し、ゼロであればエラーとなります。

double open=iOpen(Symbol(),Period(),0);
if(open==0.0)
   retutn;
 
コンパイラがエラーを発生させないように、グリッド(#CL)でパラメータ9を挿入する方法を教えていただけませんか?
enum Symboll_
  {
   AUDUSD=0,
   NZDUSD=1,
   USDCAD=2,
   USDCHF=3,
   USDJPY=4,
   EURJPY=5,
   EURUSD=6,
   GBPUSD=7,
   #CL   =8
  };
 
Vladimir Karputov:

iXXXX関数は、サイクルなしで、他のiXXXX関数を呼び出すことなく、1回限りのリクエストを実行する場合にのみ意味を持ちます。

始値を一度だけ取得する必要がある場合は、iOpenの ヘルプを参照してください。

戻り値

エラーの場合は*** 0となります。

そこで、価格を問い合わせ、それがゼロかどうかをチェックする必要があります。ゼロでなければ価格を受信し、ゼロであればエラーとなります。

ありがとうございます。もう1つ質問です。このコードでは括弧を使うべきでしょうか、それとも違いはないのでしょうか?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
     {
      return;
     }
 
xxz:
コンパイラがエラーを発生させないように、グリッド(#CL)で9パラメータを挿入する方法を教えていただけませんか?

こんな感じ。

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
 
ilvic:

ありがとうございます。もう1つ質問です。このコードではブラケットを使用すべきでしょうか、それとも違いはないのでしょうか?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
      return;

してくれるでしょう。一般的に、ブラケット(括弧)はアクションのグループのために意図されています。アクションが1つしかなければ、何の役にも立ちません。

int n;
double y;
if(бла-бла-бла)
         n = бла-бла;
else
  {
         n = бла-бла;
         y = бла;
  )
 
Vladimir Karputov:

これでよしとする。

ありがとうございました。

だって、こうやってやってみたら、うまくいかなかったんだもん。

  enum  Symboll_
  {
   SIM_0,  //AUDUSD
   SIM_1,  //NZDUSD
   SIM_2,  //USDCAD
   SIM_3,  //USDCHF
   SIM_4,  //USDJPY
   SIM_5,  //EURJPY
   SIM_6,  //EURUSD
   SIM_7   //#CL
  };  
 
xxz:

ありがとうございました。

だって、こうやってやってみたら、うまくいかなかったんだもん。

あるいはこんな感じ。

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
   string my_symbol[9]=
     {
      "AUDUSD",
      "NZDUSD",
      "USDCAD",
      "USDCHF",
      "USDJPY",
      "EURJPY",
      "EURUSD",
      "GBPUSD",
      "#CL"
     };
 
Vladimir Karputov:

またはこれ

それだ!

それらのバリエーションでは、シリアルナンバーだけか、SIM_1,...などで出て きました。

 
多通貨EAを テストする際、ロットサイズに問題があります。0.03固定ですが、テスト中は0.1のボリュームで注文が表示されます。すぐにチャート上に失敗が表示される。私だけでしょうか?
理由: