ローカルタイムとフレッシュティックタイムの差が1分30秒。何をするのか - ページ 3

 
pivomoe:

TimeCurrent() - 文字の最後の刻みの時間が遅延時間より短くなるので、それを利用することができます。最初のバージョンでローカルタイムを使用することは、良いアイデアではありませんでした。

おっと...まあ、今のバージョンも不発のようですが。

TimeCurrent()の定義を読んでみましょう。

タイムカレント

マーケットウォッチで選択されたシンボルの 最終サーバー時刻、最終気配到着時刻を返します。

そのうちの1つは、最も頻度の高い(わかりやすく言えば、最も液体の多い)時刻を表示することを意味します。そして、これはあなたが望んでいることではありません。必要なのはSymbolInfoInteger( blah-blah, SYMBOL_TIME )です。こんな感じです。

 
Alexey Kozitsyn:

おっと...dac、現在のバージョンも失敗しているようです。

TimeCurrent()の定義をお読みください。

1とは、最も頻繁に変化する(わかりやすくするために、最も液体の多い)時刻を表示することを意味します。そして、これはあなたに必要なものではありません。必要なのはSymbolInfoInteger( blah-blah, SYMBOL_TIME )です。そうだと思います。

そうやって、私が問題視していることをプロストトレーダーで実現しようとしたわけです。最後のバージョンでは、すべてのシンボルを調べ、最後に受信したティックの最大時間を取得します。

   for(int i=0; i<KolichestvoSimvolov; i++)     
   if( InformaziaOPoslednemTike[i].LastTick.time_msc > VremaySamogoSvegegoTikaPoVsemSimvolam ) VremaySamogoSvegegoTikaPoVsemSimvolam= InformaziaOPoslednemTike[i].LastTick.time_msc;
アレクセイ・コジツィン

17:59:01にダニの情報を受け取った人がいて、18:00になっても受け取れなかったとしたら、それは大問題ですよね。

そして、ここで質問です。何が問題なのか(あるのか)?ティックを(皆に)長時間与えないブローカーのサーバーや、長時間受け取らないMT5で。

TimeCurrent "から最後のティックの到着時刻までの平均時間は5ミリ秒ですが、一方で数十秒単位で落ちてくるティックも存在します。例えば18歳から25歳まで。45秒の遅延でダニを捕獲したことがある。それも、数十個の非流動性のシンボルにです。


+ さらに、最後のティックを取得 するためにCopyTicksを使用すると、この用語の問題が悪化する可能性があります。
if(CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,0,1)==1) 

回数で遅くなるだけでなく、1秒半ほど平気で実行されることもあります。

OnBookEventは、1つのシンボルでの取引にのみ適していると理解しています。

 
pivomoe:

このように、私が問題視していることをプロストトレーダーで実現しようとしたわけです。最後のバージョンでは、すべてのシンボルを調べて、最後に受信したティックの最大時間を取っています。

TimeCurrent "から最後のティックの到着時刻までの平均時間は5ミリ秒ですが、一方で数十秒単位で落ちてくるティックも存在します。例えば18歳から25歳まで。45秒の遅延でダニを捕獲したことがある。それも、数十個の非流動性のシンボルにです。


+ さらに、最後のティックを取得するためにCopyTicksを使用すると、この用語の問題が悪化する可能性があります。

回数で遅くなるだけでなく、1秒半ほど平気で実行されることもあります。

また、OnBookEventは1つのシンボルでの取引にのみ適していることを理解しました。

さあ、いよいよです。マーケット・グラスは通貨ペアごとに別々に形成されるため、異なるペアのそのデータで取引することは不可能であることが、今理解いただけたと思います。

あなたによって与えられた、様々なチャートのデータをある順序で追いかけることは、異なる通貨ペアのチャートの新しいティックに関するデータの受信順序と一致しないことに、すぐに気づいてほしいのです。

したがって、EURUSDが最初にチェックされ、BTCUSDが最後にチェックされ、その間に数十のシンボルがある場合、ティックの受信時間は次のようになります。

18:50:00.000; 18:48:59.018; 18:51:00.001; 18:47:59.000 well などなど。陰謀論もMTのせいもブローカーのせいも抜きにして。プログラムされたものが、そのまま出てくるのです。

 
Алексей Тарабанов:

