//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated;
if(limit>1)
{
// Присваиваем limit значение количества доступных баров-1
limit=rates_total-1;
// Вот тут нужно инициализировать все буферы пустыми значениямиArrayInitialize(Buffer0,EMPTY_VALUE);
ArrayInitialize(Buffer1,0);
ArrayInitialize(Buffer2,clrNONE);
// ... и т.д.
}
//--- Экономный просчёт индикатораfor(int i=limit;i>=0;i--)
{
Buffer0[i]=(/*что-то там*/);
}
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated;
if(limit>1)
{
// Присваиваем limit значение количества доступных баров-1
limit=rates_total-1;
// Вот тут нужно инициализировать все буферы пустыми значениямиArrayInitialize(Buffer0,EMPTY_VALUE);
ArrayInitialize(Buffer1,0);
ArrayInitialize(Buffer2,clrNONE);
// ... и т.д.
}
//--- Экономный просчёт индикатораfor(int i=limit;i>=0;i--)
{
Buffer0[i]=(/*что-то там*/);
}
rate_total と prev_calculated の意味がよくわかりません。
最初のパラメータ rates_total には、インジケータが計算に使用できるバーの数が 含まれており、チャート上で使用できるバーの数に対応して います。
例えば、 MA5(5バーの平均)は、100バーを表示するように設定 します。 すると、インジケータは104本目のバーから100本目のバーまで計算し、100本目のバーから線を引き始めます。すると、rates_total=5、100、104のどれになりますか?
例えば、 MA5(5本の平均)は、100本のバーを表示するように設定 します。 この場合、インジケータは104本目から100本目までを計算し、100本目から線を引き始めます。すると、rates_total=5、または100、104?
rates_totalは 、計算可能なチャートのバー数です。言い換えれば、これはBars() である。
prev_calculatedは 、前回のOnCalculate()コールでインジケータが計算したバーの数です。これは、経済的な計算を整理するために必要です。
prev_calculated が rates_total と等しい場合、まだ何も計算されていないことを意味し、インジケータ・バッファを初期化し、全履歴の完全な計算を実行する必要があります。
一般的には、以下のような構造を使用することができる:
rates_totalは、計算可能なチャート・バーの数である。言い換えれば、これはBars() である。
prev_calculatedは 、前回のOnCalculate()コールでインジケータが計算したバーの数です。経済的な計算を整理する必要があります。
prev_calculated が rates_total と等しい場合、まだ何も計算されていないことを意味し、インジケータ・バッファを初期化し、全履歴の完全な計算を実行する必要があります。
一般的には、以下のような構造を使用することができる:
rates_total -Bars() の代わりに、なぜこう書かないのでしょ うか?
なぜrates_totalの 代わりに Bars() と書かない のか?
このような構造も使える。でもなぜ?ハンドラのパラメータにすでに定義済みの変数がある場合...。
Bars()は、本当に必要なときに使うべきです - 別のシンボル/タイムスタンプによって利用可能なバーの数を取得するときです。
このデザインも使える。でも、なぜ?ハンドラーのパラメーターにすでに定義済みの変数があるのに・・・。
ー別のー別のー 別のー別のー
Artyom、誰でも疲れてミスをすることはある。ー批評とータはータはーBars()はー常にー常にー常にー0をー
一般的に、このキャラクターに説明するのは非常に難しい。USEの犠牲者...
アルチョム、誰でも疲れてミスをすることがある。批判と思わないでほしいが、rates_total - Bars()は常にゼロに なる...。
一般的に、このキャラクターに説明するのは非常に難しい。USEの犠牲者...
そうですね。まさかそんな計算をする人がいるとは思いませんでした。目の端に計算中のバーズが見えたので、rates_totalの代わりかと思いました。
そういうこともあるんですね、ありがとうございます。
その人を助けたかったのはわかるが、どうやら間違って相手を混乱させただけのようだ。
この場合の経済的誤算は少し違っているようだ。
その人を助けたかったのはわかるが、どうやら間違って混乱させてしまったようだ。
この場合の経済的誤算は少し違っているようだ。
私が間違ったことを書いたと思いますか?正当化してください。
私の例とあなたの例では、限界はどこで、ループはどこから来るのでしょうか?
なぜrates_totalの 代わりに Bars() と書かない のか?
要するに、rates_totalとBars() は同じもので、Bars() は関数なので、その呼び出しはrates_total 変数の値を 読み取るよりも実行時間の点でコストが かかります。
私が間違ったことを書いたと思いますか?正当化してください。
私の例とあなたの例では、ループはどこから来るのですか?
おっと))))
私はそれを正しく見ていなかった
私はあなたが書いたものを全く見ていませんでした。
申し訳ない。