externint n=4;
//+------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------+int start()
{
//----for (int x=n; x>1; x--)
{
if(Close[x]==Open[x])
{
Print("Бар номер ",n," плоский :)");
continue;
}
if(Close[x]<Open[x])
{
Print("Бар номер ",n," медвежий");
continue;
}
else// if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить// т.к. два случая (равно и меньше) уже обработаны
{
Print("Бар номер ",n," бычьий");
}
}
//----return(0);
}
//+------------------------------------------------------------------+
もしかしたら、私が質問から理解したことと、あなたが言いたかったことは違っていたかもしれません。私の例では、3本と2本、2本と1本の始値を比較していますが、3本と1本は比較されていません。比較した値が等しい場合、何も起こらず、次の比較に移ります。なぜx>1なのか(>=ではない)。最初の反復では、Open[3]==Open[3-1]、すなわちOpen[3]==Open[2]が比較されます。OKです。2番目(x=2)では、Open[2]==Open[1]となります。OKです。3回目のイテレーションはありません。x>=1ではOpen[1]==Open[0]となり、0本と比較されてしまうのでNGです。
ありがとうございました。また、3本のバーのそれぞれの始 値と終値を比較すると、コードが変わってしまうのでしょうか?
いいえ、そうではありません。新しいティックごとに、 Flag の値が真になります。https://book.mql4.com/ru/variables/types
変数の宣言は、例えばプログラムの冒頭で、すべての関数の外側でグローバルに宣言することもできます。
あるいは、変数を静的にする - static bool flag=true; .
ありがとうございました。また、3本のバーの始値と終値をそれぞれ比較した場合、コードはそこまで変化するのでしょうか?
問題を明確にするために同じバーの 始値と終値を比較する必要があります。つまり、バー番号nが弱気か強気かを比較するのです。以下のスクリプトを引用ウィンドウに投げる。
ここで正しくコードを挿入するには、SRCをクリックし、そこにあるコードをクリックします。
このEAを見積もり窓口に投げる。
インジケーターがシフト値を書き込むだけみたいなのは理解できたので窓で投げたのですが、設定で何段階必要なのか追加できるようにするには何を追加すればいいのでしょうか?
窓際に置いて、インジケータがシフト値を書き込むだけのようなのは理解できるのですが、何段階必要か設定に追加できるようにするには、コードに何を追加すればいいのでしょうか? 。
シフト値を書き込むことはありません。記憶が正しければ、このコードではシフトを指定せず、MAHAの値を読み取るだけです。だから、この値を出力する。
MA値に対するシフト値を確認するには、外部パラメータでこの値を設定し、上方シフトの場合はMA値+シフト値*ポイント、下方シフトの場合はMA値-シフト値*ポイントを出力 する必要があります。
ウインドウに投げたのは、インジケーターがシフト値を書き込むだけと同じで、理解できたのですが、設定で何段階でも追加できるように、コードに何を追加すればいいのでしょうか?
いいえ、そんなことはありません。与えられたポイント数だけMAを上下にシフトさせる必要があります。歴史に残るバーシフトではありません。
いいえ、そんなことはありません。与えられたポイント数だけMAを上下にシフトさせる必要があります。歴史に残るバーシフトではありません。