さあ、いよいよです。ガラスは各通貨ペアで別々に形成されるため、そのデータをもとに取引することは、異なる通貨ペアでは不可能であることが、今、判明しました。

あなたによって与えられた、様々なチャートのデータをある順序で追いかけることは、異なる通貨ペアのチャートの新しいティックに関するデータの受信順序と一致しないことに、すぐに気づいてほしいのです。

したがって、EURUSDが最初にチェックされ、BTCUSDが最後にチェックされ、その間に数十のシンボルがある場合、ティックの受信時刻は次のようになります。

18:50:00.000; 18:48:59.018; 18:51:00.001; 18:47:59.000 well などなど。陰謀論もMTのせいもブローカーのせいも抜きにして。私たちがプログラムしたものが、私たちが得たものなのです。

OnBookEvent経由で新しいティックをキャッチするためには、「その方が正しい」と書いているプロストレードに 触発されました。ティック自体は使用せず、マーケットレポート内の全シンボルのティック 更新を購読しています。OnBookEvenはティック更新に使用されたシンボルのみを検出するために使用 します。そして、新しいティックをチェックし、EAが新しいアンチレコードを設定したか どうかを調べます。 これが実は機能全体 なのです。

void OnBookEvent(const string &symbol)
  {   
   if( MestoPoluchenieTikov == ON_TIMER ) return;
//--- Ищем индекс символа для которого полученно событие OnBookEvent
   int IndeksSimvola= -1;
   for(  int i=0;  i < KolichestvoSimvolov; i++ )
   if(  symbol == GCInformaziaOPoslednemTike[i].Simvol  ) { IndeksSimvola= i; break; }
   
   if( IndeksSimvola== -1 ){Print(__FUNCTION__,"Не удалось найти символ по которому полученно событие OnBookEvent ");ExpertRemove();return;}
   
   bool PoluchiliNoviiTick= false;
          
    //--- Получаем тик заданным в настройках способом.
   if( SposobPoluchenieTikov == SYMBOL_INFO_TICK  ) PoluchiliNoviiTick= PolychaemNoviiTickSymbolInfoTick(GCInformaziaOPoslednemTike[IndeksSimvola]);
   if( SposobPoluchenieTikov == COPY_TICKS       )  PoluchiliNoviiTick= PolychaemNoviiTickCopyTicks(GCInformaziaOPoslednemTike[IndeksSimvola]);    
       
     //--- Смотрим не установлены ли новые рекорды.  
   if(  PoluchiliNoviiTick ) PitaemsayObnovitRekordi( GCInformaziaOPoslednemTike, IndeksSimvola );                 
   
   ObnovlaemInformacyyNaGrafikeEslePora();
 
  }   
アレクセイ・タラバーノフ

あなたによって与えられた、ある順序で異なるメガネからデータを追いかけることは、異なる通貨ペアのメガネの新しいティックに関する受信データの順序に対応しないことを理解してほしいです。

私が理解している限りでは、MarketBookGetを使ってカップを受け取らなければ、何も検索しません。おそらく、2ページ目の私のコードを見ていないだけでしょう。

 
pivomoe:

OnBookEvent経由で新しいティックをキャッチするアイデアは、prostotrade さんから「その方が正しい」と書いていただいたものです。私はティック自体を使用せず、マーケットレポートのすべてのシンボルの更新を購読しています。OnBookEven私は基本的にティックが更新されているシンボルを識別するためにのみ使用 します。そして、新しいティックをチェックし、EAが新しいアンチレコードを設定したか どうかを調べます。 これが実は機能全体 なのです。

私が理解している限りでは、MarketBookGetを使ってカップが出なければ、何もチェックしないのです。おそらく、2ページ目からの私のコードを見てないだけでしょう。

MT信号は、前の信号が処理されるまで処理されません。

 
pivomoe:

OnBookEvent経由で新しいティックをキャッチするアイデアは、prostotrade さんから「その方が正しい」と書いていただいたものです。私はティック自体を使用せず、マーケットレポートのすべてのシンボルの更新を購読しています。OnBookEven私は基本的にティックが更新されたシンボルを識別するためにのみ使用 します。そして、新しいティックをチェックし、EAが新しいアンチレコードを設定したか どうかを調べます。 これが実は機能全体 なのです。

