ADXの一分足の成績が思ったより良かったのでADX 4Rを作成しました。
Volは前回よかった27を採用、4Rの幅は580にしました。
もう少し利益が欲しいところですがなかなか素敵です。
さすがはADX様 いままで邪険にしていてごめんね。
と、ここまではいつもの流れなのですがビジュアルモードで動きを確認してみると、
ADXがシグナルを出してエントリーその後数十分から数時間後に利益確定。
利益確定までを短くすればもっとエントリーできるのでは、
いやまてよ、そもそも一分足のADXで数時間後を予想することはできるのだろうか・・・
細かく確認してみると
ADXのシグナル発生 ⇒ エントリー ⇒
シグナル発生x20~100 ⇒ クローズ
なんという事でしょう、全くADXが関与していないことが発覚しました(^^;)
このまま、Vシステムを結合する予定だったのですが、またも予定変更です。
ソースコードでございます。
Modifyルーチンは傑作だと思っております。
#property copyright "Copyright 2016/3/25,TACA"
#property link "http://mt4kyoto.blogspot.jp/"
extern int MAGIC=747;
extern int Vol=27;
extern double Profit=580;
extern double Lots=0.03;
double TProfit;double StopLoss;double Entry;
double Type[4]={0,0,0,0};
double Mode;double ModeOld;
int d;int i;datetime TimeOld;
int init(){Profit*=Point;return(0);}
//---Main Routine---
void OnTick(){
if(Time[0]!=TimeOld){TimeOld=Time[0];
if(OrdersTotal()==0){
if(TACAADX(0,1)>Vol){
if(TACAADX(1,2)<TACAADX(2,2)){if(TACAADX(1,1)>TACAADX(2,1)){EL();}}
if(TACAADX(1,2)>TACAADX(2,2)){if(TACAADX(1,1)<TACAADX(2,1)){ES();}}
}
}
}
Del();
Modify();
}
//---TACA ADX Routine---
double TACAADX(int Modes,int Shift){return(iADX(NULL,0,14,0,Modes,Shift));}
//---Long Entry Routine---
void EL(){
Entry=Ask;Mode=3;ModeOld=3;StopLoss=Ask-Profit*4;
d=OrderSend(NULL,OP_BUY ,Lots, Ask, 3,StopLoss,Ask+Profit,"Long1",MAGIC,0,Red);
for(i=0;i<3;i++)
{d=OrderSend(NULL,OP_BUYLIMIT,Lots*MathPow(2,i),Ask-Profit*(i+1),3,StopLoss,Ask+Profit,"Long"+(i+2),MAGIC,0,Red);}}
//---Short Entry Routine---
void ES(){
Entry=Bid;Mode=7;ModeOld=7;StopLoss=Bid+Profit*4;
d=OrderSend(NULL,OP_SELL, Lots, Bid, 3,StopLoss,Bid-Profit,"Short1",MAGIC,0,Blue);
for(i=0;i<3;i++){
d=OrderSend(NULL,OP_SELLLIMIT,Lots*MathPow(2,i),Bid+Profit*(i+1),3,StopLoss,Bid-Profit,"Short"+(i+3),MAGIC,0,Blue);}}
//---Modify Routine---
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);
}}}
//---Del Routine---
void Del(){
if (OrdersTotal()!=4){
for (i=OrdersTotal()-1; i>=0; i--){
d=OrderSelect(i,SELECT_BY_POS);
d=OrderDelete(OrderTicket(),clrNONE);
}}}