"ダミー "からの質問 - ページ 38

 

といった具合に。始まるぞ!1年も経っていないのに。決心したんだ!MQL5のドキュメントを確認しました。最初はとても小さなことから始めました。ある指標のコードを最小化し、その構造と動作を単純化して理解しようとしたのです。その後、意識が朦朧としてきました。

まず、フラクタルを掘ってみました。思いのほか小さく、とてもシンプルに見えました。このコードをあるプログラムから別のプログラムへドラッグするのは合理的ではない、このインジケータを呼び出してコピーし、すぐに計算できるバッファの値を使うべきだ、と論理的に推論しました。方向性が間違っていなければ、標準に近いステップに運ばれて、iFractalsで例題("ちゃんとできたかな?"。(c)).コードを極力減らし、不要なもの、慣例的に不要なものをすべてクリアし、本質だけを残しました。そして、何を見つけたか?インジケーター呼び出しのコードは、サイズや読みやす さの点で、インジケーター自体のオリジナルコードよりコンパクトではありません。

質問です。

1.iFractalsの意味は何ですか?

2.どうしちゃったんだろう?

ありがとうございます。

追伸:それとも、セカンドコードの量にメリットがない特殊なケースなのでしょうか?

 
x100intraday:

2.どうしちゃったんだろう?

ここは精神科医のためのフォーラムではなく、MQLプログラマーのためのフォーラムです。普通、他人のゴキブリをつつくようなことはしませんよね。

もっと具体的に質問してください。
 

のことなんです。

生と死の...

タイムフレームのオープン[15625]バーH1の値を取得するための非犯罪的な方法は何ですか?

どんなに頑張っても...。いろいろ試したから、誰にもわからないけど...。3行のコードなんだけど...。が、どの...右右エラーを出さないようにするため

 
BaTTLeBLooM:

のことなんです。

生と死の...

H1タイムフレームのオープン[15625]バーの値を取得するためにどのような非犯罪的な方法

頑張ってクリティカルエラーを出したのに...。いろいろ試したから、誰にもわからないけど...。3行のコードなんだけど...。が、どの...右右エラーを出さないようにするため


コードを教えてください。

 
Renat:

コードを教えてください。

これは

double MTime ( int mode )
{

double iOpen_min [], iOpen_hour [], iOpen_4hour [];

ArraySetAsSeries ( iOpen_min, true );
ArraySetAsSeries ( iOpen_hour, true );
ArraySetAsSeries ( iOpen_4hour, true );
int rates_open_min, rates_open_hour, rates_open_4hour;
int err = 0;
為さる
{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
rates_open_4hour = CopyOpen ( NULL,PERIOD_H4, 0, 10000, iOpen_4hour );
err ++;
}
while ( ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err < 10 );

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hour
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 Hour
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // 日数
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // 週間
double 月 = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // 月
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // 半年間

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3年間

最後の演算子の最後の行に、必ずクリティカルエラーがある...。Expert AdvisorはStrategy Testerで取引を開始しても、1年半ほど稼働させると、エラーが発生してクラッシュすることがある

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
BaTTLeBLooM:

の場合、クリティカルエラーは アレイの限界を超えています。

どうにかして、これを試してみてください。

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

critical error- exceeding array limits.

どうにかして、この方法でやってみよう。

これでは問題の本質が変わらない...。さらにデータをコピーしない場合は...。Expert Advisorが以前のようにエラーにならずに取引されない...。

問題は、そもそもなぜこのような事態が起こるのか、歴史が巨大であれば......。で、使えない...。

 
Renat:

コードをご記入ください。

まあ、答えがないので、値が1つしかないので、手動で ))) を入力します
 
BaTTLeBLooM:
まあ、答えが出ないので、値が1つしかないので、手動で )))) を入力することにします。

コードにチェックが入っていないのでは?では、何がしたいのですか?

 
BaTTLeBLooM:

これでも問題は変わらないのですが...。さらにデータをコピーしなければ...。Expert Advisorが以前のようにエラーにならずに取引されない...。

問題は、履歴が膨大なのに、なぜこのような状況が全く発生しないのか...です。で、使えない...。

データはコピーされますが、一回でコピーできるとは限りません・・・そして重大なエラーの 後、Expert Advisorは動作しなくなります。

while( ...rates_open_hour <= 0 // その時点で利用可能なデータ量のみがコピーされ、配列はそれぞれ15625より小さくなる可能性がある。


マニュアルを読んでいないために起こる事態です :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5