iBarShiftのアナログ - ページ 13

 
Nikolai Semko:

iBars機能と内蔵のBarsおよびiBarShift機能のパフォーマンスを比較したインジケータ(@Alain Verleyen 氏提供
関数実行時間(マイクロ秒)。


ここはNGです。コドベースをご覧ください。iBars()、iBarShift()ともに。

 
Nikolai Semko:

iBars機能は、かなり面倒ですが、MQがハングアップするバグを修正するまでは、通常のBarsの代わりに使用することをお勧めします。

以下のようにしても、高速化することができます。

start_time -= start_time % PeriodSeconds(timeframe);
TimeCur -= TimeCur % PeriodSeconds(timeframe);

論理的には0を返すべきなのに、iBarがハングアップしてしまう。原則として10秒以上返します。この不具合はMQL4には存在しません。

このコール

SeriesInfoInteger(symbol_name,timeframe,SERIES_LASTBAR_DATE)

動作が正しくない - 存在しないはずの履歴が読み込まれる。そのため、ラグが発生します(hccファイルの外観を参照)。

 
Nikolai Semko:

iBars機能のパフォーマンスを、内蔵のBarsやiBarShift機能と比較して示すインジケータ(@Alain Verleyen 氏提供
関数実行時間(マイクロ秒)。

ここでも、性能は必要なところで測定されるべきなのです - Optimiser。

 
Artyom Trishkin:

ここではない、コドベースの中だ。iBars()、iBarShift()ともに。

はい、そのつもりです。とりあえずテストしてみよう。

 
fxsaber:

また、以下の方法で高速化することができます。

Start_timeは 最初からそこに実装されていますが、TimeCurを 使えば、少しスピードアップできます。します。ありがとうございます。

ちなみに、M1~D1までしか使えません。1970年1月1日は木曜日なので、W1は3日分移動しなければなりません。また、MN1では、1ヶ月が28,29,30,31日となるため、ダイヤモンドで遊ぶ必要があるのです。

このコール

この呼び出しは正しく動作しません - 履歴が交換されるべきでないのに交換される原因となります。それゆえ、ラグが発生します(hccファイルの外観を見ることができます)。

不思議なことに、そのような動作は見たことがありません。

fxsaber

ここでも、性能は必要なところで測定されるべきなのです。

オプティマイザーとはどういう意味ですか?

 
Nikolai Semko:

start_timeで 最初から実装されています。

エラーで実装される。例えば、M1 starttime == D'12:00:05'である。ストップタイムも必要です。

オプティマイザーとはどういう意味ですか?

テスターの最適化モード

 
fxsaber:

エラーで実装される。例えば、M1 starttime == D'12:00:05'である。ストップタイムも必要です。

どのようなエラーなのか説明してください。そして、なぜ時間だけ、日付はどこなのか?

BarsとiBarsは このフォーマットでは0を与えます。

 
Nikolai Semko:

どのようなエラーなのか説明してください。そして、なぜ時間だけで、日付はどこなのか?

日付を書くのが面倒くさかったので。

t=start_time-(start_time-1)%PerSec;

この行のstart_timeに0でない1分あたりの秒数を代入してください。

 
fxsaber:

日付を書くのが面倒くさかったので。

この行では、start_timeに0でない1分あたりの秒数を代入しています。

大丈夫です。間違いではありません。そうでなければならない。

このようなコードを実行してみてください。

   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:00',UINT_MAX));
   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:01',UINT_MAX)); //результат на единицу меньше
 
Nikolai Semko:

大丈夫です。間違いではありません。そうでなければならない。

このようなコードを実行してみてください。

ではなぜ、18:00:01はM1-bar 18:01に属し、18:00には属さないとBarsが考えるのか理解できない。


ちなみに、TimeCurrentは SYMBOL_TIMEに置き換える必要があります。