まあ、だからエラー4066は、MTFのインデュサーのための典型的な問題であり、端末は他のTFのデータの整合性をチェックする必要がある他のTFのデータをポンプされていないです。
アドバイスをする前に、コードと私が書いたものをよく見てください。
このコードには、エラーに対するチェックと、空のデータに対するチェックがあります。そして、関数がエラーにならずに不正なデータを返すと、それはエラーになるのです!
アドバイスをする前に、コードと私が書いたものをよく見てください。
このコードには、エラーに対するチェックと、空のデータに対するチェックがあります。そして、関数がエラーにならずに不正なデータを返すと、それはエラーになるのです!
例えば、CheckCurrentHourOpenTime() プロシージャで、履歴の整合性をチェックする箇所を教えてください。
ストーリー・インテグリティとはどういう意味ですか?
履歴値を取得する際に、エラーチェックがあるという話です。どの機能にもチェックが入っています。これです。
//--- Проверяем, получено ли время открытия часового бара if(tempHourOpenTime==0 || err!=0) // Если время бара не получено return(false); // Возвращаем ложь
つまり、ゼロ値またはエラーを受け取った場合、グローバル変数 に時刻を書き込まない。物足りないと思いますか?
ポイントは、SeriesInfoInteger()関数が最初はエラーを返しますが、次に実行するとNO!そして、正しい値も返さないのです!ここにエラーがないってどういうこと!?では、なぜ「偽」のエラーコードを出しているのでしょうか?履歴がないところはOKと書いてあるのに...。
もう一度言いますが、この関数は履歴の整合性をチェックするものではありませんその中で見つけられた情報を返します。このケースでは、端末がシャットダウンされたときに要求されたアワーバーを発見しました。残りの履歴はまだ読み込まれていません。
与えられたTFの履歴が完全にページングされているかどうかを確認するには、単に関数を使用します。
bool IsTFDataReady(ENUM_TIMEFRAMES eTF) { ResetLastError(); iTime(NULL, eTF, 1); return GetLastError() == ERR_NO_ERROR; }
この関数が false を返した場合、要求された TF のデータは不完全である。それ以外は完全なものです。
与えられたTFの履歴が完全にページングされているかどうかを確認するには、単に関数を使用します。
この関数が false を返した場合、要求された TF のデータは不完全である。それ以外は完全なものです。
タイマーで確認しましたか?コメントアウトした行があるのがわかりますか?この機能を確認したところ、全くエラーが表示されず、また誤ったデータも表示されました。もう一度確認します。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
目的: インディケータを起動する際に、週足、日足、時間足のバーの開始時間という現在のデータをタイマーで取得する。そして、それらをグローバル変数に書き込んで、さらに使用する。現在のタイムフレームはМ1です。
実装: SeriesInfoInteger()関数を用いてバータイムを取得する。
結果: 例えば、夜間停止していた端末が数時間稼働して いた場合、最初の(1日)起動時にそのような結果が得られます。
ご覧の通り、データ取得時刻は2018.09.21 11:11で、その時刻に対して、日の開始時刻=2018.09.20(本来は2018.09.21だが)、時間の開始時刻=2018.09.20 16:00(本来は2018.09.21 11:00だが)が得られていることがわかります。そして、端末が返す時刻は、最後に閉じた時のデータに他ならない。つまり、端末がシャットダウンされても、データはキャッシュされ、返されます。そして、データが更新されるまで、毎回エラー#4066が返される(更新状態の履歴データを要求)ならわかるのですが、そうではなく、返されるのはERRORデータなのです!?このエラーは一度だけ返されるので、その後は我慢してください。明らかなキャッシングエラーが発生しています。開発者(@Slava) には、ぜひ注目してもらいたいですね。
繰り返す。タイマーで要求すると、誤ったデータが表示される!
端末のバージョン: x64、1090。