初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 534

 
MikeZv:

ウラジミール、最初の質問への回答ありがとうございます。これらの機能を見逃していました。

MT4とMT5に同じインジケータを入れました(もちろん、コードは各プラットフォームに合わせます)。
ゼロバーまでは同じ値なので、どうやら一端から ...:)
また、MT4で現在のバーの計算を無効にすると、現在のバーの下に何も描画されず、MT5では、間違った値が表示されます。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者の方からの質問

カルプトフ ウラジミール 2016.03.08 15:13

...デバッグのために、時系列配列time[i]にどの値が 含まれているかをチェックするように設定することで、バーの計算をどの端から始めて、どこに「ゼロ」バーが あるかを理解できます。


 
MikeZv:
また、そのようなチェックはどのように行うのでしょうか?

MetaEditoreでブレークポイントを 追加し、デバッグを開始します。ブレークポイントが停止したら、time[0]を観測値に追加します。

デバッギング

 
Karputov Vladimir:

MetaEditoreでブレークポイントを追加し、デバッグを開始します。ブレークポイントが停止したら、time[0]を観測値に追加します。


私はすでにコードに出力を挿入しています

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 0:00:00

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00頃

MT5のコードに挿入ArraySetAsSeries(time,true);
現在出力中です。

MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 2010.01.04 00:00

あと価格配列もやるの?


 
MikeZv:
すでにコードに出力しています

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00です。

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00頃
どうすればいい?

両方のバージョンのインジケータでArraySetAsSeriesを 追加します - 計算に使用するこれらの配列に対して:high[]、low[]、および一時的にtime[]配列に対して - これは、「ゼロ」バーがどこにあるかを理解するために役立ちます。したがって、両方のバージョンの「ゼロ」バーは、チャートの同じ側(右または左 - ArraySetAsSeriesで何を設定したかによる)にあり、インジケータの同じ計算部分を得ることができます。

追記:打っている間に、正しい道をあやまってしまいましたね :)

 
Karputov Vladimir:


追記:入力している間に、正しい方法を見つけてくれました :)

見つけたのですが、まだ正しく表示されません。:)
MT5のコードに貼り付けました。
   ArraySetAsSeries(ExtCalcVlBuffer,true); 
   ArraySetAsSeries(ExtMovingBuffer,true);
   ArraySetAsSeries(ExtStdDevBuffer,true);
   ArraySetAsSeries(time,true);             
   ArraySetAsSeries(low,true);              
   ArraySetAsSeries(high,true); 

出てくるんですよ。

ExtCalcVlBufferを出力 するだけで、平均値や偏差値がカウント されない...。
そして、本来は出力されるべきでないのに、まだ現在のバーで出力されています。

 
MikeZv:
...

表示されるべきでないのに、現在のバーに表示されたままです。

なぜ、そうしてはいけないのでしょうか?
 
Karputov Vladimir:
なぜ、そうしてはいけないのでしょうか?
i<rates_total-1を消しました。
 
MikeZv:
i<rates_total-1を消しました。
なぜだ!?
 
Karputov Vladimir:
なぜだ!?
今のをあてにするのはCPUの無駄遣いだし、値が必要ないだけでしょう。
 
MikeZv:
現在の値を使用する必要はなく、無駄にプロセッサをロードするだけなので、単にこの値が必要ないだけです。

すぐに指定する必要があります :) .

チャート上にバーがあれば、それはインジケーターバッファーの セルに対応しています。このセルに何かを書き込まない限り、このセルはゴミを貯めることになる。

理由: