//+------------------------------------------------------------------+ //| | //| Filename: FutureCandle_v011.mq4 |統計表示の合計期限追加 //| |勝率の高いパラメータを自動選択 //+------------------------------------------------------------------+ #property copyright "alohafx" #property link "http://alohafx.blog36.fc2.com/" #property indicator_chart_window #property indicator_buffers 2 //---- #property indicator_color1 Red #property indicator_color2 White #property indicator_width1 3 #property indicator_width2 3 //---- extern int perStart =10; extern int perStep =1; extern int perEnd =50; extern int countbars =36;//Max100 extern bool AutoPeriod=true; //extern bool ShowRatio=true; int i, shift, bar, Win, Loss, Wina, Lossa, per; double WLtemp0, WLtemp1, WLtemp2, imp, ratioB; double ExtMapBufferOpen[]; double ExtMapBufferClose[]; double impBuffer[]; int WL[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { Win=0;Loss=0; Wina=0;Lossa=0;//bar=Bars-1; per=perStart; string title="FutureCandle(" + per + ")"; SetIndexBuffer(0, ExtMapBufferOpen); SetIndexBuffer(1, ExtMapBufferClose); // SetIndexBuffer(2, WLa); SetIndexStyle(0, DRAW_HISTOGRAM,0,3); SetIndexStyle(1, DRAW_HISTOGRAM,0,3); // SetIndexStyle(2, DRAW_NONE); SetIndexShift(0, per+1); SetIndexShift(1, per+1); if(countbars>100)countbars=100; ArrayResize(WL,countbars+perEnd); ArrayResize(impBuffer,countbars+perEnd); //---- // IndicatorShortName(title); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("Ratio_Main"); Comment(""); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double barClose; WLtemp0=ExtMapBufferClose[per]-ExtMapBufferOpen[per]; if(AutoPeriod && bar!=Bars)AutoPeriod(); ArrayInitialize(ExtMapBufferClose,EMPTY_VALUE); ArrayInitialize(ExtMapBufferOpen,EMPTY_VALUE); imp=0; for(i=per+1; i>=1; i--) { imp=imp + (Close[i] - Open[i]); } barClose=Close[0]-imp; for(shift=per; shift>=0; shift--) { imp=0; for(i=shift; i>=0; i--) { imp=imp + (Close[i] - Open[i]); } ExtMapBufferClose[per+1]=Close[0]; ExtMapBufferOpen[shift]=ExtMapBufferClose[shift+1]; ExtMapBufferClose[shift]=barClose+imp; } SetIndexShift(0, per+1); SetIndexShift(1, per+1); //---- if(bar!=Bars) { CalcRatio(); bar=Bars; } //---- return(0); } //+------------------------------------------------------------------+ void AutoPeriod() { ratioB=0; for(int j=perStart; j<=perEnd; j+=perStep) { ArrayInitialize(impBuffer,0.0); for(shift=countbars-1+j; shift>=j; shift--) { imp=0; for(i=j; i>=0; i--) { imp=imp + (Close[i+shift] - Open[i+shift]); } impBuffer[shift]=imp; } ArrayInitialize(WL,0); for(shift=countbars-1; shift>=0; shift--) { if(Close[shift+1]>Open[shift+1] && impBuffer[shift+j+2]<0)WL[shift]=-1; if(Close[shift+1]0)WL[shift]=-1; if(Close[shift+1]==Open[shift+1] || impBuffer[shift+j+2]==0)WL[shift]=0; if(Close[shift+1]>Open[shift+1] && impBuffer[shift+j+2]>0)WL[shift]=1; if(Close[shift+1]0)ratio=(Win/ratio)*100; if(ratioBOpen[1] && WLtemp2<0)Lossa++; if(Close[1]0)Lossa++; if(Close[1]>Open[1] && WLtemp2>0)Wina++; if(Close[1]0)ratio=(Wina/ratio)*100; int window=0; if(ObjectFind("Ratio_Main") != window) ObjectCreate("Ratio_Main",OBJ_LABEL,window,0,0); ObjectSetText("Ratio_Main", per+" "+DoubleToStr(ratioB,1)+"% : Win "+Wina+" / Loss "+Lossa+" / "+DoubleToStr(ratio,1)+"%",10,"MS Gothic", White);//, FontSize, FontStyle, FontColor); ObjectSet("Ratio_Main", OBJPROP_CORNER, 2); ObjectSet("Ratio_Main", OBJPROP_XDISTANCE, 5); ObjectSet("Ratio_Main", OBJPROP_YDISTANCE, 10); return(0); } //+------------------------------------------------------------------+