if(prev_calculated==0) { //--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории for(int i=0;i<rates_total;i++) ExtBuffer[i]=1.01; return(rates_total); }
if(prev_calculated==0) { //--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории for(int i=0;i<rates_total;i++) ExtBuffer[i]=1.01; return(rates_total); }
誤答する驚異の能力...。
では、もしもの時のために説明してください。
1.100本のバーを再計算し、0から99までのバッファに入力(方向を時系列で考えてみる)値1.03
2.突然、履歴が読み込まれ、prev_calculatedが0になりました。
インジケータのどのバーから1.03になるのか?
{
//--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории
for(int i=0;i<rates_total;i++)
ExtBuffer[i]=1.01;
return(rates_total);
}
インジケーターが起動 したFIRST 時にゴミの捨て方を説明した方が良い。
全く松葉づえではありません。それが私の やり方です。
{
//--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории
for(int i=0;i<rates_total;i++)
ExtBuffer[i]=1.01;
return(rates_total);
}
だから、これは解決すべき問題なのです。ゴミはいらないが(本当はいらないが、表示の邪魔になる)、インジケータの過去の計算を保存しておきたい。インジケータを初めて起動したとき、バッファがゴミのようになり、履歴を読み込むときにバッファに挿入されたすべてのものが保存されるはずです...。で、できればファイルやGVに保存しないでください。
を追加しました。
これは、1分ごとにリアルタイムでドローダウンを推定することを目的としています。Expert Advisorは1週間停止することなく動作し、週単位の表示の代わりに、インジケータがなくても見える最後の値だけが表示されます。
単純な first run / no longer first run フラグで十分な場合は、prev_calculated を static b_First_Run に置き換えます。そして、バッファの初期化をOnInintに置くことができます。
いや、そこでの目標は、それほど原始的なものではありません。
だから、これは解決すべき問題なのです。ゴミはいらない(いらないけど表示の邪魔になる)けど、インジケーターの前の計算を保存しておきたいんです。インジケータを初めて起動したとき、バッファがゴミのようになり、履歴を読み込むときにバッファに挿入されたすべてのものが保存されるはずです...。で、できればファイルやGVに保存しないでください。
を追加しました。
これは、1分ごとのドローダウンをリアルタイムに推定することを目的としています。Expert Advisorは1週間停止せずに動作し、週単位の表示の代わりに最後の値だけが表示され、それはインジケータがなくても表示されます...。
これはあなたの提案ではない、Alexey Viktorov、私が理解するところでは、あなたが必要とするのは、最初の起動時にバッファをゼロにして、すべての種類のページングの間にそれらの中に何も触れないようにすること、これだけです。
OnInit()でバッファ配列が初期化 された場合の動作を再確認しました。
インジケータをチャートから 取り外し、新たに設定しても、すべてのバッファではなく、一部のバッファには古い値が残っています。以前と全く同じというわけでもないのですが、そのうちの1つの値が数本の小節にまたがっているのです。
ああ!それなら納得です。今夜中に連絡します。
返信が遅くなり申し訳ございません。ある時間枠の計算値を保存する唯一の方法は、ファイルに保存することです。ファイルから読み込むときに、データがそれぞれのバーに配置されるように、同期を取る必要があります。例えば、バーのオープン時間(ファイルに保存)が2016.09.05. 25:02 だった場合、チャート上に2016.09.05. 25:01と 同じ時間のバーが表示されます。
あるいは、インジケータ・バッファの初期化の問題に開発者の注意を喚起した方が良いのでは?なぜMT4ではそのような問題がないのですか?もしかしたら、またもや完全な理解ではないのでしょうか?問題は、EACHでチャートからインジケータを取った後にバッファの初期化を必須にしても、全てのバッファにゴミが入っているわけではなく、そこからアンロードすることができないことです...。
個人的には、松葉杖は嫌いではありませんが、この松葉杖があまり複雑でなく、プラスの効果がある場合に限ります。しかし、ファイルに書き込んでから読むというのは、粗末な松葉づえだ。