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

削除済み  
fxsaber:
_TimeCurrent = MathMax(SymbolInfoInteger(Symbol1, SYMBOL_TIME), SymbolInfoInteger(Symbol2, SYMBOL_TIME), ...);
ここまでくると、本当に限られた量しかありませんね。最長時間を選択することでしかし、これはOnBookEvent()ごとに2つの時間値を取得するという追加コストが発生します...。
 
Alexey Kozitsyn:
ここまでくると、本当に限られた量しかありませんね。最長時間を選択することでしかし、OnBookEvent()のたびに2つの時間値を取得するのは追加費用がかかる...。
GetMicrosecondCountでTimeTradeServerを エミュレートする。または、BookEventの99%にTimeTradeServerとTimeCurrentの差分を追加する。
削除済み  

SR番号1674783への 応募について

お早めにお決めください。

削除済み  
fxsaber:
GetMicrosecondCountでTimeTradeServerを エミュレートする。BookEventの99%にTimeTradeServerとTimeCurrentの差分を追加するか。
これでも複数のパラメータを取得しています。
 
Alexey Kozitsyn:
やはり、いくつかのパラメータを取得することです。
問題は、パラメータの数ではなく、そのトータルの安さです。
削除済み  
fxsaber:
問題は、パラメータの数ではなく、そのトータルの安さです。
つまり、SymbolInfoInteger( _Symbol, SYMBOL_TIME ) よりもTimeTradeServer() の 方が高速になるということですね?
 
Alexey Kozitsyn:
では、SymbolInfoInteger( _Symbol, SYMBOL_TIME ) よりもTimeTradeServer() の 方が速く動くと思いますか?

TimeTradeServer は GetMicrosecondCount を通して、対応する差を TimeCurrent に追加して動作します。

何が必要なのかわからない。しかし、マイクロ秒の節約は、私には合理的とは思えません。

削除済み  
fxsaber:

TimeTradeServer は GetMicrosecondCount を通して、対応する差を TimeCurrent に追加して動作します。

何が必要なのかわからない。しかし、マイクロ秒の単位で節約することは、私には合理的とは思えません。

現在時刻の 正しい値を取得したい。現在時刻のOnBookEvent()から、時刻に束縛されたパラメータの値を書き込むように要求しています。そして、経過時間ではなく、現在時刻が必要で、できれば、いくつかの時刻の値を取得して、一番大きな値を選択するような形の松葉杖は使わないでほしい。TimeCurrent()はこのタスクを処理することになっています(ドキュメントに記載されている説明によると)。しかし、今はやっていないことが判明しました
 
Alexey Kozitsyn:
現在時刻の 正しい値を取得したい。OnBookEvent()から現在時刻を照会して、時刻に連動したパラメータの値を書き込んでいるのです。そして、過去の時間ではなく現在の時間が必要で、できれば複数の時間値を取得して最も高い値を選択するような松葉杖は不要です。TimeCurrent()はこのタスクを処理することになっています(ドキュメントに記載されている説明によると)。しかし、今はそんなことはないことが判明したのです
確認はしていない。
datetime NewTimeCurrent( void )
{
  static ulong PrevStartTime = GetMicrosecondCount();
  static datetime PrevTimeCurrent = TimeCurrent(); // TimeTradeServer()
  
  const datetime NewTimeCurrent = TimeCurrent(); // TimeTradeServer()
  const ulong NowTime = GetMicrosecondCount();
  
  if (PrevTimeCurrent < NewTimeCurrent)  
  {
    PrevTimeCurrent = NewTimeCurrent;
    
    PrevStartTime = NowTime;
  }
  
  return(PrevTimeCurrent + (datetime)((NowTime - PrevStartTime) / 1000000));
}
もっと正確に言えばよかったかもしれません。例えば、SymbolInfoTick(+CopyTicks)を問い合わせることで、すべての文字を実行することができます。そこから時間をミリ秒単位で掻い摘む。ただ、どんな実用的な使い方ができるのかがわからない。
 
fxsaber:
SymbolInfoTick (+ CopyTicks) をクエリして、すべてのシンボルを実行します。そこから時間をミリ秒単位で掻い摘む。
TimeCurrentの ミリ秒アナログは、GUIへの反映で、とっくに終わっている。