メタトレーダー自動売買チャンピオンシップ挑戦記

MT4・MT5の発売元であるMetaQuotes Software Corp社主催だった Automated Trading Championship の参加記録でしたが、今年から非公式のに。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

今回出場EAのロジック(2)

今週最も強いトレンドを示すと思われる通貨ペアのベスト3を
判断する部分です。ホントは2次元配列でやりたかったのですが・・・。
汚いコードで恥ずかしいです。
実戦用にするとしたら、最大ポジ数の制限(コンテストは3本まで)がないわけですから、
トレンドの強さ(pairstrend[i])が20以上でエントリー許可とか。
1本のEAにしなくてもいいので、各通貨ペアごとに、最適化すればOKですね。
そうすれば、BTもできるし。そのうちうpします。

//+------------------------------------------------------------------+

void Call_SMA()
{
for(i=0; i<9; i++)
{
pairstrend[i]=0;

SMA1=iMA(pairs[i],240,MA1_period,0,0,PRICE_MEDIAN,0);
SMA2=iMA(pairs[i],240,MA2_period,0,0,PRICE_MEDIAN,0);
SMA3=iMA(pairs[i],240,MA3_period,0,0,PRICE_MEDIAN,0);
SMA4=iMA(pairs[i],240,MA4_period,0,0,PRICE_MEDIAN,0);
SMA5=iMA(pairs[i],240,MA5_period,0,0,PRICE_MEDIAN,0);
pSMA1=iMA(pairs[i],240,MA1_period,0,0,PRICE_MEDIAN,1);
pSMA2=iMA(pairs[i],240,MA2_period,0,0,PRICE_MEDIAN,1);
pSMA3=iMA(pairs[i],240,MA3_period,0,0,PRICE_MEDIAN,1);
pSMA4=iMA(pairs[i],240,MA4_period,0,0,PRICE_MEDIAN,1);
pSMA5=iMA(pairs[i],240,MA5_period,0,0,PRICE_MEDIAN,1);

if(SMA1>SMA2 && SMA2>SMA3 && SMA3>SMA4 && SMA4>SMA5)
pairstrend[i]=pairstrend[i]+10;
if(SMA1<SMA2 && SMA2<SMA3 && SMA3<SMA4 && SMA4<SMA5)
pairstrend[i]=pairstrend[i]-10;
if(SMA1>pSMA1)pairstrend[i]=pairstrend[i]+2;
if(SMA2>pSMA2)pairstrend[i]=pairstrend[i]+2;
if(SMA3>pSMA3)pairstrend[i]=pairstrend[i]+2;
if(SMA4>pSMA4)pairstrend[i]=pairstrend[i]+2;
if(SMA5>pSMA5)pairstrend[i]=pairstrend[i]+2;
if(SMA1<pSMA1)pairstrend[i]=pairstrend[i]-2;
if(SMA2<pSMA2)pairstrend[i]=pairstrend[i]-2;
if(SMA3<pSMA3)pairstrend[i]=pairstrend[i]-2;
if(SMA4<pSMA4)pairstrend[i]=pairstrend[i]-2;
if(SMA5<pSMA5)pairstrend[i]=pairstrend[i]-2;
if(SMA1-SMA2>pSMA1-pSMA2)pairstrend[i]=pairstrend[i]+1;
if(SMA2-SMA3>pSMA2-pSMA3)pairstrend[i]=pairstrend[i]+1;
if(SMA3-SMA4>pSMA3-pSMA4)pairstrend[i]=pairstrend[i]+1;
if(SMA4-SMA5>pSMA4-pSMA5)pairstrend[i]=pairstrend[i]+1;
if(SMA2-SMA1>pSMA2-pSMA1)pairstrend[i]=pairstrend[i]-1;
if(SMA3-SMA2>pSMA3-pSMA2)pairstrend[i]=pairstrend[i]-1;
if(SMA4-SMA3>pSMA4-pSMA3)pairstrend[i]=pairstrend[i]-1;
if(SMA5-SMA4>pSMA5-pSMA4)pairstrend[i]=pairstrend[i]-1;

}

int trend1=0,trend2=0,trend3=0;
for(j=0; j<3; j++)
{
for(i=0; i<9; i++)
{
if(MathAbs(pairstrend[i])>=trend1)
{
pairsweek[0]=pairs[i];
if(pairstrend[i]>0) pairsweekbuy[0]=true;
else pairsweekbuy[0]=false;
trend1=MathAbs(pairstrend[i]);
}

if(MathAbs(pairstrend[i])<trend1 && MathAbs(pairstrend[i])>=trend2)
{
pairsweek[1]=pairs[i];
if(pairstrend[i]>0) pairsweekbuy[1]=true;
else pairsweekbuy[1]=false;
trend2=MathAbs(pairstrend[i]);
}

if(MathAbs(pairstrend[i])<trend2 && MathAbs(pairstrend[i])>=trend3)
{
pairsweek[2]=pairs[i];
if(pairstrend[i]>0) pairsweekbuy[2]=true;
else pairsweekbuy[2]=false;
trend3=MathAbs(pairstrend[i]);
}
}
}
if(trend2<11)
{
pairsweek[1]=pairsweek[0];
pairsweekbuy[1]=pairsweekbuy[0];
pairsweek[2]=pairsweek[0];
pairsweekbuy[2]=pairsweekbuy[0];
}
if(trend3<11)
{
pairsweek[2]=pairsweek[0];
pairsweekbuy[2]=pairsweekbuy[0];
}
Comment(pairsweek[0],",",pairsweek[1],",",pairsweek[2],",",pairsweekbuy[0],",",pairsweekbuy[1],",",pairsweekbuy[2],",",trend1,",",trend2,",",trend3);
sma=true;
return(0);
}

//+------------------------------------------------------------------+

つづきを表示

スポンサーサイト

PageTop

ほぼ原資回復

あと30セント。
来週は、EURCHF,USDCADは同じですが、
EURJPYに替えて、AUDUSDでいきます。(ちゃんと動けば)
Participant alohafx - Automated Trading Championship 2008
PageTop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。