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

 

いや、ずっと鳴ってるわけじゃなくて、>=の時に「配列が範囲外です」となるんです。なぜ?

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[])
  {
//---
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3)
           {
            BufferUP[i]=low[i]-10*Point;// в этой строке array out of range in 'a1.mq4' (75,28)

            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
volyal:
ありがとうございます。Just>=は不可能です、一定の信号が発生します、最初の日付の後、時間範囲を設定する必要があります。設定方法は?

ということで、質問と回答の後編です。

シグナル(アラート)が発動したとき、すでにシグナルが適用されていることを修正する必要があるため、追加条件が必要です。

 {
//---
   static bool alerton=true;
   A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1)
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--)
        {
         if(alerton)
           {
            if(A>B)
              {
               if((TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3))
                 {
                  BufferUP[i]=low[i]-10*Point;
                  Alert("__",TimeCurrent());
                  alerton = false;
                 }
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

あなたのコードでは、アラートのトリガーのための明確な条件を持っています。 通常、指標は、バーごとに1つの信号を作るように要求され、その後、アラートのトリガーの時間を格納する変数にバインドする必要があります、すなわち、私は話している

staticdatetime alerton=0;

すぐに使える例を検索してください、これで理解できると思います。

 
Aleksey Vyazmikin:

多くの信号が一度に同じになる場合は、それらをグループ化して1つの信号として再生します。あるいは、信号の種類ごとにアレイ状に集めて、ゆっくり再生する :)

配列にグループ化し、別のスクリプトで再生する - これは非常に明確で、あなたの最初のヒントに対応しています。

しかし、それをグループ化して1つのものとして再生することは、私にはよく理解できません。1つのオーディオファイルとして?

例えば、どのようにグループ化するか

if(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("Period. "です。wav");
}.?


PlaySound("Symbol Sobitie1 Period.wav"); のように?この場合、ファイル数 Symbol * Sobitie * Period=3*10*7=210 となる。それはやりすぎだ)。

また、再生するためのシグナルは、異なるTFの指標から得られます。それをどう受け止めるかは、まだわかりません。

 
Algus:

配列に集めて、別のスクリプトで再生する - 最初のヒントによると、それは非常に明確です。

しかし、グループ化して一体となってプレイするというのは、私にはよく理解できません。1つのオーディオファイルとして?

例えば、どのようにグループ化するか

if(Sobitie_1)

{
PlaySound("Symbol.wav")。
PlaySound("Sobitie1.wav")。
PlaySound("Period.wav")。
}?


As PlaySound("Symbol Sobitie1 Period.wav");?この場合、ファイル数 Symbol * Sobitie * Period=3*10*7=210 となる。多いな...)と思いました。

また、再生するためのシグナルは、異なるTFのインジケーターから送られてきます。まだどう受け止めればいいのかわからない。

私は信号が来る頻度について話していた、私はあなたが同じと同じ音を持っていない理解として、音を再生しながら、バッファに蓄積されている(グラフィカルに蓄積することができます)キューを再生した後、キューを分析し、ファイルを再生する時に来て、同じ音を持っているそれらの音を破棄、すなわち、自分自身で新しい情報を負担しないことです。私はあなたのメロフォンの詳細を知らない :).

 

こんにちは。

この誤解を解くため、よろしくお願いします。

ポジションを 開く条件を設定しました。

if(MathAbs(WPR1)<20.0)
        {
         if(MathAbs(WPR14)>44.0 && MathAbs(WPR14)<60.0 && op0<cl1) 
{ps2=true;ps1=false;ps3=false;ps4=false;ps5=false;ps6=false;ps7=false;ps8=false;Alert("условие ps2"); OpenSell();}
        }

そして、国旗ps 2の位置が1つではなく、国旗ps 2とps3の 2つが開いています。 そして、何をやっても何も変わりません。アラートであらゆる状況を確認したが、何もなかった。どうしたんだ?フラグが異なるレベルのTPを設定し、何も問題はないようです。しかし、いずれにせよ、私は余分なポジションを必要としないのです。

