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

 
Zolotai:

コードとは関係ありません。条件が揃えばいいんです。問題は、現在のバーの時刻を知る方法はないのか、ということです。バーの時刻を知るにはどうしたらよいですか?
Time[]iTime() です。
 
Zolotai:

コードとは関係ありません。条件が揃えばいいんです。問題は、現在のバーの時刻を知る方法はないのか、ということです。バーの時間がまったくわからないのですが、どうしたらいいのでしょうか?
Time[index_necessary_bar]; は、"index_necessary_bar" の数字を持つバーのオープン タイムを返します。iTime() は、他のシンボルやタイムフレームにも使用できます。
 

このインジケーターからEAでシグナルを取得する方法

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#define  SH_BUY   1
#define  SH_SELL  -1
extern int     AllBars=0;
extern int     Otstup=30;
extern double  Per=9;
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];

int init()
{
   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   IndicatorBuffers(2);
   IndicatorShortName("SHI_SilverTrendSig");
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,BufU);
   SetIndexBuffer(1,BufD);
   SetIndexDrawBegin(0,Bars-NB);
   SetIndexDrawBegin(1,Bars-NB);
   ArrayInitialize(BufD,0.0);
   ArrayInitialize(BufU,0.0);
   return(0);
}
int start()
{
   int CB=IndicatorCounted();
   if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
   for (SH=1;SH<NB;SH++)
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; }
   }
   return(0);
}

iCustomで試したのですが、行番号やバー番号を指定しても値が2147483647と表示されます.

 
VOLDEMAR:

このインジケーターからEAでシグナルを取得する方法

iCustomで試したのですが、行番号やバー番号を指定しても値が2147483647と表示されます.

この値はEMPTY_VALUE である。信号がない場合は、デフォルトでインジケーターバッファーにあります。バッファを循環させ、空でない値を取得する。
 

このように彼のバッファーをチェックします。

if (Bufer0>0) {               // в double Bufer0 через iCustom() ранее получено значение буфера индикатора 0
   if (Bufer0!=EMPTY_VALUE) {
      // поймали значение в буфере
      }
   }
 
artmedia70:

このように彼のバッファーをチェックします。


わかりました。しかし、バッファに100個の値がある場合、最後の1個をどのように見つけ、最後の1個が買いシグナル か売りシグナルかをどのように判断するのですか?
 
了解です、ありがとうございます。
 
VOLDEMAR:

OK, I get it, but there can be hundreds of values in buffer, how to find last one and how to determine which is last one to buy signal or sell ? 最後の1つはどのように見つけるのでしょうか?

コンパイルしていないのでMTでは見ていませんが、BufDは最初の青バッファ、BufUはゼロの赤バッファです。そこに映し出されるのは、青と赤のドット?そこで、どの色のどの点が何を指しているのかを見てみましょう。そして、赤はゼロバッファに、青は最初のバッファにキャッチします。

まあ...そして、値は、最も可能性の高い最初のバーでキャッチする必要があり、それが再描画されているかどうかを見ていない。あるいは、ゼロバーから値に遭遇するまでのループが必要なのかもしれません。信号の出し方次第では......。

削除済み  
こんにちは、Mt4でどのEAも設定できないのはなぜか、教えてください!ストラテジーをテストすると、すべてのEAがマイナス値を表示します。
 
serjlarkin:
こんにちは、Mt4でExpert Advisorを設定できない理由を教えてください!ストラテジーをテストすると 、すべてのExpert Advisorがマイナス値を 表示します。
どんなマイナス値?