エントリーはゴールデンクロス、デッドクロス(短期平均と長期平均の突き抜け)です。
期間は設定できますのでいろいろ試してみてください。
SMA単純平均でしていますがEMAなども可能です。MModeを変えてみてください。
結果はMACDを超えました。
10万→26万へ!!最適化すればもう少し伸びます。
平均は期間の設定が難しいですね。
短期、長期の期間差を極端に縮めるとピンポイントで損益が上がります。
また長期、短期の期間の逆転でも数字が出るところがあります。
#property copyright "Copyright 201/1/3,TACA"
#property link "http://mt4kyoto.blogspot.jp/"
datetime TimeOld;
int Ticket;
extern int Profit=10;
extern int FastP=3;
extern int SlowP=14;
extern int MMode=0;
double PrSub;
double PosAve;
int Mode=0;
extern double Lots=0.01;
int start(){if(Time[0]!=TimeOld){TimeOld=Time[0];
if(OrdersTotal()==0){Mode=0;}
if(Mode>=0)
{if(iMA(NULL,1,FastP,0,MMode,0,2)<=iMA(NULL,1,SlowP,0,MMode,0,2))
{if(iMA(NULL,1,FastP,0,MMode,0,1)>iMA(NULL,1,SlowP,0,MMode,0,1))
{int b=OrderSend(NULL,0,Lots,Ask,3,0,Bid+Profit*Point,"Long",1231,0,Red);Mode=1;}}}
if(Mode<=0)
{if(iMA(NULL,1,FastP,0,MMode,0,2)>=iMA(NULL,1,SlowP,0,MMode,0,2))
{if(iMA(NULL,1,FastP,0,MMode,0,1)<iMA(NULL,1,SlowP,0,MMode,0,1))
{int c=OrderSend(NULL,1,Lots,Bid,3,0,Bid-Profit*Point,"Short",1231,0,Blue);Mode=-1;}}}
Averaging();
}return(0);}
int Averaging()
{ double LastPrice=0;double PosAll=0;double PosNum=0;
for(int i=0;i<OrdersTotal();i++)
{int d=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
LastPrice=OrderOpenPrice();
PosAll+=LastPrice*OrderLots();
PosNum+=OrderLots();
}
if(PosNum==0){PosAve=0;}
else{ PosAve=PosAll/PosNum;}
for(i=0;i<OrdersTotal();i++)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==True)
{ Ticket=OrderTicket();
if(OrderType()==0)
{PrSub=PosAve+Profit*Point;}
else
{PrSub=PosAve-Profit*Point;}
int e=OrderModify(Ticket,OrderOpenPrice(),0,PrSub,0,CLR_NONE);
}
}
return(0);
}
0 件のコメント:
コメントを投稿