//начало кода - самый верхint counted;
int init(){
counted=Bars; // запомним общее количество баров на активном ТФ
Myorders();
return(0);
}
int start(){
Myorders();
........................
// я рассполагаю этот код в самом конце ф-ции start() - мне так удобнееint bar = Bars;
if (bar != counted ) { // сравним запомненное кол-во баров с текущим если они равны тогда нет нового бара на активном ТФ
counted= bar;
// код который необходимо выполнить по закрытию/открытию бара
}
return(0);
}
新しいローソクの時刻はTime[0]です。 。
と、さらに新しいキャンドルの 到着を判断するにはどうしたらいいのでしょうか?
と、さらに新しいキャンドルの到着を判断する方法は?
を変数に記憶させ、比較する。
これからやってみようと思います...。
と新しいキャンドルの到着を識別する方法は?
いくつかの選択肢がありますが、ここではそのうちのいくつかをご紹介します。
1. Expert Advisor を起動する際に、チャート上のバーの合計数を記憶し、Expert Advisor の実行中にバーの 数の変化を監視します。
2.最後のバーが開く時間を覚えておく。コードはほぼ同じ。
use datetime last=Time[0];
と比較し、 last==Time[0] --> 最後に開いた時間が前回と同じであれば、新しいバーがあることを意味します。
1と2のどちらが効率的かわからない - 端末への履歴の自動ダウンロードに疑問があるが、問題はないと思う。
いくつかの選択肢がありますが、ここではそのうちのいくつかをご紹介します。
1. Expert Advisor を起動する際に、チャート上のバーの合計数を記憶し、Expert Advisor の実行中にバーの数の変化を監視します。
は動作しません。バーの数には限りがあります。
合計数は重要ではありませんので、それは、動作します、チャート上のバーの数が 変更された 唯一の瞬間、この時点で変数バー!=カウントされ、注意を払う、私は意図的にintバー=バーを覚えて、 - バーの値を失わないために、次に比較して、この値は=バーカウント割り当て、 - とあなたは余分な変数なしでバーですべてを行うことができます - しかし、私は再保険することを決めた。
また、ヒストリーオートポンプ中に小さなカズッツがあるかもしれないと述べました。
チャートのバーの数が変わった瞬間にしか 興味がない
設定で設定した最大値に達した後は、チャートのバーの数は増えないはずです。ただし、ジャンプする可能性があるので、確認していませんが、その時はキャッチできるかもしれませんが、これはすでに文書化されていないオプションです。
それが疑問だった。最大値に達したときに確認したのですが・・・。Barsは変化せず、ウィンドウのMax barsと等しいままです(プロパティを参照)。
という質問でした。最大値に達したときに確認したのですが...。Barsは変化せず、ウィンドウのMax barsと等しいままです(プロパティを参照)。
まあ、そういうことなので、最初の選択肢はうまくいきません。
はい、最初のオプションは機能しません、私は非標準の時間枠で作業していますが、2番目のオプションは機能します。皆さん、ありがとうございました。