ありがとうございます。

 
novichok2018:

こんにちは。

この誤解を解くため、よろしくお願いします。

ポジションを 開く条件を設定しました。

そして、国旗ps 2の位置が1つではなく、国旗ps 2とps3の 2つが開いています。 そして、何をやっても何も変わりません。アラートであらゆる状況を確認したが、何もなかった。どうしたんだ?フラグが異なるレベルのTPを設定し、何も問題はないようです。しかし、いずれにせよ、私は余分なポジションを必要としないのです。

ありがとうございます。

なお、ログには、最初にps 3を開き、次にps 2を開くと書かれています。

 
novichok2018:

こんにちは。

この誤解を解くため、よろしくお願いします。

ポジションを 開く条件を設定しました。

そして、国旗ps 2の位置が1つではなく、国旗ps 2とps3の 2つが開いています。 そして、何をやっても何も変わりません。アラートであらゆる状況を確認したが、何もなかった。どうしたんだ?フラグが異なるレベルのTPを設定し、何も問題はないようです。しかし、いずれにせよ、私は余分なポジションを必要としないのです。

ありがとうございます。

ヴォヴォーチカが学校から帰ってくる。とパパが聞く。

- 今日は何点だった?

- 理科の成績は「D」でした。

- なぜ?

- 先生が鳥の尾を見せて、何の鳥か当てなさいというのですが...。

このパパは学校に行って、教室のドアを開けて、そこにお尻を向けています。

- 一体誰が...。

...先生に聞く...

- 自分で推測してください。


これはまさにあなたのコードです・・・))))

 
Alexey Viktorov:

ボボチカが学校から帰ってくる。とパパが聞く。

- 今日は何点だった?

- 理科の成績は「D」でした。

- なぜ?

- 先生が鳥の尾を見せて、何の鳥か当てなさいというのですが...。

このパパは学校に行って、教室のドアを開けて、そこにお尻を向けています。

- 一体誰が...。

...先生に聞く...

- 自分で推測してください。


まさにあなたのコードですね... )))

小学5年生のリョーシェンカは、最初の授業に手伝いに来るのではなく、羽目を外すために来るのだ。

まさにあなたの答えです。

 
novichok2018:

なお、ログブックには、まずps3を 開き、次にps 2を開くと書いてあります。

それだ、わかったぞ。単純に、8ではなくps8という 条件のアラートの中に3があったということです。そして、コンディション8はコンディション2よりも幅が広く、ライン上にも高い位置にあります。修正して絞り込み、すべてOK。

でも、尻尾を振ってはいけませんよ、このスレは初心者のためのものなんですから。ディテールのない本当の専門家は、似非ツッコミを誇示するくらいなら、おおよそどこが間違いなのか理解するか、少なくとも誘導尋問をすべきだし、そうでなければ全く答えないはずである。

 
Aleksey Vyazmikin:

私は信号が来る頻度について話していた、すなわち、私はあなたが同じと同じ音を持っていない理解として、音を再生しながら、バッファに蓄積されている(あなたが蓄積グラフィックでできる)キューを再生した後、キューを分析し、ファイルを再生時に来て、同じ音を持っているそれらの音を破棄、すなわち、新しい情報を運ぶことはありません。どんなメロフォンがあるのか、詳しくは知らないのですが......。)

立つインジケーターがあり、すべての作業TFと通貨があります。私は2-3種類の商品でイントラデイ、ほぼスキャルピングで仕事をしています。イベントを見逃さないようにサウンドアラートを使い、一日の終わりに目が落ちないようにしています。

実際、活動の中でWindowsを取り上げた指標は10〜14個あります。これは、ターミナルやそのプログラミングにとって簡単な作業ではありません。

こんな「音楽」があるんだ)。