2016年3月2日水曜日

【新旧対決】RSI4RII(RSI 1分足)vs RSI4RIIW(RSI1分足&&5分足)

EAの名前が長くなってきました。
改良ごとにVer1.0.0 ver 1.1.0などとすればいいのですが、
後から見た時に自分が思い出せなくなるので名前にしています。
子供を作りすぎて名前を覚えられない親といったところでしょうか(最低です)

自動車でもモデルチェンジごとに名前が長くなることはあるようで
「インプレッサ WRX typeRA STi VersionII V-Limited」
などというとんでもなく長い名前の車もあったようです。

今回はRSI(エントリー)4R(四回限定ナンピン)II(うるう年記念レート可変)
RSI4RII w(一分足&&五分足のハーモニー)システムの対決。
こちらの予告?の一つです。
(リンク先ソースコードにミスがあったので修正しましたmm)
EAの比較の条件設定ですが両者とも期間20 30,70のライン設定。
Profitを100-200 幅10での最適化結果をご覧ください。
パス1はプロフィット100 2は110ということになります。

予想通りWは取引数が1/3程度に減っています。
最大の利益を出したのは旧タイプのパス5 16,660です。
プロフィットファクターはwが大きくなっています。
また、旧タイプは6/11がマイナスですがwは一つです。
ドローダウン%も旧タイプは10.78-27.31 wは5.74-17.30
実はRSIのwシステムなど取引数が少なくありえんと思っていたのですが、
この結果には驚かされました。
期間、ライン、LOTSを最適化すればムフフかもしれませんw




#property copyright "Copyright 2016/3/2,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
#define MAG 201632

datetime TimeOld;
extern int RSIPeriod=20;
extern int RSIBL=30;
extern int RSIUL=70;
extern double Profit=170;
extern double Lots=0.01;
double TProfit;
double StopLoss;
double Entry;
double Type[4]={0,0,0,0};
double Mode;
double ModeOld;
int Slip=3;
int d;
int i;
int init(){Profit*=Point;return(0);}
int start(){

if(Time[0]!=TimeOld){TimeOld=Time[0];
if(OrdersTotal()==0){
if(iRSI(NULL,5,RSIPeriod,0,1)<=RSIBL){
if(iRSI(NULL,1,RSIPeriod,0,1)<=RSIBL)
{LongEntry();}}
if(iRSI(NULL,5,RSIPeriod,0,1)>=RSIUL){
if(iRSI(NULL,1,RSIPeriod,0,1)>=RSIUL)
{ShortEntry();}}
}
}
Exit();
Modify();
return(0);}

void LongEntry(){
Entry=Ask;Mode=3;ModeOld=3;StopLoss=Ask-Profit*4;
 d=OrderSend(NULL,OP_BUY    ,Lots,  Ask,    Slip,StopLoss,Ask+Profit,"Long1",MAG,0,Red);
 d=OrderSend(NULL,OP_BUYLIMIT,Lots,  Ask-Profit*1,Slip,StopLoss,Ask+Profit,"Long2",MAG,0,Red);
 d=OrderSend(NULL,OP_BUYLIMIT,Lots*2,Ask-Profit*2,Slip,StopLoss,Ask+Profit,"Long3",MAG,0,Red);
 d=OrderSend(NULL,OP_BUYLIMIT,Lots*4,Ask-Profit*3,Slip,StopLoss,Ask+Profit,"Long4",MAG,0,Red);
}
void ShortEntry(){
Entry=Bid;Mode=7;ModeOld=7;StopLoss=Bid+Profit*4;
 d=OrderSend(NULL,OP_SELL,    Lots,   Bid,    Slip,StopLoss,Bid-Profit,"Short1",MAG,0,Blue);
 d=OrderSend(NULL,OP_SELLLIMIT,Lots,   Bid+Profit*1,Slip,StopLoss,Bid-Profit,"Short2",MAG,0,Blue);
 d=OrderSend(NULL,OP_SELLLIMIT,Lots*2, Bid+Profit*2,Slip,StopLoss,Bid-Profit,"Short3",MAG,0,Blue);
 d=OrderSend(NULL,OP_SELLLIMIT,Lots*4, Bid+Profit*3,Slip,StopLoss,Bid-Profit,"Short4",MAG,0,Blue);
}
void Modify(){
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;
if (Mode<4){TProfit=Entry+(Mode-2)*Profit;}else{TProfit=Entry+(6-Mode)*Profit;}
for(i=0;i<4;i++){
d=OrderSelect(i,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,TProfit,0,Green);
}}}

void Exit(){
if (OrdersTotal()!=4){
    for (i=OrdersTotal()-1; i>=0; i--){
d=OrderSelect(i,SELECT_BY_POS);
d=OrderDelete(OrderTicket(),clrNONE);

}}}

0 件のコメント:

コメントを投稿