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

 
azolotta:

ありがとう ございます!本当に問題が解決しました!!!

もしよろしければ、高値・安値が2つ並んで表示されるのではなく、変動(高値・安値・高値)を表示させるには、どのような構造を追加すればよいのか教えていただけませんか?前の配列要素が highなら、2回連続のhighは配列に含めず、lowを 待つ」というようなチェックが必要なのは理解できるのですが、どのようにすればいいのでしょうか?

すでに説明したとおりです。

 
DanilaMactep:

皆さん、こんにちは。チェックを入れたが、テストするのを忘れていた。今日、思い出して良かった・・・ここで、改造停止レベルのこのチェック

このチェックをテストすると、以下のスクリーンショットのようなエラーが表示されます。

そして、アドバイスを受けていて 面白いのは、このチェックのドミネーションに次のように1.5を加えたことです。


この追加では、以下のスクリーンショットのようなエラーが表示され、問題が解決されません。

この改造停止レベルのチェックがコメントアウトされていれば、エラーは発生しない。チェックのエラーは何ですか、アドバイスをお願いします。それがなければ、現実の世界で聖杯を起動することはできません - すぐに禁止されますL O_o

テストではなく、規定したところに間違いがあると思います

を削除し、さらに "*1,5 "を削除します。

if(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5)
if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5)
 
DanilaMactep:

皆さん、こんにちは。チェックを入れたが、テストするのを忘れていた。今日、思い出して良かった・・・ここで、改造停止レベルのこのチェック

このチェックをテストすると、以下のスクリーンショットのようなエラーが表示されます。

そして、アドバイスを受けていて 面白いのは、このチェックのドミネーションに以下のように1.5を足したことです。


この追加では、以下のスクリーンショットのようなエラーが表示され、問題が解決されません。

この改造停止レベルのチェックがコメントアウトされていれば、エラーは発生しない。チェックのエラーは何ですか、アドバイスをお願いします。それがなければ、現実の世界で聖杯を起動することはできません - すぐに禁止されますL O_o

ストップレベルを返すかどうか確認してください、0である ことが多いです。

   int    Stoplevel = (int)MarketInfo(Symbol(), MODE_STOPLEVEL);
   int    Spread = (int)MarketInfo(Symbol(), MODE_SPREAD);

   if (Stoplevel == 0) Stoplevel = 2 * Spread;

   

だから、こんな風に。

 
Alekseu Fedotov:

ストップレベルの 戻り値を確認すると、0であることが多い

こんな感じ。

そんなの必要ない、「ストパーレベル以下なら」だ。

 
DanilaMactep:

皆さん、こんにちは。

グロスミス...すぐには見抜けなかった。

if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  sl= MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5;//СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

if(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  tp= MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5;// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

DOTSであるべきだ。

 
azolotta:
ハイ/ローを2つ続けて表示するのではなく、可変にすること(ハイ/ロー/ハイ)

簡単な方法でできます。グローバル変数を 宣言し、イベントに応じて変数を変更する。

int direction=0;

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {


   for(n=0; n<=limit; n++)
     {
      if(direction>=0 && ((Close[n+1]>Open[n+1] && Open[n+2]>=Close[n+2]) || (Close[n+1]>Open[n+1] && Open[n+3]>Close[n+3])))
        {
         val_index=iLowest(NULL,0,MODE_LOW,3,n+1);
         myAZBuffer[n]=Low[val_index];
         ExtLowBuffer[n]=Low[val_index];
         direction=-1;
        }
      else
         if(direction<=0 && ((Open[n+1]>Close[n+1] && Close[n+2]>=Open[n+2]) || (Close[n+1]<Open[n+1] && Close[n+3]>Open[n+3])))
          {
            val_index=iHighest(NULL,0,MODE_HIGH,3,n+1);
            myAZBuffer[n]=High[val_index];
            ExtHighBuffer[n]=High[val_index];
            direction=1;
           }
      }
.......

インジケータでは、OnCalculate 関数とそのすべての変数を使用します。

そしてStartはすでに洒落にならない:)

 
Aleksei Stepanenko:

簡単な方法でできます。グローバル変数を 宣言し、イベントに応じて変数を変更する。

インジケータでは、OnCalculate関数とそのすべての変数を 使用します。

そしてStartは流行遅れ:)

ありがとうございます!カッコイイ方法ですね!(笑)

OnCalculateについては、私が参加することになりました))

 
Aleksei Stepanenko:

簡単な方法でできます。グローバル変数を 宣言し、イベントに応じて変数を変更する。

インジケータでは、OnCalculate関数とそのすべての変数を 使用します。

そしてStartはすでに洒落にならない:)

が機能しない場合、新しい高値/安値はそれらを考慮しません。
 

こんにちは。Expert Advisorでインジケータを呼び出すと、ボックス内にエラーが表示されます。 なぜ発生するのでしょうか?そして、常にではありません。で問題なく動作します。

ターミナルを使用すると、正常に動作します。


 
Sergey Fionin:

こんにちは。Expert Advisorでインジケータを呼び出すと、ボックス内にエラーが表示されます。 なぜ発生するのでしょうか?そして、常にではありません。で問題なく動作します。

ターミナルを使用すると、正常に動作します。


これは書き込み違反、システム書き込み禁止です。