どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 136

 
paladin80:
もしかしたら、私が質問から理解したことと、あなたが言いたかったことは違っていたかもしれません。私の例では、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本のバーのそれぞれの 値と終値を比較すると、コードが変わってしまうのでしょうか?
extern int n=4;
//-----------------------------------------------+
for (x=n;x>1;x--)
   {
    if(Close[x]==Open[x]) continue;
      if(Close[x]<Open[x])
     {
      action
     }
     else{
      if(Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS:

いいえ、そうではありません。新しいティックごとに、 Flag の値が真になります。https://book.mql4.com/ru/variables/types

変数の宣言は、例えばプログラムの冒頭で、すべての関数の外側でグローバルに宣言することもできます。

あるいは、変数を静的にする - static bool flag=true; .

ただ、この変数は再起動時に再初期化されることを覚えておいてください。ですから、このやり方はテスターとしては許容範囲ですが、実際の取引には向きません。
 
皆さん、指標を提示していただけませんか?2枚のスライドがベースになっています。そして、交差するときは矢印で方向を知らせます。見つかりません、ありがとうございます。
 
skyjet:

ありがとうございました。また、3本のバーの始値と終値をそれぞれ比較した場合、コードはそこまで変化するのでしょうか?

問題を明確にするために同じバーの 始値と終値を比較する必要があります。つまり、バー番号nが弱気か強気かを比較するのです。以下のスクリプトを引用ウィンドウに投げる。

extern int 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);
  }
//+------------------------------------------------------------------+
 
paladin80:

ここで正しくコードを挿入するには、SRCをクリックし、そこにあるコードをクリックします。

このEAを見積もり窓口に投げる。


インジケーターがシフト値を書き込むだけみたいなのは理解できたので窓で投げたのですが、設定で何段階必要なのか追加できるようにするには何を追加すればいいのでしょうか?
 
Danila_mactep:

窓際に置いて、インジケータがシフト値を書き込むだけのようなのは理解できるのですが、何段階必要か設定に追加できるようにするには、コードに何を追加すればいいのでしょうか? 。

シフト値を書き込むことはありません。記憶が正しければ、このコードではシフトを指定せず、MAHAの値を読み取るだけです。だから、この値を出力する。

MA値に対するシフト値を確認するには、外部パラメータでこの値を設定し、上方シフトの場合はMA+シフト値*ポイント、下方シフトの場合はMA値-シフト値*ポイントを出力 する必要があります。

 
Danila_mactep:

ウインドウに投げたのは、インジケーターがシフト値を書き込むだけと同じで、理解できたのですが、設定で何段階でも追加できるように、コードに何を追加すればいいのでしょうか?
extern int  sdvig=0;
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, sdvig);
  Comment("Для бара номер ",sdvig," значение МА = ",DoubleToStr(MA,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
}
 
paladin80:


いいえ、そんなことはありません。与えられたポイント数だけMAを上下にシフトさせる必要があります。歴史に残るバーシフトではありません。
 
artmedia70:

いいえ、そんなことはありません。与えられたポイント数だけMAを上下にシフトさせる必要があります。歴史に残るバーシフトではありません。
extern int move=100; 
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, 0);
  double Sdvig=MA+(move*Point);
  Comment("Сдвиг на ",sdvig," пунктов от МА = ",DoubleToStr(Sdvig,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
} 
 
paladin80:

そして今、マイナスにも...。そして、彼は幸せになる :)それとも、自分でシフトダウンする方法を「考える」ように任せるのでしょうか?