あらゆる取引のテーブル。MQL5経由でのアクセス - ページ 5

 
prostotrader:

ここで私のコードでは、重複を防止しています。

それでは :) あなたのコードに刻み目の損失があります。
 
Yury Kulikov:
それなら :) あなたのコードに刻みの損失がありますね。

:) が、なぜか冗長になっている :)

Yuriさん、ありがとうございます。

 

確かにCOPY_TICKS_TRADEに切り替えると、刻みの混合のエラーはなくなりましたが、同時にCOPY_TICKS_TRADEモードではフラグを受信することができません。

  • TICK_FLAG_BUY - 買い取引の結果、ティックが発生しました。
  • TICK_FLAG_SELL - 売りの取引でティックが発生しました。

 
Karputov Vladimir:

確かにCOPY_TICKS_TRADEに切り替えると、刻みの混合のエラーはなくなりましたが、同時にCOPY_TICKS_TRADEモードではフラグを受信することができません。

  • TICK_FLAG_BUY - 買い取引の結果、ティックが発生しました。
  • TICK_FLAG_SELL - 売りの取引でティックが発生しました。

フラグは実際のトレードの結果で来る(今テスト中です)
 
Yury Kulikov:
さて、それでは :) あなたのコードに刻みの損失があります。

Yuriさん、私のインジケータを試してみてください(よく見てください)。

履歴で見るのではなく、ダニが出るのを待って います。

新しいティックが現れる前に、その都度コピーしています。

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,start_time,0);

"0 "は何回目のダニが再発しているか。

copied = 0 の場合、新しいティックは存在しない。

この「サポート」を外せば

if(start_time==ulong(ticks[copied-1].time_msc)) return;

の場合、必ず重複が発生します。

タスクはティック履歴の 表示ではなく、ティックフィードをリアルタイムで表示することです。

 
prostotrader:
実機では、フラグが入る(今、実機でテストしているところです)

はい、その通りです。COPY_TICKS_INFO と混同してしまいました.

追加されました。

それにもかかわらず、COPY_TICKS_ALLモードではティックが、いくつか、乱雑な順序で到着 します。

 
prostotrader:

ユーリ、私のインジケーターを試してみて(よく見てね)

コードの文字数が多すぎます :)

アルゴリズムは単純だ。OnCalculate() で実際のボリュームを見て、それが変更されている場合は、最後のティックをロードし、最後の瞬間に何ティックであったか(同じ値time_msc)を覚えて、次の呼び出しは、計算からこれらのティックをカットするCopyTicks()ようにします。

 
Yury Kulikov:

コードの文字数が多すぎます :)

アルゴリズムは簡単です。OnCalculate()で実音量を確認し、変化していれば、最後のティックを読み込み、最後の瞬間に何ティックだったか(同じ値time_msc)を記憶し、次の呼び出しCopyTicks()でこれらのティックを計算から除外します。

ありがとうございます。問題を解決する方法がわかったような気がします...。
 
Yury Kulikov:

コードの文字数が多すぎます :)

アルゴリズムは簡単です。OnCalculate () で実際のボリュームを見て、それが変更されている場合は、最後のティックをダウンロードし、最後の瞬間に何ティックだったか(同じ値time_msc)を覚えているので、次の呼び出しCopyTicks () は、計算からこれらのティックを除外します。

Yuriさん、今回も有能なアドバイスを本当にありがとうございました。

すべて実行し、完全に動作するようになったのですが、3時間以上、どのような状況も発生しません。

記述しました :)

 

やっと成功した

すべてが正しく、ティックの重複や紛失がなくなりました。

デモはZIPファイルの中にあり、自分で確認したい場合は、地下にデバッグ版があります。

ファイル:
理由: