どうも、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関数」を使ってみてください。



