四連倍倍プッシュ(4R、四連続ナンピン)はエントリー後10Pipsの利益が出れば利益確定、逆に進めば追加エントリー平均化で10Pipsの上昇でクローズ。
四回エントリーチャンスがありますが、どこのエントリー後も10Pips上がれば同じだけ利益が得られるシステムです。(IIは10Pipsの幅を調整できるようにしました)
しかし初めのエントリー後、追加エントリーしないときにはトレイディングストップすることで利益を増やす、もしくは追加エントリー回数を増やすことができるのではとのコンセプトで開発しました。
ソースがだいぶごちゃごちゃになってきたので怒られそうですが、ご容赦ください。
最適化にまる二日かかってしまいました。リスクベネフィットの面で納得できる値が出ていませんが、4Rより利益は出せますでお試しください。
最適化でいい値が出た時は教えてください^^
#property copyright "Copyright 2016/3/6,TACA"
#property link "http://mt4kyoto.blogspot.jp/"
#define MAG 7777777
datetime TimeOld;
extern int RSIPeriod=20;
extern int RSIBL=30;
extern int RSIUL=70;
extern double Profit=2110;
extern double TSP=460;
extern double Lots=0.05;
double TSSL;
double TProfit;
double StopLoss;
double Entry;
double Type[4]={0,0,0,0};
double Mode;
double ModeOld;
int Ticket;
int Slip=3;
int d;
int i;
int init(){Profit*=Point;TSP*=Point;return(0);}
void start(){
if(Time[0]!=TimeOld){TimeOld=Time[0];
if(OrdersTotal()==0){ModeOld=0;
if(iRSI(NULL,0,RSIPeriod,0,1)<=RSIBL)
{LongEntry();}
if(iRSI(NULL,0,RSIPeriod,0,1)>=RSIUL)
{ShortEntry();}
}//Orderstotal
}//Time
Modify();
if (OrdersTotal()!=4){Delete();}
}//start
void TSU()
{if(Entry+TSP<Close[0]&&TSSL+TSP<Close[0])
{TSSL=Close[0]-TSP;
d=OrderSelect(Ticket,SELECT_BY_TICKET);
d=OrderModify(OrderTicket(),OrderOpenPrice(),TSSL,0,0,clrNONE);
}
}
void TSD()
{if(Entry-TSP>Close[0]&&TSSL-TSP>Close[0])
{TSSL=Close[0]+TSP;
d=OrderSelect(Ticket,SELECT_BY_TICKET);
d=OrderModify(OrderTicket(),OrderOpenPrice(),TSSL,0,0,clrNONE);
}
}
void NTS()
{
if (Mode<4){TProfit=Entry+(Mode-2)*Profit;}else{TProfit=Entry+(6-Mode)*Profit;}
if(Mode==3||Mode==7){TProfit=0;}
for(i=0;i<4;i++)
{d=OrderSelect(i,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,TProfit,0,clrNONE);
}
}
void Modify(){Comment("");
for(i=0;i<4;i++){d=OrderSelect(i,SELECT_BY_POS);Type[i]=OrderType();}
if (Type[0]==0){Mode=(Type[1]+Type[2]+Type[3])/2;}
else{Mode=(1+Type[1]+Type[2]+Type[3])/2+2;}
if(ModeOld!=Mode)
{ModeOld=Mode;
NTS();}
if (Mode==3){TSU();}
else
if (Mode==7){TSD();}
}
void Delete()
{for (i=OrdersTotal()-1; i>=0; i--)
{d=OrderSelect(i,SELECT_BY_POS);
d=OrderDelete(OrderTicket(),clrNONE);
} }
void LongEntry(){TSSL=Ask;
Entry=Ask;StopLoss=Ask-Profit*4;
Ticket=OrderSend(NULL,OP_BUY ,Lots, Ask, Slip,StopLoss,0,"Long1",MAG,0,Red);
d=OrderSend(NULL,OP_BUYLIMIT,Lots, Ask-Profit*1,Slip,StopLoss,0,"Long2",MAG,0,Red);
d=OrderSend(NULL,OP_BUYLIMIT,Lots*2,Ask-Profit*2,Slip,StopLoss,0,"Long3",MAG,0,Red);
d=OrderSend(NULL,OP_BUYLIMIT,Lots*4,Ask-Profit*3,Slip,StopLoss,0,"Long4",MAG,0,Red);
}
void ShortEntry(){TSSL=Bid;
Entry=Bid;StopLoss=Bid+Profit*4;
Ticket=OrderSend(NULL,OP_SELL, Lots, Bid, Slip,StopLoss,0,"Short1",MAG,0,Blue);
d=OrderSend(NULL,OP_SELLLIMIT,Lots, Bid+Profit*1,Slip,StopLoss,0,"Short2",MAG,0,Blue);
d=OrderSend(NULL,OP_SELLLIMIT,Lots*2, Bid+Profit*2,Slip,StopLoss,0,"Short3",MAG,0,Blue);
d=OrderSend(NULL,OP_SELLLIMIT,Lots*4, Bid+Profit*3,Slip,StopLoss,0,"Short4",MAG,0,Blue);
}
0 件のコメント:
コメントを投稿