MQL4でのフィボナッチレベル - ページ 6

 
このインジケータから私のEAにフィボナッチラインを書くにはどうしたらいいでしょうか、例えば1本のラインを表示してください。
ファイル:
 
459275:
このインジケーターからEAにフィボナッチラインを書くには、例えば1本の線に表示させる方法を教えてください。

コードのこの部分を取り出してみてください。

   double lowest=1000, highest=0;
   datetime T1,T2;
   for(int i=lookback+lastbar;i>lastbar+1;i--)
   {  
      double curLow0=iLow(Symbol(),Period(),i-2);
      double curLow1=iLow(Symbol(),Period(),i+1);
      double curLow2=iLow(Symbol(),Period(),i);
      double curLow3=iLow(Symbol(),Period(),i-1);
      double curLow4=iLow(Symbol(),Period(),i-2);
      
       double curHigh0=iHigh(Symbol(),Period(),i+2);
       double curHigh1=iHigh(Symbol(),Period(),i+1);
        double curHigh2=iHigh(Symbol(),Period(),i);
         double curHigh3=iHigh(Symbol(),Period(),i-1);
         double curHigh4=iHigh(Symbol(),Period(),i-2);
         
      if(curLow2<=curLow1 && curLow2<=curLow1 && curLow2<=curLow0 )
      {
      if(lowest>curLow2){
         lowest=curLow2;
         T2=iTime(Symbol(),Period(),i);}
      }
      
      if(curHigh2>=curHigh1 && curHigh2>=curHigh3&& curHigh2>=curHigh4)
      {  
         if(highest<curHigh2){
         highest=curHigh2;
         T1=iTime(Symbol(),Period(),i);}
      }
   
   
   }  

Expert Advisorに挿入します。変数highstとlowestはレベル0と100を持ち、残りのレベルを計算します。

変数T1とT2から時間によって、0より上の100、または100より上の0を決定することができる。

 
この部分を挿入しましたが、頭脳が足りません。 勉強中です。 簡単なものはできますが、これはまだできません。 他のレベルはどのように計算すればいいのですか?
 

ゼロレベルに係数を掛けた範囲を追加する。この係数は、Fiboのレベルが設定されているコードの下にあります。

0.236, 0.382, 0.50, 0.618...

Level0 と Level100 という変数を追加し、T1 と T2 に応じて値を割り当てるのがよいでしょう。

if(T1<T2){
   Level0=highest;
   Level100=lowest;
}
else{
   Level100=highest;
   Level0=lowest;
}

あるいはその逆もしかり。

if(T1<T2){
   Level100=highest;
   Level0=lowest;
}
else{
   Level0=highest;
   Level100=lowest;
}

実験してみないとわからないですね))

あとはレベルを計算するだけです。

Level=Level0+(Level100-Level0)*K;

各レベル(各Kの場合)。

 
Dmitry Fedoseev:

ゼロレベルに係数を掛けた範囲を追加する。この係数は、Fiboのレベルが設定されているコードの下にあります。

0.236, 0.382, 0.50, 0.618...

Level0 と Level100 という変数を追加し、T1 と T2 に応じて値を割り当てるのがよいでしょう。

あるいはその逆もしかり。

実験してみないとわからないですね))

あとはレベルを計算するだけです。

Level=Level0+(Level100-Level0)*K;

各レベル(各Kの場合)。

 
459275:

...

Print()、Comment()を使って、どんな結果が得られるか、オリジナルと比較してみてください。係数が間違っていることがはっきりわかる以上、100で割ればいいのです。
 
459275:

ちゃんとできたかな? if(T1<T2){.

Level0=最高レベル。

Level100=最低。

}

else{

Level100=最高。

Level0=最低。

}

double K=lowest-highest;

double Level2=Level0+(Level100-Level0)*23.6;

double Level3=Level0+(Level100-Level0)*38.2;

double Level4=Level0+(Level100-Level0)*50.0;

double Level5=Level0+(Level100-Level0)*61.8;

double Level6=Level0+(Level100-Level0)*78.6;

 
100で割ってみたが、次はどうすればいいのか? また、このレベルからの信号はどう設定すればいいのか?
 
459275:
それを100で割って、そのレベルからの信号をどう書くか?

どのように使うかは、あなた以外にはわからない。そもそも、オリジナルと一致しているかどうかを確認する必要があります。

 
このチェックはどのように行われるのですか?