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

 

そして、ここで面白いことに気づいたのですが、私はこの違いを気にしていなかったのです。

mql4では、この文字列の加算を StringConcatenate()関数で書くと、次のようになります。

eStr+=StringConcatenate(i,": ",eArray[i],", ");

で、mql5では単に

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
もしかしたら、私が間違って使っていないのかもしれませんが......。
 
Alexey Viktorov:

MQL5とMQL4では動作が異なるため、この関数の使用はお勧めしません。その結果、MQL5に切り替えたときにわかりにくいかもしれません


でも、もしかしたら私が間違っているかもしれない...。

mql4

mql5

このように、mql5は単純な文字列の足し算と非常によく似ています。

また、型変換はこの関数の中で行われるので、余計な心配はありません。

はい、以前から議論されていたことです。

StringAdd() , StringConcatenate() の3つのオプションとプラス。

プラスはコストが安い。

 
ANDREY:

なぜ1.6251は iと 同様に明示的に 文字列にキャストできないのでしょうか?より短く、計算資源を節約できる......そんな気がします。

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

なぜなら、そのような変換は最大16文字(私の脳が完全に乾いていなければ)までの値を与えることができるからです。また、DoubleToString()は、指定された小数点 以下の桁数に文字列を「切り詰める」。整数のiはどう転んでも整数のままです。

 
Alekseu Fedotov:

はい、一度議論されたので、私はそれを探すことはありません。

StringAdd() , StringConcatenate() の3つのオプションとプラス。

プラスはコストが安い。

でも、そんな些細な矛盾をつつくのは賛成できません。
 
TrederMT5:

コードを変更しても、同じ場所で配列が範囲外 になってしまいます。

配列にNがあるかどうかチェックする
double price[N];

は常に有効な値を取るのか?
 

Print()で、値が変化したときに一度だけ表示させる方法を教えてください。

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

Print()で値が変化したときに一度だけ表示する方法を教えてください。

カウンターを設定する

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               i++;
               symbol=ChartSymbol(currChart); 
               if(i==1) Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);
        }
 
Vitaly Muzichenko:

メーターをセットする

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

メーターをセットする

動作しない(
 
MakarFX:

Print() で、値が変化したときに一度だけ表示させる方法を教えてください。

ブーリアンオプションの方が好きです

 if(Work==false) // Критическая ошибка
     {
      if(AlertWork==false)   // Если Алерта еще не было
        {  Alert("Critical error. The expert Advisor doesn't work."); AlertWork=true; }
      return;
     }