//--- Проверяем первый запуск индикатораif(prev_calculated<=0 ||
_weekOpenTime!=iTime(_Symbol,PERIOD_W1,0)+SEC_PER_DAY ||
_dayOpenTime!=iTime(_Symbol,PERIOD_D1,0) ||
_hourOpenTime!=iTime(_Symbol,PERIOD_H1,0) )
{
_weekOpenTime= 0;
_dayOpenTime = 0;
_hourOpenTime= 0;
//--- Проверяем, записано ли время открытия текущей неделиif(!CheckCurrentWeekOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Проверяем, записано ли время открытия текущего дняif(!CheckCurrentDayOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Проверяем, записано ли время открытия текущего часаif(!CheckCurrentHourOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Устанавливаем флаг соединения с сервером для запуска таймера
_isConnected=true;
//---Print(__FUNCTION__,": Данные старших ТФ загружены!");
}
自分で試してみてください。インジケータを起動し、端末の電源を切り、新しい時間が来たら電源を入れ直します。
そのため、TimeCurrentを 取得した場合
Market Watch で選択されたシンボルによる最後の引用の到着時刻である last known server time を返します。
そのため、TimeCurrentを 取得した場合
Market Watchで選択されたシンボルについて、最後の気配値の到着時刻であるLast known server timeを返します。
この コードのどこにTimeCurrentの呼び出しがあるのか、教えてください。
この コードのどこでTimeCurrentを呼び出しているのか、教えてください。
だから、バーの開店時間は端末が閉まる前と変わらない。新しいバーが形成され、時刻が更新されます。何が問題なのか。
バーの開店時刻は、端末が閉まる前にいただいたものと同じです。新しいバーが形成され、時刻が更新されます。何が問題なのか。
それが、チャートの最後の時間バーが22:00になると、端末のスイッチが切れるんです。例えば22:45になるとスイッチが切れる。23:01にオン - サーバーへの接続が確立され、タイマーなしでOnInit()に事前要求した後、最後の1時間の時間要求 - それはまだ22時間である。これが普通だと思うのですが、いかがでしょうか?
バーの計算ではなく、ローソクの時間を確認します。
こうすることで、正しくアップデートされます(チェック済み)。
バーの計算ではなく、ローソク足の時間を確認してください。
そうすることで、正しくアップデートされる(チェックが入る)のです。
どんな棒読み計算なんだろう?
私はあなたのバリアントをチェックしますが、実際にはOnCalculate()に1つの "アイドル "データ要求を追加しただけです。 そして、ロジックでは、prev_calculated <= 0はすでに実行され、最初の実行ブロックが実行されるので、それは "アイドル "リクエストに到達さえしないでしょう。
とにかく、これは松葉づえだ、言葉の中にそんな場面はないはずだ。接続が確立され、データ取得の機能がエラーにならないか、取得したデータが正しいかどうかが確認されます。しかし、最終的に何が得られるのでしょうか?やはりデータは間違っている。
実は、確実にしたいのであれば、initeで現在時刻を 要求し、OnCalculate()で現在時刻を要求して、それらが異なるまで比較すればよいのです。しかし、それは同じ松葉杖であり、あってはならないことなのです。
それは、チャートの最後の時間バーが22:00を示すと、端末のスイッチが切れることです。例えば22:45になるとスイッチが切れる。23:01にオン - サーバーへの接続が確立され、タイマーなしでOnInit()に事前要求した後、最後の1時間の時間要求 - それはまだ22時間である。これは、あなたにとって正常なことなのでしょうか?
最後のバーの終値はTimeCurrent (つまり現在)になります。 質問から判断すると、必要なものであるように思います。
私の理解では、端末は、最初に、履歴にある最後のデータを出力し、その後、サーバーからの読み込みが起こります。
Question!OnInit()でデータのプレクエリ、CheckCurren...()の各関数でデータの読み込みのチェックがありましたが、すでにサーバーとの接続が確立されているのに、なぜ前のデータを出力するのでしょうか?何回チェックすれば正常に動作するのか......。
最後のバーの終了時刻はTimeCurrent (すなわち現在の時刻)になります。 質問から判断すると、これが必要なもののようです。
閉店時間は?開店時間が欲しい...。