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

 

みなさん、こんにちは。

アドバイスや解決策を与える、またはどこを読めばいいのかつっこむ。

問題解決:iCustom()呼び出し時のエラー処理について...

// MQL4
void OnTick()
{
....
   ResetLastError();
   double val=iCustom(NULL,0,INDUK_NAME,..., i);
   if ((nErr=GetLastError())>0)
   {
      Print("Error in ",__FUNCTION__," code=",nErr);
      ExpertRemove();
      return;
   }
...
}

テスターでEAをデバッグ する際、「iCustom」が「array out of range」というメッセージでクラッシュした場合、このコード構成は機能しない。

 
アレイオーバーランは重大なエラーで、この後、プログラムの実行は 停止し、それ以降のコードは実行されません。そのため、エラーハンドラが動作しないのです。そして、この場合、エラーコードは必要ありません。何が原因でクラッシュしたのか、ログに白黒で書かれています。そして、それが起こったラインと位置まで指定した。
 
Sergei Vladimirov:
アレイオーバーランは重大なエラーで、この後プログラムは 停止し、それ以上のコードは実行されません。そのため、エラーハンドラが動作しないのです。また、この場合、エラーコードは必要なく、何が原因でクラッシュしたのかがジャーナルに白黒書かれています。そして、それが起こったラインと位置まで指定した。

1.ログブックにエラーがあることは、致命的であることは承知しています

2.テスターでEAが止まらず、強制的にストップさせないといけないのが理解できないのですが?

重大なエラーが発生した場合に、Expert Advisor とユーザーとの対話を便利な方法で整理するための例外処理用の言語コンストラクトはありますか?

 
fromme2you:

1.ログブックにエラーがあることは、致命的であることは承知しています

2.テスターでEAが止まらず、強制的にストップさせなければならない理由がわからないのですが?

3.重大なエラーが発生した場合に、Expert Advisorとそのユーザーとの対話を便利な方法で整理するための例外処理用の言語コンストラクトはありますか?

Expert Advisorのコードに重大なエラー(0による除算、配列のオーバーランなど)が発生した場合、テスターは停止します。

テスターでも実際のコードでも、コードを止めないようにすることは、コードに適切なチェックを導入することで初めて可能になると思うのです。それは、必ずしも実現可能なことではありません。特に、他人のコードを使用する場合や、他人のコードを製品のサブルーチンとして貼り付ける場合は、このようなことが起こり得ます。

もう一つの厄介な方法は、プログラムでログファイルを読み込むことである。

 
Yuri Evseenkov:

テスターは、アドバイザー自体のコードに致命的なエラー(0による除算や配列の超過など)が発生すると停止します...。

もう一つの厄介な方法は、プログラムでログを読み込むことです。

なるほど、返信ありがとうございます。

もう一つの質問:MT4開発者とMQLコード実行環境に、私の例のような例外処理言語やそれに類するものを開発するために、どのような配慮と努力をさせることができるでしょうか?

 
fromme2you:

なるほど、回答ありがとうございました。

もう一つの質問ですが、どうすればMT4やMQLのコード実行環境の開発者に、私の例やそれに近い意味の例外処理用言語の開発に心血を注いでもらえるのでしょうか。

servesdeskに連絡する、フォーラムにスレッド/アンケートを作成する。

MT4が埋もれたのは、そう昔の話ではない。今、その流れは、反転しないまでも、少なくとも最近、プラットフォームと言語が大きくグレードアップしています。

 
Yuri Evseenkov:

servesdeskに連絡する、フォーラムでトピック/アンケートを作成する。

MT4が埋もれつつあるのは、それほど昔の話ではない。今、その流れは、反転しないまでも、少なくとも最近、プラットフォームと言語が大幅にグレードアップしています。

2009年に初めて埋められた

 

こんにちは。詳しい方、この問題を解決する方法をアドバイスください。ある時間、例えば01:00に最新の50本のバーを分析することによって、バーのオープンプライスを 見つける必要があります。mql5でこの作業を行うにはどうしたらいいのかわからない。


現在の日付+必要な時間を計算し、24時間を足すことでも、この方法はmql4で動作しました。

私が理解した限りでは、時間出力を持つ特殊な構造体があるのですが、なぜか使えません。

ご意見をお聞かせください。

どなたか、思考回路を理解するために、小さなコードを投げていただけるとありがたいです。
 
Alex:

こんにちは。詳しい方、この問題を解決する方法をアドバイスください。ある時間、例えば01:00に最新の50本のバーを分析することによって、バーのオープンプライスを 見つける必要があります。mql5でこの作業を行うにはどうしたらいいのかわからない。


現在の日付+必要な時間を計算し、24時間を足すことでも、この方法はmql4で動作しました。

私が理解した限りでは、時間出力を持つ特殊な構造体があるのですが、なぜか使えません。

回答ありがとうございました。

どなたか、思考回路を理解するためのコードを投げていただけるとありがたいのですが。
インジケータまたはExpert Advisor/スクリプトで?
 
こんにちは、質問です。mt5でordersendasyncを 保留中の注文に使用した場合、どのように動作するのでしょうか?例えば、返事を待たずに買いの逆指値を送信し、注文がトリガーされると、サーバーからの買い注文の返事を待つのでしょうか。
理由: