指標となる質問 - ページ 5

 
最後にもう一つ質問です。

EAで使用するインジケータを作成する場合、前方または後方のどちらでカウントするのが一般的でしょうか?

それとも好みやデザインの問題なのでしょうか?

アドバイスをお願いします

ありがとうございます。

 
https://www.mql5.com/en/articles/1456 少し難しいかもしれませんが、少しずつでも読み進めてください 一度理解すれば、Indicators、EAsとその違いについて学ぶことができます。
 
Agent86:
最後にもう一つ質問です。

EAで使用するインジケータを構築する場合、前方または後方のどちらでカウントするのが一般的でしょうか?

それとも好みや設計の問題なのでしょうか?

チャートは左から右へと進み、古いローソクは左に、新しいローソクは右にあります。インディケータがチャートの古いバーを処理するとき(最新のバーの処理を開始できるように)、それはライブデータで動作する方法の代表である方法でそうするべきではないのですか?

テクニカル・インジケータは 私の得意分野ではありません。

 

通常、私が実際の取引で懸念しているように、過去の遠いバー価格のセット全体は全く関係ありません。ただ、与えられたフレームの中で、最近のほんの一握りのものだけです。

この点で、私はむしろ、インジケータのロジックが十分であれば、iCustomを呼び出して バッファなどを読み込む代わりに、EAが直接使用できる関数やライブラリに「転送」しています。これは問題があることを忘れないでください。

ですから、私にとっての良いインジケータとは、まさにそれを可能にするものです。

 
それぞれを試してみようと思うのですが、0から前方にインクリメントするのがいいような気がするのですが、標準のインジケータはどのようにインクリメントするのでしょうか?

iFractalをEAで使いたい場合、シグナルは自然に発生するような気がします。また、以前のiFractalを参照したい場合、i++で以前のiFractalにシフトするような気がします。

しかし、人のEAを見ると、チャートにインジケーターが表示されています。iCustomの インジケータや自分で追加したインジケータを使っているのか、それともEA自体に組み込まれていて、EAを開くと自動的に表示されるのでしょうか?

私はそれをすべて整理しようとしています。

 
RaptorUK:
https://www.mql5.com/en/articles/1456 少し難しいかもしれませんが、少しずつでも続けてみてください 一度理解すれば、インディケータ、EAとそれらの違いについて学ぶことができます。
ありがとうございます。

このまま苦労し続けるのは嫌なので、MQL4に関するあらゆることを学んで、自分のアイデアをコード化したり、コードベースに少しは貢献できるようになりたいです。

これからも読み続けます。
 
こんにちは。

どなたか、私がこのコードを正しく理解しているかどうか、ご確認いただけますか?

私のprint文は、以前のiFractalを参照していますか?

//maybe something like this to count back to the previous iFractal for reference
//needs work     
    for(i=0; val1==val3; i++)
      {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }
私の限られた知識で思いつくのはこれだけです。

とにかく、もし私がここで作成したものが本当にそうであるなら、前の iFractal に戻るこの方法に何か問題があるのでしょうか。

理論的には正しいと思うのですが。

アドバイスをお願いします

ありがとうございます

 

iFractal を取得するとき、その値は > 0 ですね?

ですから、例えば、最後の上側と下側のiFractalがどこにあったかを知りたい場合は、次のようにすればよいのです ... ...

val1 = 0; val2 = 0; i = 0;

while( val1==0 && val2==0)
   {
   if (iFractals(NULL, 0, MODE_UPPER,i) > 0 && val1==0) val1 = i;
   if (iFractals(NULL, 0, MODE_LOWER,i) > 0 && val2==0) val2 = i;
   i++;
   }
Print("Last UPPER Fractal at ", val1, " Last LOWER Fractal at ", val2);
 
for(i=0; val1==val3; i++) <--- val1==val3??? This is indeed, "tricky"
       {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }

正直なところ、ループの終了条件については、初めて知りました。 これは厄介ですね...。

 

私にはクールに見えますが・・・。あとはバックテスターの中でテストするだけです。私ならこうします。

void start(){
   double val1=0,val3=0;
   for(int i=0; i<=3; i++){
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if(val1>val3){
        Print("Value_1="+val1+" TimeOf_Fractal="+TimeToStr(TimeCurrent()));
        break;
      }
   }
}

フラクタルがどのように形成されるかは覚えていません。3本目のバーで形成されると思います。そして、その前後の2つのバーを考慮します。

上記のコードをEAとして保存し、短いバックテストを実行します。バックテストのチャートに インジケータを添付して確認することができます。

こんな感じです。

2011.10.06 06:38:49     2011.01.02 23:00  De_Bugger EURUSD,M1: Value_1=1.33710000 TimeOf_Fractal=2011.01.02 23:00