ブルベアもノリ?が良かったのですがMAはさらに良い成績が出ました。
単純に平均ではなく平均の乖離率をオシレーター使用していますので名前をMADにしました。
少し期間をかえてのバックテストですが、安定していい数字が出ています。
しかし!!!!
勝率が気に入りません。
純益 = (勝率 x 平均価値トレード + 負率 x 平均敗トレード) x 総取引数
ですので一概に勝率だけではないのですが、上げたいのは人の心です。
そこでコンビ―ネーションにします。
RSIの二階建てやMACD+RSIなどよくやる手法なので一通り試すことにします。
↓
完敗です。利益が上がるものはできませんでした。
しかし、気になるものが一点だけ
MAD&MACDです。
勝率は43.16%から46.84%に大幅アップ
平均勝トレードは241から254へ微増
平均敗トレードは-144から―150へ微減
素晴らしい限りですがトレード数が約28,000から2,487へ大幅ダウン
複利システムの場合勝率が非常に重要なポイントになりますが、これではどうでしょうか・・・
平均勝トレードは241から254へ微増
平均敗トレードは-144から―150へ微減
素晴らしい限りですがトレード数が約28,000から2,487へ大幅ダウン
複利システムの場合勝率が非常に重要なポイントになりますが、これではどうでしょうか・・・
#property copyright "Copyright 2016/5/9,TACA"
#property link "http://mt4kyoto.blogspot.jp/"
extern int TSProfit=20;
extern int MAPeriod=5;
extern double MADevision=0.0003;
extern int MAGIC=9;
extern int Spread=4;
extern double Lots=0.1;
datetime TimeOld;
int d,i;
double TSL,OTSL,SL;
double MAD(){return((iMA("",0,MAPeriod,0,0,0,1)-Close[0])/Close[0]);}
double RSI(){return(iRSI("",0,14,0,1));}
double Bands(int Mode){return(iBands("",0,20,2,0,0,Mode,1));}
double MACD(int Mode,int Shift){return(iMACD("",0,12,26,9,0,Mode,Shift));}
void OnTick()
{
TS();
if(OrdersTotal()==0){
if(MarketInfo(Symbol(),MODE_SPREAD)<=Spread){
if(Time[0]!=TimeOld){TimeOld=Time[0];
if(MAD()>MADevision && MACD(0,1)>MACD(1,1)&&MACD(0,1)<0){E(0);}
if(MAD()<-1*MADevision && MACD(0,1)<MACD(1,1)&&MACD(0,1)>0){E(1);}
}}}}
void E(int BoS){
if(BoS==0){TSL=Ask;SL=TSL-TSProfit*Point;}
else{TSL=Bid;SL=TSL+TSProfit*Point;}
d=OrderSend(Symbol(),BoS,Lots,TSL,2,SL,0,NULL,MAGIC,0,0);}
void TS()
{d=OrderSelect(0,SELECT_BY_POS);if(OrderType()==0)
{if(TSL<Close[0]){TSL=Close[0];SL=TSL-TSProfit*Point;}}
else
{if(TSL>Close[0]){TSL=Close[0];SL=TSL+TSProfit*Point;}}
if(TSL!=OTSL)
{OTSL=TSL;for(i=OrdersTotal()-1;i>=0;i--)
{d=OrderSelect(i,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0,0);}}}
#property link "http://mt4kyoto.blogspot.jp/"
extern int TSProfit=20;
extern int MAPeriod=5;
extern double MADevision=0.0003;
extern int MAGIC=9;
extern int Spread=4;
extern double Lots=0.1;
datetime TimeOld;
int d,i;
double TSL,OTSL,SL;
double MAD(){return((iMA("",0,MAPeriod,0,0,0,1)-Close[0])/Close[0]);}
double RSI(){return(iRSI("",0,14,0,1));}
double Bands(int Mode){return(iBands("",0,20,2,0,0,Mode,1));}
double MACD(int Mode,int Shift){return(iMACD("",0,12,26,9,0,Mode,Shift));}
void OnTick()
{
TS();
if(OrdersTotal()==0){
if(MarketInfo(Symbol(),MODE_SPREAD)<=Spread){
if(Time[0]!=TimeOld){TimeOld=Time[0];
if(MAD()>MADevision && MACD(0,1)>MACD(1,1)&&MACD(0,1)<0){E(0);}
if(MAD()<-1*MADevision && MACD(0,1)<MACD(1,1)&&MACD(0,1)>0){E(1);}
}}}}
void E(int BoS){
if(BoS==0){TSL=Ask;SL=TSL-TSProfit*Point;}
else{TSL=Bid;SL=TSL+TSProfit*Point;}
d=OrderSend(Symbol(),BoS,Lots,TSL,2,SL,0,NULL,MAGIC,0,0);}
void TS()
{d=OrderSelect(0,SELECT_BY_POS);if(OrderType()==0)
{if(TSL<Close[0]){TSL=Close[0];SL=TSL-TSProfit*Point;}}
else
{if(TSL>Close[0]){TSL=Close[0];SL=TSL+TSProfit*Point;}}
if(TSL!=OTSL)
{OTSL=TSL;for(i=OrdersTotal()-1;i>=0;i--)
{d=OrderSelect(i,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0,0);}}}
0 件のコメント:
コメントを投稿