[SERVICE DESK】タイマーでシニアTFの時刻を取得する際にエラーが発生!? - ページ 12

 
Taras Slobodyanik:

私は問題が表示されない、新しいキャンドルが 表示されました - 私たちは、指標/顧問の最後のろうそくを再計算します。
新しいローソク足が1本以上ある - インジケーター/アドバイザーの完全な再計算を行います。
これも同じで、新しいキャンドルが出現します。

もうひとつ、必要な期間は常に「プル」して更新する必要があります。
シンボル期間中に誰も作業していない場合(クォートがチェックされていない、インジケータが動作していない)、それは不要とみなされるため、「スリープ」状態になります。

引っ張ってる、引っ張ってる。要求して、エラーが出て、出ていく。でもね、ここでまた別の "クセ "が出てくるんですよ。リセットしてもエラーが解除されない。そうであれば、何の問題もないのですが。しかし、不正なデータを返すことが問題なのです。そして、それがとてもよくわかるのです。

この例では、エラーチェックのシステム全体が破綻してしまうのです。

 

最新のデータが古くなっていることを、端末はどのようにして知るのでしょうか?
なぜなら、歴史がそこにあるから--。
リクエストはブローカーに送られ...をできるだけ早く

新しいバーが 表示される - データが更新される。

 
Taras Slobodyanik:

最新のデータが古くなっていることを、端末はどのようにして知るのでしょうか?
やはり、歴史があるんですねー。
ブローカーへのリクエスト送信...そうである以上、すぐに

新しいバーが 表示される - データが更新される。

サーバーとの通信が確立される。上級TFデータ要求時、データの準備が出来ていない場合、エラーまたは0を返す。データが準備できた場合 - 実際のデータのみを返す。以上です。データが長時間準備できない場合、エラーまたは0を返すようにする。

 
Taras Slobodyanik:

ところで、端末版についての質問に答えていないね。

 
Alexey Kozitsyn:

ところで、端末版についての質問に答えていませんね。

端末のバージョンは全く関係ないのですか?新しいデータ、あるのかないのか。また、どのバージョンもサーバーから来たものでない場合は保存されません。
新しいデータが到着する前にインジケータが起動するだけです。または、新しいティックを受信したときにトリガさ れるOnCalculateに チェックを移動します。

 
Konstantin Nikitin:

または、新しいティックを受信したときにトリガさ れるOnCalculateに チェックを移動します。

何度か提案されていますし、管理者もそうです。

インジケータではOnCalculate() はインジケータ開始時に開始されますが、2回目のOnCalculate()はティック受信時に開始されます - ここではタイマーを開始して新しいOHLCデータをダウンロードする必要があります。

 
Igor Makanu:

何度もオファーされていますし、管理者もそうです。

インジケータはインジケータ開始時にOnCalculate()を開始しますが、2回目のOnCalculate()はティック受信時に開始されます - ここでは、タイマーを開始し、新しいOHLCデータをダウンロードする必要があります。

前回公開した私のコードを見てください。タイマーの話ではなく、すでに全てOnCalculate()に移行しています。端末起動 時にまだ動作しない。

 
//--- Проверяем связь с сервером
if(firstrun)
{
 firstrun=false;                // первый запуск индикатора
 return(0);
}   
if(!IsConnected())                              // Если не удалось установить связь с сервером
     {
      //--- Сбрасываем флаг соединения с сервером
      _isConnected=false;
      //--- Выходим
      return( 0 );
     }
また、GetTickCount()を チェックして、端末のロード、グラフの生成、サーバーとの通信を確立するための時間を与えます。また、端末の再起動をトレースする必要がありますが、その方法は分かりませんが、時間を与える必要があります
 
Alexey Kozitsyn:

前回公開したコードを見てみてください。もはやタイマーの話ではなく、全てOnCalculate()に移行済みです。ターミナルを起動しても まだ動かない。

起動時の1パス目をスキップする

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static bool res = false;
   if( !res )
     {
      res = true;
      return( rates_total );
     }
   /* работаем */
   return( rates_total );
  }
 
Konstantin Nikitin:

起動時の1パス目をスキップする

ポイント1をお読み ください。