//| Bears Power |//+------------------------------------------------------------------+intOnCalculate(.....)
{
int limit=rates_total-prev_calculated; // Количество баров, которые будем считать = ВсегоБаров - РанееПросчитаноif(rates_total<=InpBearsPeriod) return(0);
if(prev_calculated>0) limit++; // Если давно считаем, то захватим и предыдущий бар для точностиfor(int i=0; i<limit; i++)
{
ExtTempBuffer[i]=iMA(NULL,0,InpBearsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtBearsBuffer[i]=low[i]-ExtTempBuffer[i];
}
return(rates_total);
}
こんにちは。
バーオープン時のみ動作するように設定する方法と、全履歴を通じて 毎回(新しいバーごとに)動作しないように設定する方法を教えてください。
今までのインジケーターの代わりとして使いたい。
ロスチスラフ
まず、バーについて。新しいバーが 形成されると、新しい値がTime[0](バーが開く時間)に書き込まれます。
OnCalculate(...)
{
if(Time[0] == t) return(0); // このバーを処理したら→終了
t = Time[0];
これで全体の履歴は:遅くなります。
datetime t;
まず、バーについて。新しいバーを 形成するとき、Time[0]に新しい値を書き込みます - バーが開く時間 です。
OnCalculate(...)
{
if(Time[0] == t) return(0); // このバーが処理された場合 --> exit
t = Time[0]です。
さて、その全貌はというと、「遅くなる
早速のご返信ありがとうございます。新しいバーが 表示されたときに、スローダウンしたり履歴をたどったりせず、新しいバーを処理する方法について質問しているのです。
今のところ、for(int i=limit-1; i>=0; i--)という構成で、私の理解では、バーが開くたびに、履歴全体のすべての値を再計算し、最後のバーだけを使って作業すればいいということですが......。
最後のバーではこのように計算されます。
まず、行を見てみましょう
をわかりやすくするために、このように書き直しました。
アハッ!!!今になって分かってきた...。ループの中で、変数aが1から6に変化する。この変数の値が1、5、6の場合、動作はありません。では、ちょうど
あるいはあなたのスタイルで。
結果は同じですが、より高速に実行されます
今度は、Statistic関数を取り除き、その本体を3回続けて書き、3つの部分の形式パラメータを それぞれ実際のパラメータに置き換え、重複する変数宣言を削除する必要があります。コード全体は少し長くなりますが、実行速度は速くなります。print()を投げ出すのは理にかなっている - この時、一体誰がメッセージログに目を通すのでしょうか?- またはAlert()に置き換えて画面に表示します。 また、namZz2という変数がありますが、その値は変化しますか?
stats()の代わりにstats()を使いたいのですが。バカなことに、おっしゃるとおり3回書き直せばいいのはわかっているのですが、問題は、ほとんどの場合、統計をとった結果、さらに配列を追加しなければならず、遅かれ早かれ元のものに戻ってしまうということです。だからこそ、私がすでに知っている簡単な方法を提供するのですが、それは残念ながら私を最初に導いてくれるでしょう。だからこそ、将来的に戻らなくてもいいように、先を見据えているのです
このコードをどのように統計学者に置くか!? 私は質問を述べたように、冒頭で単一のプロシージャにするために見てください!?
最後のバーでどのように計算されるかを説明します。
以下は、動作中のコードからの抜粋です。中間的なボイドスタットなしで、1つのボイドスタットに集める方法!すべての配列をひとつにまとめて、そこからスクラッチするために、コード全体を作り直さなければならないのです !
あなたの作業コードから引用した抜粋は、間違っているか、あなたの Statistic() 関数が Stat() から呼び出されたときに何もしないか、表示されるかのいずれかです。
いずれにせよ、帰国後すぐに停止します。
何をしたいのか理解するために、コード全体を教えてください。
念のため。MQL4で初心者を助けるスレッドがフォーラムに多すぎる。
このスレッドはサポートが 終了したため、閉鎖しました。
すべての質問は、以下のアクティブなスレッドのいずれかに直接お寄せください。
https://www.mql5.com/ru/forum/160683
https://www.mql5.com/ru/forum/160587
このスレッドへの以降の書き込みはすべて削除されます。