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

 
WindSW:
Expert Advisorのメモリ占有量と再割り当てを確認する方法を教えてください。

Windowsのタスクマネージャーで十分なはずです。

こちらの 記事もご覧ください。

一般的には、Expert Advisorをスクリプトに分解し、すべての機能を動作させ、それらを山積みにします。

 
WindSW:

それなのに、なぜレベルがObjectCreateで作成されないのか、その理由がわからないのです。すべての関数が動作しますが、OBJ_TRENDオブジェクトが 作成されません。

グローバルレベルで定義された変数があります。

文字列 oRes、oSup、oPP、oRes1、oRes2、oRes3、oSup1、oSup2、oSup3、textPP、textR1、textR2、textR3、textS1、textS2、textS3。

レベルを作成するためのコード。

皆さん、整理してください。お願い

レベルは作成されますが、表示されないだけです)

座標-時間/価格を設定します。あちこちにゼロがありますね。

 
Dima_S:

レベルが作成され、あなただけが見ることができない)

座標-時間/価格を設定します。そこにはしっかりとゼロが設定されていますね。

バインディングのないオブジェクトを作り、それを修正する。これです

名前が正しくない(割り当てられていない)ため、オブジェクトは作成されません。(上記はすでに回答済み)。その結果、改造して見ることはできない。

 
fyords:

さて、グローバルレベルで変数を宣言したとすると、その変数に値を代入していますか?

そうでない場合、プログラムに対して「このような特性を持つオブジェクトを、このような名前で作ってください」と言っても、名前が与えられないという問題があります。だから、創らないんです。

ObjectCreateのコードで直接指定した方が簡単ではないでしょうか?

ありがとうございました。バージョン4ではオブジェクトの名前も 定義されているので、なぜかすぐには思いつかなかったのです。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

配列のオーバーフローエラーを修正することができません。88ページで書きました。Expert Advisor はしばらく動作してクラッシュします。正確には、Expert Advisorの最初から最後まで1パスで動作し、以下のループの2パス目で配列がオーバーフローして文字列が表示されるのです。

H=High[j]です。

void CreateLevels()
   {
      double High[];
      ArrayResize(High,0);
      ArraySetAsSeries(High,true);
      CopyHigh(_Symbol,_Period,0,Candle,High);
      ArrayResize(HBar,0);
      ArrayResize(HBar,1000);
      int countH=0;
      int f1;
      double H;
      for(int j=Nachalo;j<=Candle;j++)
         {
          //--- поиск макс -----------------------------------
          if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
            {
             f1=0;
             H=High[j];                                 // отметка текущего хая
             ...                                        // здесь обработка флага f1
             if(f1==0)                                  // если занесение хая в массив разрешено
               {
                HBar[countH][0]=High[j];
                countH++;
               }
            }
         }
   }

何より、High[]配列がオーバーフローするのが理解できないのですが、特定のハブの数が指定されているのでしょうか?また、H=High[j]; という文字列でターミナルがオーバーフローを示すのはなぜか?

どうか、正しく実装する方法を教えてください。High[]配列をnullにしたり、変数Hに特定のローソクの高値を他の方法で書き込むことは可能なのでしょうか?

 
WindSW:

この方法で試してみてください。

for(int j=Nachalo;j< Candle;j++)

基本:配列のインデックスは0から始まるので、Candle==100のとき、配列の 最後の要素は100ではなく99でインデックスされる。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Yedelkin:

この方法で試してみてください。

基本:配列のインデックスは0から始まるので、Candle==100のとき、配列の 最後の要素は100ではなく99でインデックスされる。

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

こんにちは!次のような問題が発生しました...。Expert Advisorを生成した...RTS指数先物で実行する。そしてそこでは、ロットが分数でない=マネーマネジメントが働かない、相場が10の倍数である=トレーリングストップが働かない。アドバイスお願いします。この問題を解決することは可能でしょうか?

iMaの値を10や5に丸める方法は知っていますが、最後の手段として、トレーリングストップを別に実行することを考えています。

 
oldiol: 私のEAは、端数ロット=マネーマネジメントが機能していない、10の倍数の相場=トレーリングストップが機能していない場合。アドバイスお願いします。この問題を解決することは可能でしょうか?

このツールには Volume_Step というプロパティがあります。分数でないボリュームに使えるかどうか見てみましょう。

10で割り切れる相場では、トレーリングストップのステップを同じにすればよいのです。

 
Yedelkin:

このツールには Volume_Step というプロパティがあります。分数でないボリュームに使えるかどうか見てみましょう。

また、10で割り切れる相場では、トレーリングストップのステップを同じにすればいいだけです。

ありがとうございました)試してみます。
理由: