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

 
prostotrader:
バグを発見し、動作を最適化しました。

最適な性能を発揮するまでにはまだ時間がかかるが、良い例である。今のところ、主なブレーキは3つです。

1.CopyTiks すべてのOnBookEventは、開始からのすべてのティックをコピーします。

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

これは実は、ダイナミックカットオフを作ることで最適化できるのです。

2.OnBookEventで受信したすべてのティックの完全列挙

for(int i=1; i<copied; i++)
{
   if(( ticks[i].flags  &TICK_FLAG_BUY)==TICK_FLAG_BUY)
   {
      buy_deals++;
   }
   else
   if(( ticks[i].flags  &TICK_FLAG_SELL)==TICK_FLAG_SELL)
   {
      sell_deals++;
   }
}

これもご希望により修正可能です。

3.OnCalculationのすべてのバーを完全に列挙する。

for(int i=rates_total-1; i>0; i--)
{
   SellBuffer[i]= SellBuffer[i-1];
   BuyBuffer[i] = BuyBuffer[i-1];
}
 
フォーラムメンバーからの要望で、インジケーターを最終決定しました
ファイル:
DealsLent.mq5  9 kb
 
Vasiliy Sokolov:

最適な性能を発揮するまでにはまだ時間がかかるが、良い例である。今のところ、主なブレーキは2つです。

1.CopyTiks すべてのOnBookEventは、開始からのすべてのティックをコピーします。

これは実は、ダイナミックカットオフを作ることで最適化できるのです。

2.OnBookEventで受信したすべてのティックの完全列挙

これもご希望により修正可能です。

3.OnCalculationのすべてのバーを完全に列挙する。

ありがとうございます。でも、どこもかしこも正しくないんですね。

1.すべてのダニではない(よく見てください)

2.どのようにしたいのか?

3.簡単にできること

では、手を加えてみましょう...。

 
ここで、ツッコミ。
ファイル:
DealsLent.mq5  9 kb
 
prostotrader:

ありがとうございます。でも、すべてにおいて正しいわけではありません。

1.すべてのダニではない(よく見てください)

2.簡単にできること

3.簡単にできること。

今、私たちはそれを正しく理解している...。

そうですね、確かに全てのダニではありません。

3点目についてですが、なかなか難しいかと思います。インジケータはティックワイズであるため、本格的な再レンダリングが必要です。

でも、全体としてはOKです。例を挙げていただきありがとうございます。

 
prostotrader:
ここで、手を加えました。
ありがとうございます。
 
Vasiliy Sokolov:

そうですね、確かに全てのダニではありません。

3点目について......簡単にはできないと思います。なぜなら、このインジケータはティックインジケータであるため、本格的な再レンダリングが必要だからです。

でも、全体としてはOKです。例を挙げていただきありがとうございます。

確かに、この指標はティックベースなので、現在のデータ(最近のもの)だけが重要です。

ユーザーがバッファからより長い履歴を取りたい場合。

は、とても簡単です。

セック

 

ここでは、ユーザーが興味のあるデータの大きさを選択することができます。

ActSize = 0 の場合 - 利用可能なすべての履歴

ファイル:
DealsLent.mq5  9 kb
 
最後の仕上げに...
ファイル:
DealsLent.mq5  10 kb
 

どなたかエラーの内容をご存知の方はいらっしゃいますか?

インジケータは正常に動作しますが、より多くのバーが表示されます。

設定されているよりも

理由: