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

 
barabashkakvn:
Market Watch」の配列番号か、現在の価格か?

Market Watchのシーケンス番号です。

SymbolInfoStringでシンボルの 文字列の説明を 取得する方法は理解できたのですが、数値がどこにもない(。

 
Crucian:

マーケットレビューに掲載されたシリアルナンバー。

ファースト

int  SymbolsTotal(
   bool  selected      // true – только символы в MarketWatch
   );

では

string  SymbolName(
   int   pos,          // номер в списке
   bool  selected      // true – только символы в MarketWatch
   );

で、SymbolName==あなたの シンボルとすると、その位置が わかります。

 
barabashkakvn:

ファースト

では

で、SymbolName==あなたの シンボルとすると、その位置が わかります。

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

しかし、なぜかうまくいかず、常にpos=0になってしまいます。たぶん、何か間違ったことをしているのだと思います。)

 
Crucian:

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

しかし、なぜかうまくいかず、rosはいつも=0です。たぶん、何か間違ったことをしているのだと思います。)

SymbolNameでは posを渡し、パラメータを繋げた場合の出力を確認します。
 
Crucian:

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

しかし、なぜかうまくいかず、rosはいつも=0です。たぶん、何か間違ったことをしているのだと思います。)

//+------------------------------------------------------------------+
   int PositionsSymbolInList(string sy) {
      for(int i=0; i<SymbolsTotal(false); i++) {
         string symbol_name=SymbolName(i,false);
         if(sy==symbol_name) return i;
         }
      return -1;
   }
//+------------------------------------------------------------------+
 
Crucian:

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

しかし、なぜかうまくいかず、rosは常に=0です。たぶん、何か間違ったことをしているのだと思います。)

//+------------------------------------------------------------------+
int IndexSymbolInMarketWatch(string sy)
  {
   for(int i=SymbolsTotal(true)-1; i>=0; i--)
     {
      if(SymbolName(i,true)==sy)
         return (i);
     }
   return (-1);
  }
//+------------------------------------------------------------------+
 
artmedia70:

ありがとうございます、あなたのコードは動作しますが、paladin800のコードは動作しません(。

しかし、数字には順序がない。例えば、EUR=21 , GBP=28, CHF=36, JPY=40, EUR/JPY=16などです。こうあるべき?

 
Crucian:

ありがとうございます!あなたのコードは動作しますが、paladin800のコードはなぜか動作しません(。

しかし、数字には順序がない。例えば、EUR=21 , GBP=28, CHF=36, JPY=40, EUR/JPY=16などです。こんなんでいいのか?

SymbolsTotal(false)

これは、利用可能なシンボルのリストで検索し、もしtrueなら、Market Watchで選択されたものだけを検索するものです。

利用可能なシンボルリストに配置された順序は、インデックスが返される順序である。一方、MarketWatchのリストから取得する場合、インデックスはMarket Watchのシンボルのソート(マウスでドラッグ&ドロップできる)に依存するため、必ずしも便利ではない。

 

もう1つ質問です。

MetaEditorをコンパイルすると、警告が表示されるようになりました。

OrderSend の戻り値を確認する必要がある Bollinger_Bands_strategy_4.mq5 690 7

リクエストを送信した後、結果を確認します。

           OrderSend(mrequest,mresult);
            if(mresult.retcode==10009 || mresult.retcode==10008)
              { 
             
               Print("Set pending order SellStop"  );
               ModificationPosition=0;
            }else
              {
               Print(ResultRetcodeDescription(mresult.retcode));
               return;
              }

それとも、これだけでは不十分なのでしょうか? MetaEditorは何を求めているのでしょうか?

 
Crucian:

もう1つ質問です。

MetaEditorのコンパイル時に警告が表示されるようになった。

OrderSend の戻り値を確認する必要がある Bollinger_Bands_strategy_4.mq5 690 7
(OrderSend "の戻り値を確認する必要があります。)

クエリ送信後に結果を確認しています。

それとも、それだけでは不十分なのでしょうか? MetaEditorは何を求めているのでしょうか?

if(OrderSend(...))

または

bool res=OrderSend(...);

いや、私の勘違いです。もう寝てるんですけどね。それは、授業の機能からくる癖で、私です...。mql4用とはいえ、Fiveのように......どうなんでしょう。:)

int ticket=OrderSend()
理由: