FlagNewBar=false;
if(BarTime!=iTime(NULL,0,0))
{
BarTime=iTime(NULL,0,0);
FlagNewBar=true;
}
if(FlagNewBar==true)
{
// И когда тру, делаем что нужно делать когда появился новый бар, //на следующем тике флаг нового бара будет ложь, так как БарТайм время все время существования нулевого бара будет равным
}
状況は以下の通りです。X変数にはヒストリーのバーのインデックスが格納されており、新しいバーが現れるとシフトが発生することが分かっているので、Xはすでに別のバーを指しています。どうすれば直るのか?考え方:新しいバーが出るたびにカウンターを増やし(count++)、それをXに追加する。したがって、Xはオフセットに関係なく、常に同じバーを指すことになります。しかし、問題があります。EAが初期化されるとき、最初の現在のバーは考慮されるべきではありません。 私は、カウントが最初にちょうど-1に等しい場合、それは簡単に解決することができると思います。つまり、インクリメントカウントの後の現在のバーでは "0 "になり、次の新しいバー(初期化後、最初に1本分シフトした時)では "1 "になります。いかがでしょうか?もしかしたら、全然違うところで考えているのかも?
指標となるものであれば、十分である
を、使用するインジケータのすべての配列とバッファに追加します。
すると、ゼロバーがrates_total-1となります。
状況は以下の通りです。X変数にはヒストリーのバーのインデックスが格納されており、新しいバーが現れるとシフトが発生することが分かっているので、Xはすでに別のバーを指しています。どうすれば直るのか?考え方:新しいバーが出るたびにカウンターを増やし(count++)、それをXに追加する。したがって、Xはオフセットに関係なく、常に同じバーを指すことになります。しかし、問題があります。EAが初期化されるとき、最初の現在のバーは考慮されるべきではありません。 私は、カウントが最初にちょうど-1に等しい場合、それは簡単に解決することができると思います。つまり、インクリメントカウントの後の現在のバーでは "0 "になり、次の新しいバー(初期化後、最初に1本分シフトした時)では "1 "になります。いかがでしょうか?もしかしたら、全然違うところで考えているのかも?
なぜ、そこまでするのか?
その方が楽だから)
でも、プロセッサーが重くなった...。
でも、プロセッサーが重くなった...。
状況は以下の通りです。X変数にはヒストリーのバーのインデックスが格納されており、新しいバーが現れるとシフトされるため、Xはすでに別のバーを指していることが分かっています。どうすれば直るのか?考え方:新しいバーが出るたびにカウンターを増やし(count++)、それをXに追加する。したがって、Xはオフセットに関係なく、常に同じバーを指すことになります。しかし、問題があります - EAが初期化されるとき、最初の現在のバーは考慮されるべきではありません。 私は、カウントが最初にちょうど-1に等しい場合、それは簡単に解決することができると思います。つまり、インクリメントカウントの後の現在のバーでは "0 "になり、次の新しいバー(初期化後、最初に1本分シフトした時)では "1 "になります。いかがでしょうか?もしかしたら、全然違うところで考えているのかも?
ない。EA/indicatorの読み込み時に、ターミナル内ならともかく、ターミナル外のintuやextern、グローバル変数ではXには何もないので、まずそこに何かを書き込まなければならない。そして、単純にバーの総数の変化を読み取ります(新しいバーの出現を考慮します)。
datetime BarTime。
ごあいさつヒントを教えてください。mt5では、初期化時またはティック時にどのようにテストを定義するのですか?
今のところ、OnDeinit() の直前に呼び出されるOnTester()しか見つかりませんでした。
@Valeriy Yastremskiy OnInit()でインデックスがまだXに配置されています。私のコードは次のようなものです:
FlagNewBarとの条件が冗長な気がするのですが。