エラー、バグ、質問 - ページ 595

 
-Alexey-:
Cに転送してみてください - エラーは自分で見つけることができます。また、一般的に、このようなプロジェクトでは、将来的に問題を起こさないためには、それしか書く方法がないのです。残念ながら、私自身は理解するのが遅すぎたので、今、書き直しています :) 。
おそらく近い将来、C++を勉強することになるでしょう。この半年間、私の頭の中はMQL4、MQL5、HTML、CSS、XMLでいっぱいでした。そして今は、JavaScriptも勉強しています。C++はまだ十分なスペースと時間がないので、本当はやりたいのですが))。
 

TF M15 で動作するインジケータがあり、コード内でインジケータは TF M1 から時系列MqlRates を要求しています。

M1データの準備ができておらず、初回実行時にロードすることができないため、インジケータはすぐに起動しない。

その結果、偽のパスが発生し、インジケータはすでに計算されており、再計算する必要がないと考えて、データにアクセスしなくなりました。

今、私は2通りの方法でインジケータを動かしています。

  1. M15でインジケータを起動し、インジケータを削除して再度起動する(動作する)。
  2. M15でインジケータを実行する前に、M1でチャートを開き、M15でインジケータを実行します(初回はすべてうまくいきます)。

そこで、別のTFに必要なデータの正しいチェックと読み込みを自動化 するにはどうしたらいいか?

 
Urain:

そこで、もう一方のTFから必要なデータをチェックし、読み込むことを自動化 するにはどうしたらいいか?

同じような状況で、OnCalculateで 初期化処理を制御しています。初期化中にエラーが発生した場合は、prev_calculated=0を返し、すべてが正しくカウントされるまで続けます。
 
Lizar:
同じような状況で、OnCalculateで初期化処理を制御しています。初期化中にエラーが発生した場合は、prev_calculated=0を返して、すべてが正しく計算されるまでそれを続けます。

prev_calculatedには何も代入できませんが、アイデアは良いです。この変数はconstとして宣言されていますが、別の同様の変数を持つことができると理解しています。

データがない場合、どうすればいいのでしょうか。

データのリクエストそのものが、ローカルデータベースからのダウンロードやアップロードにつながらないことは理解していますが、まさにこれが問題なのです。

 
Urain:

prev_calculatedはconstで宣言されているので代入はできませんが、似たような変数をもう一つ持つことができるということですね。

代入の問題ではなく、OnCalculatedが返す数値の問題です。 データが準備できていなければ、OnCalculatedから0を 返します。
BarsCalculatedの 例を見てください。 そうやって確認する必要があります。

一つ疑問が残る。データがない場合、どうすればいいのだろうか。

データがなくて表示されないのであれば、仕方がないですね。
必要であれば、タイマーでバッファを計算し、待つこともできます。
 
sergeev:

データの準備が出来ていない場合は、OnCalculatedから0を 返します。
BarsCalculatedの例を見てみましょう。

持っていないのに出てこないのであれば、やることはあまりないですね。
必要であれば、タイマーによる待ち受けや計算バッファを呼び出すことができます。

インジケーターをアンロードして 再起動するだけで、この場合、なぜかデータはすでにあるのですが、どうにもなりません。

あるいは、必要な M1 TF のチャートを開くと、M1 リクエストで隣接する M15 チャートのデータがすぐに用意されます。

 
Urain:

インジケーターをアンロードして 再起動するだけで、この場合、なぜかデータはすでに存在しているのですが、どうにもなりません。

または、必要なTFのチャートを開くと、隣のチャートのデータがすぐに用意されます。

今日は半日、インデックスと一緒に過ごしました。マルチカレンシー・マルチタイムがあった。

表示しないことの問題は、単にこのTFに存在しないバーから値を取得しようとしていることです。

そのため、バーを取る前に確認する必要があります - SeriesInfoInteger。
荷降ろし不要。どうせ計算部分はアンロードしないのだから(今日はこの件でトピックを上げただけ)。
 
sergeev:

今日も半日、インデックスと格闘してきました。マルチカレンシー・マルチタイムがあった。

非表示の問題は、このTFに存在しないバーから値を取ろうとすることです。

そのため、バーを取る前に確認する必要があります - SeriesInfoInteger。

荷降ろし不要。どうせ計算部分はアンロードできないんだから(今日、この件でトピックを立てたばかりです)。

Mimeo、私は、TF M1の最初の日付を見つけ、この日付からM15のバーの計算を開始することを確認しました。TFはPERIOD_M 1に設定されています。

   timestart=(datetime)SeriesInfoInteger(_Symbol,TF,SERIES_FIRSTDATE);
   for(int i=prev>0?prev-1:0;i<rates_total-1;i++)
     {
      if(time[i]>timestart)
        {
         ... расчёт
        }
     }
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
Urain:

1. アイデアは良いのですが、prev_calculatedには何も代入できず、変数はconstとして宣言されていますが、別の類似の変数を持つことができると理解しています。

2.一つ疑問が残る。データがない場合、どうすればいいのか?

3.データリクエスト自体は、ローカルデータベースからのデータのダウンロードやアップロードを引き起こさないことは理解していますが、まさにこれが問題なのです。

  1. OnCalculateから return 0、そしてprev_calculated=0という意味です。
  2. 再初期化のカウンターを設定しました。オーバーフロー時には、インジケーターを降ろす。
  3. SoruXXXで問題なかったです。郷土史がある場合は、1回目からでなくても、2回目、3回目からすべてカウントしています。Championship では、Expert Advisor が使用する「スパイ」は、1 分足の履歴のみをカウントし、H1 で機能します。といった具合に9組。ローカルヒストリーが全くない場合は、ポイント2が有効です。しかし、私の記憶では、履歴はサーバーからダウンロードしたものでした。
 
Urain:

データリクエスト自体は、ローカルデータベースからのデータのダウンロードやアップロードを引き起こさないことは理解していますが、まさにこれが問題なのです。

CopyXXXXのヘルプより。

エキスパートアドバイザーやスクリプトにデータを要求すると、端末にローカルにデータがない場合はサーバーからのダウンロードを 開始し、ローカル履歴からデータを構築できる場合は必要な時系列の構築を開始しますが、まだ準備が整っていません。この関数は、タイムアウト時に準備できるデータ量を返しますが、履歴のダウンロードは継続され、次の同様の要求ではより多くのデータが返されます。

Expert Advisorとスクリプトのみの話です。指標には当てはまらないのでしょうか?