私が理解している限りでは、MarketBookGetを使ってカップが出なければ、何もチェックしないのです。おそらく、2ページ目からの私のコードを見てないだけでしょう。

していません。

 
pivomoe:

あなたの理屈は結構です、通りすがりの人の意見に耳を傾けてはいけません。

1.3~5種類の商品(そのうち1種類は非流動性)を保有するようにする。再生できるのか?

2.インターネットを使用している他のソフトウェアがないクリーンなマシンで実行してください。繰り返されるのでしょうか?

3.レイテンシーキャッチを別のEAに分離してみる(1ツールにつき1つ)。

リソースに問題がない場合(1つの端末に割り当てられるスレッド数に何らかの制限があった)、バグが修正されるはずです。

 
Andrey Khatimlianskii:

あなたの理屈は結構です、通りすがりの人の意見に耳を傾けてはいけません。

1.3~5種類の商品(そのうち1種類は非流動性)を保有するようにする。再生できるのか?

2.インターネットを使用している他のソフトウェアがないクリーンなマシンで実行してください。繰り返されるのでしょうか?

3.レイテンシーキャッチを別のEAに分離してみる(1ツールにつき1つ)。

リソースに問題がない場合(1つの端末に割り当てられるスレッド数に何らかの制限があった)、そのバグを修正する必要があります。

返信ありがとうございました。今日、この問題の解決に少しばかり進展があった。SymbolInfo()呼び出しの 間にSleep()コマンドを実行すると治ります。以前は、一時停止することなく、市場全体をループして見ていました。夕方、40シンボルでテストしてみました。もしSleep(5)なら、2秒前にあるはずの「新しいティック」をキャッチします。しかし、Sleep(10)は400ミリ秒の遅延を示します(Sleep(10) ( 40 symbols *10 )による)。 Vespersで最も液体の多い4つのシンボルでテストしてみたのです。Sleep(1)では全く遅延がない...。は、すべて完璧です。ここでは、レビューのシンボルが小さければ、SymbolInfoは間髪入れずに使用することができる、ということが理解できないのですが、いかがでしょうか。また、記号が多い場合は、ポーズを使う必要があります。

さて、答え合わせです。

1) 夕方のオンリキッドは再生されません。

2)40文字になると、無効化したソフトでも繰り返される。

3)あなたの提案が理解できない。1つのターミナルで2つのEAから一度に新しいティックをキャッチする?

ZZZ 今はSymbolInfoを 呼び出すことで実現可能な方向で掘っています。例えば、マーケットオーバービューの1つのシンボルでさえ、3.5ミリ秒以上の間隔で新しいティックを送信することができないことがわかりました(夕方のことですが)。

 
pivomoe:

1) リキッドのものでは、ベスパーで再生されない。

2) 40文字では、ソフトウェアを無効にしても繰り返されます。

3)何を言いたいのか理解できない。1つのターミナルで2つのEAから一度に新しいティックをキャッチする?

ZZZ 今はSymbolInfoを 呼び出すことで実現可能な方向で掘っています。例えば、マーケットオーバービューの1つのシンボルでさえ、3.5ミリ秒以上の新しいティックを与えることができないことがわかりました(夕方の時間帯でしたが)。

1.非流動的なものを追加してみる

3.1つのEAから1つの楽器のミスをキャッチする。そして40のEAを動かす。

 
pivomoe:

ご返信ありがとうございました。今日、この問題を解決するために少し前進しました。SymbolInfo()呼び出しの 間にSleep()コマンドで処理されます。以前は、一時停止することなく、市場全体の概観をただ循環させていました。夕方、40シンボルでテストしてみました。もしSleep(5)なら、2秒前にあるはずの「新しいティック」をキャッチします。しかし、Sleep(10)は400ミリ秒の遅延を示します(Sleep(10) ( 40 symbols *10 )による)。 Vespersで最も液体の多い4つのシンボルでテストしてみたのです。Sleep(1)では全く遅延がない...。は、すべて完璧です。ここでは、レビューのシンボルが小さければ、SymbolInfoは間髪入れずに使用することができる、ということが理解できないのですが、いかがでしょうか。また、文字数が多い場合は、ポーズを使わなければなりません。

遅延を捕捉するコードの一部を提供してください。ここで、コード挿入ボタンから。