ZigZagを使ってトレンドラインを引くためのコード

EA(Expert Advisor)
スポンサーリンク
[注意]本サイトで紹介するコードはあくまでサンプルなので、コピペで正常に動作する保証はありません。また、紹介コードを使った取引で生じたいかなる損失の責任も負いかねます。

どうも、izuです。

今回はMT4による自動売買でZigZagを使ったトレンドラインを引くためのコードを紹介します。

<スポンサーリンク>

 

//---Zigzag--------------------------------------------------------------//
int m,n;
m=0;
n=0;
double Top[10];
double Bottom[10];
int tPosition[10];
int bPosition[10];
   for(int i=0;i<=200;i++)
   {
      double Zg=NormalizeDouble(iCustom(NULL,0,"ZigZag",12,5,3,0,i),5);
      if(Zg!=0 && Zg==NormalizeDouble(High[i],5))
      {
         Top[m++]=Zg;
         tPosition[m-1]=i;
         if(m>=10)break;
      }
      if(Zg!=0 && Zg==NormalizeDouble(Low[i],5))
      {
         Bottom[n++]=Zg;
         bPosition[n-1]=i;
         if(n>=10)break;
      }
}
//---Zigzag END--------------------------------------------------------------//
//---Trend Line--------------------------------------------------------------//
double Open_1 = iOpen(NULL,0,1);
double Y_R,Y_0,Y_1,Y_2;
int X_R,X_1,X_2;
//BUY
if(tPosition[0]<bPosition[0])
{
Y_R = iClose(NULL,0,1);
X_1 = tPosition[1];
X_2 = tPosition[2];
Y_1 = High[X_1];
Y_2 = High[X_2];
X_R = 1;

Y_0 = (Y_1 - Y_2)/(X_2 - X_1)*(X_2 - X_R) + Y_2;
}
//SELL
if(bPosition[0]<tPosition[0])
{
Y_R = iClose(NULL,0,1);
X_1 = bPosition[1];
X_2 = bPosition[2];
Y_1 = Low[X_1];
Y_2 = Low[X_2];
X_R = 1;

Y_0 = (Y_1 - Y_2)/(X_2 - X_1)*(X_2 - X_R) + Y_2;
}
//---Trend Line END--------------------------------------------------------------//

前半部分は以前紹介した「ZigZagの天底の値の取得方」のコードです。

後半部分ではZigZagの直近の底2点、もしくは直近の天井2点を利用して、トレンドライン(直線)の傾きを計算し、現在のトレンドライン上の価格をY_0に格納しています。

実際にトレンドラインをチャートに表示したい場合は「EAで自動的にレジサポラインを引いてみる。サンプルコード」でも使った「ObjectCreate関数」を使ってみてください。

タイトルとURLをコピーしました