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

 
OnBookEvent内部でのデバッグ時のブレークポイントが機能しない -BookEvent イベントが発生しない(サブスクリプションは存在する)。
 

インジケータコードに次のように記述します。

つまり、Period()はint型(この場合は0)を返しますが、ENUM_TIMEFRAMESを返さなければならないのです!同時に_Periodも正常に動作し、現在のタイムフレーム(この場合はPERIOD_H1)が含まれます。これは、Period()関数のヘルプに明記されているので、いずれにせよエラーとなります。

Возвращаемое значение

現在のチャートのタイムフレームの値を格納する変数_Periodの 内容。 ENUM_TIMEFRAMES列挙の 値のいずれかを 指定することができる。

 

MT5ビルドを経て、別ウィンドウになることでどのような利点があるのでしょうか?

 
Vasiliy Sokolov:

インジケーターのコードには、次のように書かれています。

つまり、Period()はint型(この場合は0)を返しますが、ENUM_TIMEFRAMESを返さなければならないのです!同時に_Periodも正常に動作し、現在のタイムフレーム(この場合はPERIOD_H1)が含まれます。これは、Period()関数のヘルプに明記されているため、いずれにしてもエラーとなります。

mql5ファイルがないとMT4と同じようにコンパイルされるのでは?
 
Vasiliy Sokolov:

インジケータコードに次のように記述します。

つまり、Period()はint型(この場合は0)を返しますが、ENUM_TIMEFRAMESを返さなければならないのです!同時に_Periodも正常に動作し、現在のタイムフレーム(この場合はPERIOD_H1)が含まれます。これは、Period()関数のヘルプに明記されているため、いずれにしてもエラーとなります。

tfをenum型として持っている。でも、そこにイントを書き込むんですね。enumの値も 書き込むように注意してください。
 
Artyom Trishkin:
Period() の戻り値はENUM_TIMEFRAMES 型 です。
 
Комбинатор:
Period() の戻り値はENUM_TIMEFRAMES 型 です。

5では、Period()はenumを返し、_Periodはintを返します。

Quartetでは、定義済みの_PeriodとPeriod()の両方がint型になっています。

人が暗黙のenum変換警告を受けるので、4と判断する。

 

OnBookEventで、受け付けたグラスの時刻を知るにはどうしたらよいですか?

OnBookEventはOnTickよりも頻繁に呼ばれるので、SymbolInfoTick+time_mscでこれを行うことはできません。

もちろん、OnTickにtime_mscとGetMicrosecondCountの 値を格納することも可能です。そして、OnBookEventで経過時間をtime_mscに追加します。しかし、OnBookEventがOnTickと衝突してしまうため、なぜか面倒なことになります。一方が実行されている間、もう一方は待機しているかもしれません。

 

ExpertsログのSource欄には、(エントリーを発行した)プログラム名だけでなく、そのプログラムが動作しているシンボルも追加してください。しかし、インジケータ/アドバイザ/スクリプトといったプログラムの種類も。そして、それが実行されているチャートのハンドル(ポップアップメッセージにすることも可能)。

同じ理由(ハンドル)で、チャートのブックマークにカーソルを合わせた時に、ハンドル番号をポップアップで表示するようにしてください。

新しいチャートを開く(ハンドルとともに)、チャートを削除するなどのイベントのロギングを追加して ください。

 
コンストラクターが有用である理由と、コンストラクターがないと困る場合があることを簡潔に示しています。
void Func( const string &Str ) { } // const - обязателен!

void OnStart() { Func(_Symbol); }