エリオット波動理論に基づくトレーディング戦略 - ページ 151 1...144145146147148149150151152153154155156157158...309 新しいコメント Forex Trader 2006.10.17 16:59 #1501 が、自動化という目的は、そもそも意図していなかったのでしょう。おっしゃるとおり、パターン検索を 自動化する狙いはありませんでした。 Forex Trader 2006.10.17 17:05 #1502 どなたかダウンロードされた方は、そのインジケータをここのどこかに掲載していただけないでしょうか。 https://c.mql5.com/mql4/forum/2006/10/indicators.zip Forex Trader 2006.10.17 17:16 #1503 #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Sienna #property indicator_color2 OrangeRed #property indicator_color3 Maroon #property indicator_color4 Green #property indicator_color5 Indigo #property indicator_color6 Navy #property indicator_color7 DarkSlateBlue #property indicator_color8 DarkBlue //---- input parameters extern int CountBars=500; extern bool alert = true; extern int max_length = 30; extern double error = 0.1; extern color zz_clr = Blue; extern color bat_clr = Sienna; extern color crab_clr = OrangeRed; extern color gar_clr = Maroon; extern color ab_clr = Green; extern color but_clr = Indigo; color get_harmony_color(int pattern){ switch(pattern){ case 1: return (ab_clr); break; case 2: return (gar_clr); break; case 3: return (but_clr); break; case 4: return (bat_clr); break; case 5: return (crab_clr); break; } return (zz_clr); } string get_harmony_pattern(int pattern,int shift){ string pstr = ""; switch(pattern){ case 1: pstr = "AB=CD"; break; case 2: pstr = "Gartley"; break; case 3: pstr = "Butterfly"; break; case 4: pstr = "Bat"; break; case 5: pstr = "Crab"; break; } pstr = pstr + " at "+shift; return (pstr); } double bufBAT[]; double bufCRAB[]; double bufGAR[]; double bufAB[]; double bufBUT[]; double bufALL[]; double bufT0[]; double bufT1[]; int init(){ //---- SetIndexStyle(0,DRAW_NONE,STYLE_SOLID,3); SetIndexStyle(1,DRAW_NONE,STYLE_SOLID,3); SetIndexStyle(2,DRAW_NONE,STYLE_SOLID,3); SetIndexStyle(3,DRAW_NONE,STYLE_SOLID,3); SetIndexStyle(4,DRAW_NONE,STYLE_SOLID,3); SetIndexStyle(5,DRAW_NONE); SetIndexStyle(6,DRAW_ARROW,STYLE_SOLID,2); SetIndexStyle(7,DRAW_ARROW,STYLE_SOLID,2); SetIndexBuffer(0,bufBAT); SetIndexBuffer(1,bufCRAB); SetIndexBuffer(2,bufGAR); SetIndexBuffer(3,bufAB); SetIndexBuffer(4,bufBUT); SetIndexBuffer(5,bufALL); SetIndexBuffer(6,bufT0); SetIndexBuffer(7,bufT1); //SetIndexBuffer(0,bufALL); SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); SetIndexEmptyValue(2,0); SetIndexEmptyValue(3,0); SetIndexEmptyValue(4,0); SetIndexEmptyValue(5,0); SetIndexEmptyValue(6,0); SetIndexEmptyValue(7,0); SetIndexArrow(0,132); SetIndexArrow(1,133); SetIndexArrow(2,130); SetIndexArrow(3,129); SetIndexArrow(4,131); SetIndexArrow(6,167); SetIndexArrow(7,110); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2); //---- return(0); } void delete_obj(){ string buff_str = ""; for(int i=ObjectsTotal()-1;i>=0;i--){ buff_str = ObjectName(i); if(StringFind(buff_str,"harmony_05_",0)==0) ObjectDelete(buff_str); } } static int acc = 0; void update_zz(int from,double arr[],int ind[]){ color c = Crimson; int off = 0 ; if(from==0){ c = DarkBlue; off = 3; } for(int i=from;i<4;i++){ create_line(ind[i],ind[i+1],get_harmony_color(7),arr[i],arr[i+1],0,STYLE_SOLID); if(i<3){ place_text( DoubleToStr(MathAbs(arr[i+2]-arr[i+1])/MathAbs(arr[i]-arr[i+1]),3), (ind[i]+ind[i+2])/2, (arr[i]+arr[i+2])/2, zz_clr); create_line(ind[i],ind[i+2],Gray,arr[i],arr[i+2],0,STYLE_DOT); } switch(i){ case 0:place_text("X",ind[i]+off,arr[i],c); break; case 1:place_text("A",ind[i]+off,arr[i],c); break; case 2:place_text("B",ind[i]+off,arr[i],c); break; case 3:place_text("C",ind[i]+off,arr[i],c); break; case 4:place_text("D",ind[i]+off,arr[i],c); break; } } if(from==0){ create_triangle(ind[0],ind[1],ind[2],BurlyWood,arr[0],arr[1],arr[2]); create_triangle(ind[2],ind[3],ind[4],CadetBlue,arr[2],arr[3],arr[4]); } else{ create_triangle(ind[2],ind[3],ind[4],Tomato,arr[2],arr[3],arr[4]); } } void place_text(string text,int x,double price,color c){ static int acc = 0; string buff_str = "harmony_05_text_"+acc; acc++; //OBJ_LABEL if(ObjectFind(buff_str)==-1){ ObjectCreate(buff_str, OBJ_TEXT, 0, Time[x], price); } //ObjectSet(buff_str,OBJPROP_COLOR,c); ObjectSet(buff_str,OBJPROP_TIME1,Time[x]); ObjectSet(buff_str,OBJPROP_PRICE1,price); //ObjectSet(buff_str,OBJPROP_FONTSIZE,10); ObjectSetText(buff_str,text,10,"Arial",c); } void create_line(int from,int to,color c,double p0,double p1,int long,int type){ static int acc = 0; string buff_str = "harmony_05_"+acc; acc++; ObjectCreate(buff_str, OBJ_TREND, 0, Time[from], p0, Time[to], p1); ObjectSet(buff_str,OBJPROP_RAY,long); ObjectSet(buff_str,OBJPROP_COLOR,c); ObjectSet(buff_str,OBJPROP_XDISTANCE,100); ObjectSet(buff_str,OBJPROP_YDISTANCE,100); ObjectSet(buff_str,OBJPROP_STYLE,type); if(type!=STYLE_SOLID) ObjectSet(buff_str,OBJPROP_WIDTH,1); else ObjectSet(buff_str,OBJPROP_WIDTH,2); } int deinit(){ delete_obj(); return (0); } double last_time = 0; double XA,XB,XD,AB,AC,BC,BD,CD,AD; void init_lines(double arr[],int ind[]){ XA = 0; if(MathAbs(ind[0]-ind[1])>1 && MathAbs(ind[1]-ind[2])>1 && MathAbs(ind[2]-ind[3])>1 && MathAbs(ind[3]-ind[4])>1){ if( (arr[1]-arr[3])*(arr[2]-arr[3])<0 && (arr[0]-arr[2])*(arr[1]-arr[2])<0 ){ XA = MathAbs(arr[1]-arr[0]) / Point; XB = MathAbs(arr[2]-arr[0]) / Point; XD = MathAbs(arr[4]-arr[0]) / Point; AB = MathAbs(arr[2]-arr[1]) / Point; AC = MathAbs(arr[3]-arr[1]) / Point; BC = MathAbs(arr[3]-arr[2]) / Point; BD = MathAbs(arr[4]-arr[2]) / Point; CD = MathAbs(arr[4]-arr[3]) / Point; AD = MathAbs(arr[4]-arr[1]) / Point; } } } /* double get_retracement(int a,int b,double arr[],double ret){ return (arr[a] + ((arr[a]-arr[b]) / Point)*ret*Point); } */ bool is_ABCD_pattern(double arr[],int ind[],double offset){ double F0,F1; bool found = false; F0 = NormalizeDouble(BC / AB,3); F1 = NormalizeDouble(CD / BC,3); found = (F0>=0.382-offset && F0<=0.382+offset && F1>=2.240-offset && F1<=2.240+offset) || (F0>=0.500-offset && F0<=0.500+offset && F1>=2.000-offset && F1<=2.000+offset) || (F0>=0.618-offset && F0<=0.618+offset && F1>=1.618-offset && F1<=1.618+offset) || (F0>=0.707-offset && F0<=0.707+offset && F1>=1.414-offset && F1<=1.414+offset) || (F0>=0.786-offset && F0<=0.786+offset && F1>=1.270-offset && F1<=1.270+offset) ; if(!found) return (false); bufAB[ind[4]] = arr[4]; bufALL[ind[4]] = 1.0; update_zz(1,arr,ind); bufT0[ind[4]] = arr[4]+(((arr[2]-arr[4])/Point)*0.618)*Point; bufT1[ind[4]] = arr[4]+(((arr[1]-arr[4])/Point)*0.618)*Point; place_text(get_harmony_pattern(1,ind[4]),ind[4],bufAB[ind[4]],get_harmony_color(1)); //Print(harmony_pattern(1,ind[4])); return (true); } bool is_Gartley_pattern(double arr[],int ind[],double offset){ double F0,F1; bool found = false; F0 = NormalizeDouble(AB / XA,3); F1 = NormalizeDouble(AD / XA,3); found = ( (F0>=0.382-offset && F0<=0.382+offset) || (F0>=0.477-offset && F0<=0.477+offset) || (F0>=0.500-offset && F0<=0.500+offset) || (F0>=0.618-offset && F0<=0.618+offset) ) && ( (F1>=0.618-offset && F1<=0.618+offset) || (F1>=0.786-offset && F1<=0.786+offset) ); //(F0==0.618/*-offset && F0<=0.618+offset*/ && F1==0.786/*-offset && F1<=0.786+offset*/); if(!found) return (false); F0 = NormalizeDouble(BC / AB,3); F1 = NormalizeDouble(CD / BC,3); found = (F0>=0.382-offset && F0<=0.382+offset && F1>=2.240-offset && F1<=2.240+offset) || (F0>=0.500-offset && F0<=0.500+offset && F1>=2.000-offset && F1<=2.000+offset) || (F0>=0.618-offset && F0<=0.618+offset && F1>=1.618-offset && F1<=1.618+offset) || (F0>=0.707-offset && F0<=0.707+offset && F1>=1.414-offset && F1<=1.414+offset) || (F0>=0.786-offset && F0<=0.786+offset && F1>=1.270-offset && F1<=1.270+offset) || (F0>=0.886-offset && F0<=0.886+offset && F1>=1.129-offset && F1<=1.129+offset) ; if(!found) return (false); bufGAR[ind[4]] = arr[4]+10*Point; bufT0[ind[4]] = arr[4]+(((arr[3]-arr[4])/Point)*0.618)*Point; bufT1[ind[4]] = arr[4]+(((arr[1]-arr[4])/Point)*0.618)*Point; bufALL[ind[4]] = 2.0; update_zz(0,arr,ind); place_text(get_harmony_pattern(2,ind[4]),ind[4],bufGAR[ind[4]],get_harmony_color(2)); //Print(harmony_pattern(2,ind[4])); return (true); } bool is_Butterfly_pattern(double arr[],int ind[],double offset){ double F0,F1; bool found = false; F0 = NormalizeDouble(AB / XA,3); F1 = NormalizeDouble(AD / XA,3); found = ( (F0>=0.618-offset && F0<=0.618+offset) || (F0>=0.786-offset && F0<=0.786+offset) || (F0>=0.886-offset && F0<=0.886+offset) ) && ( (F1>=1.270-offset && F1<=1.270+offset) || (F1>=1.618-offset && F1<=1.618+offset) ); //(F0==0.618/*-offset && F0<=0.618+offset*/ && F1==0.786/*-offset && F1<=0.786+offset*/); if(!found) return (false); F0 = NormalizeDouble(BC / AB,3); F1 = NormalizeDouble(CD / BC,3); found = ( (F0>=0.382-offset && F0<=0.382+offset) && ( (F1>=2.240-offset && F1<=2.240+offset) || (F1>=1.618-offset && F1<=1.618+offset) || (F1>=2.618-offset && F1<=2.618+offset) ) ) || ( (F0>=0.500-offset && F0<=0.500+offset) && ( (F1>=2.000-offset && F1<=2.000+offset) || (F1>=2.618-offset && F1<=2.618+offset) ) ) || ( (F0>=0.618-offset && F0<=0.618+offset) && ( (F1>=1.618-offset && F1<=1.618+offset) || (F1>=2.000-offset && F1<=2.000+offset) || (F1>=2.618-offset && F1<=2.618+offset) || (F1>=2.240-offset && F1<=2.240+offset) ) ) || (F0>=0.707-offset && F0<=0.707+offset && F1>=1.414-offset && F1<=1.414+offset) || ( (F0>=0.786-offset && F0<=0.786+offset) && ( (F1>=1.618-offset && F1<=1.618+offset) || (F1>=2.618-offset && F1<=2.618+offset) || (F1>=2.240-offset && F1<=2.240+offset) ) ) || (F0>=0.886-offset && F0<=0.886+offset && F1>=1.270-offset && F1<=1.270+offset); if(!found) return (false); bufBUT[ind[4]] = arr[4]+20*Point; bufALL[ind[4]] = 3.0; bufT0[ind[4]] = arr[4]+(((arr[3]-arr[4])/Point)*0.618)*Point; bufT1[ind[4]] = arr[4]+(((arr[1]-arr[4])/Point)*0.618)*Point; update_zz(0,arr,ind); place_text(get_harmony_pattern(3,ind[4]),ind[4],bufBUT[ind[4]],get_harmony_color(3)); //Print(harmony_pattern(3,ind[4])); return (true); } bool is_BAT_pattern(double arr[],int ind[],double offset){ double F0,F1,F2; bool found = false; F0 = NormalizeDouble(AB / XA,3); F1 = NormalizeDouble(AD / XA,3); F2 = NormalizeDouble(CD / BC,3); found = (F0>=0.382-offset && F0<=0.618+offset) && (F1>=0.886-offset && F1<=0.886+offset) && (F2>=1.618-offset && F2<=2.618+offset) ; if(!found) return (false); F0 = NormalizeDouble(BC / AB,3); F1 = F2; found = (F0>=0.500-offset && F0<=0.500+offset && F1>=2.618-offset && F1<=2.618+offset) || (F0>=0.618-offset && F0<=0.618+offset && F1>=2.000-offset && F1<=2.000+offset) || (F0>=0.618-offset && F0<=0.618+offset && F1>=2.240-offset && F1<=2.240+offset) || (F0>=0.786-offset && F0<=0.786+offset && F1>=1.618-offset && F1<=1.618+offset) || (F0>=0.886-offset && F0<=0.886+offset && F1>=1.270-offset && F1<=1.270+offset) ; if(!found) return (false); bufBAT[ind[4]] = arr[4]+30*Point; bufALL[ind[4]] = 4.0; bufT0[ind[4]] = arr[4]+(((arr[3]-arr[4])/Point)*0.618)*Point; bufT1[ind[4]] = arr[4]+(((arr[1]-arr[4])/Point)*0.618)*Point; update_zz(0,arr,ind); place_text(get_harmony_pattern(4,ind[4]),ind[4],bufBAT[ind[4]],get_harmony_color(4)); return (true); } bool is_CRAB_pattern(double arr[],int ind[],double offset){ double F0,F1; bool found = false; F0 = NormalizeDouble(AB / XA,3); F1 = NormalizeDouble(CD / BC,3); found = ( (F0>=0.382-offset && F0<=0.382-offset) || (F0>=0.477-offset && F0<=0.477+offset) || (F0>=0.500-offset && F0<=0.500+offset) || (F0>=0.618-offset && F0<=0.618+offset) ) && ( (F1>=2.618-offset && F1<=2.618+offset) || (F1>=3.140-offset && F1<=3.140+offset) || (F1>=3.618-offset && F1<=3.618+offset) ); if(!found) return (false); bufCRAB[ind[4]] = arr[4]+40*Point; bufALL[ind[4]] = 5.0; bufT0[ind[4]] = arr[4]+(((arr[3]-arr[4])/Point)*0.618)*Point; bufT1[ind[4]] = arr[4]+(((arr[1]-arr[4])/Point)*0.618)*Point; update_zz(0,arr,ind); place_text(get_harmony_pattern(5,ind[4]),ind[4],bufCRAB[ind[4]],get_harmony_color(5)); //Print(harmony_pattern(5,ind[4])); return (true); } int last = 0 ; datetime last_ = 0; int start(){ if(last==Bars) return (0); delete_obj(); last = Bars; //delete_obj(); int point_arr[5]; double val_arr[5]; int i,l = 0; int pi = 4,j = 0; datetime ld; double gann = 0; int limit = CountBars; int found = limit; for(int len = max_length;len>2;len--){ j = 0; pi = 4; while(j<limit && pi>=0){ gann = iCustom(Symbol(),Period(),"a_ZZ",limit,0,len,0,j); //gann = iCustom(Symbol(),Period(),"0_ZigZag",Length,0,0,0,from,0,j); if(gann!=0.0){ point_arr[pi] = j; val_arr[pi] = gann; pi--; } j++; } //limit -= 10; init_lines(val_arr,point_arr); if(XA!=0){ if( is_ABCD_pattern(val_arr,point_arr,error) || is_Gartley_pattern(val_arr,point_arr,error) || is_Butterfly_pattern(val_arr,point_arr,error) || is_CRAB_pattern(val_arr,point_arr,error) || is_BAT_pattern(val_arr,point_arr,error) ){ if(found>point_arr[4]){ found = point_arr[4]; } Sleep(50); } } } if(found!=CountBars && Time[found]>last_){ last_ = Time[found]; if(alert) Alert(Symbol()+":: Possible Price Pattern found at "+found+" bar."); } //ObjectsRedraw(); return(0); } //+------------------------------------------------------------------+ void create_triangle(int p0,int p1,int p2,color c,double c0,double c1,double c2){ static int acc = 0; string buff_str = "harmony_05_tri_"+acc; acc++; datetime t0 = Time[p0],t1 = Time[p1],t2 = Time[p2]; if(p1<0) t1 = Time[0] + Period()*60*MathAbs(p1); if(p2<0) t2 = Time[0] + Period()*60*MathAbs(p2); ObjectCreate(buff_str, OBJ_TRIANGLE, 0, t0, c0, t1, c1, t2, c2); ObjectSet(buff_str, OBJPROP_COLOR, c ); ObjectSet(buff_str, OBJPROP_STYLE, STYLE_DOT ); ObjectSet(buff_str,OBJPROP_BACK,true); } Forex Trader 2006.10.17 17:17 #1504 #property copyright "ANG3110@latchess.com" //-------------ang_Amp_ZZ--------------- #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Blue //-------------------------------- extern int cbars=1000; extern int from=0; extern int Length=10; extern double error = 0.1; extern bool draw = false; //--------------------------------- double ha[],la[],zz[],un[],pattern[],position[]; double hi,li,hm,lm,di,j; int f,f1,ai,bi,aii,bii,f0,aibar,bibar; //---------------------------------------------- string id = "a_zz_"; int init() { id = id + Length +"_"; IndicatorBuffers(6); SetIndexStyle(0,DRAW_SECTION,STYLE_SOLID,2); SetIndexBuffer(0,zz); SetIndexBuffer(1,la); SetIndexBuffer(2,ha); SetIndexBuffer(3,un); SetIndexBuffer(4,pattern); SetIndexBuffer(5,position); SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); SetIndexEmptyValue(2,0); SetIndexEmptyValue(3,0); SetIndexEmptyValue(4,0); SetIndexEmptyValue(5,0); return(0); } void place_text(string text,int x,double price,color c){ if(!draw) return (0); string buff_str = id+text+x+price; //OBJ_LABEL if(ObjectFind(buff_str)==-1){ ObjectCreate(buff_str, OBJ_TEXT, 0, Time[x], price); } //ObjectSet(buff_str,OBJPROP_COLOR,c); ObjectSet(buff_str,OBJPROP_TIME1,Time[x]); ObjectSet(buff_str,OBJPROP_PRICE1,price); //ObjectSet(buff_str,OBJPROP_FONTSIZE,10); ObjectSetText(buff_str,text,10,"Arial",c); } void create_line(int from,int to,color c,double p0,double p1,int long,int style){ if(!draw) return (0); static int acc = 0; string buff_str = id+acc; acc++; ObjectCreate(buff_str, OBJ_TREND, 0, Time[from], p0, Time[to], p1); ObjectSet(buff_str,OBJPROP_RAY,long); ObjectSet(buff_str,OBJPROP_COLOR,c); ObjectSet(buff_str,OBJPROP_XDISTANCE,100); ObjectSet(buff_str,OBJPROP_YDISTANCE,100); ObjectSet(buff_str,OBJPROP_STYLE,style); ObjectSet(buff_str,OBJPROP_BACK,true); //ObjectSet(buff_str,OBJPROP_WIDTH,2); } void delete_obj(){ string buff_str = ""; for(int i=ObjectsTotal()-1;i>=0;i--){ buff_str = ObjectName(i); if(StringFind(buff_str,id,0)==0) ObjectDelete(buff_str); } } int deinit(){ delete_obj(); return (0); } int last=0; //================================ int start() { if(last==Bars) return (0); last=Bars; delete_obj(); ArrayInitialize(zz,0); //ArrayInitialize(ha,0); //ArrayInitialize(la,0); int shift,Swing,Swing_n,uzl,i,zu,zd,mv; double LL,HH,BH,BL,NH,NL; double Uzel[10000][3]; string text; // loop from first bar to current bar (with shift=0) Swing_n=0;Swing=0;uzl=0; int barn = from + cbars; BH =High[barn]; BL=Low[barn]; zu=barn; zd=barn; for(shift=barn;shift>=from;shift--) { LL=10000000; HH=-100000000; for(i=shift+Length;i>=shift+1;i--) { if (Low[i]< LL) LL=Low[i]; if (High[i]>HH) HH=High[i]; } if (Low[shift]<LL && High[shift]>HH){ Swing=2; if (Swing_n==1) zu=shift+1; if (Swing_n==-1) zd=shift+1; } else{ if (Low[shift]<LL) Swing=-1; if (High[shift]>HH) Swing=1; } if (Swing!=Swing_n && Swing_n!=0) { if (Swing==2) { Swing=-Swing_n; BH = High[shift]; BL = Low[shift]; } uzl=uzl+1; if(Swing==1) { Uzel[uzl][1]=zd; Uzel[uzl][2]=BL; } if(Swing==-1) { Uzel[uzl][1]=zu; Uzel[uzl][2]=BH; } BH = High[shift]; BL = Low[shift]; } if (Swing==1) { if(High[shift]>=BH) { BH=High[shift]; zu=shift; } } else if(Swing==-1) { if(Low[shift]<=BL) { BL=Low[shift]; zd=shift; } } Swing_n=Swing; } for(i=1;i<=uzl;i++) { mv=StrToInteger(DoubleToStr(Uzel[i][1],0)); zz[mv]=Uzel[i][2]; } //-------------------------------- int dir = 0; int pos[3]; int cpos = 0; int id = 0; for(i=barn; i>=from; i--){ un[i] = 0; if(zz[i]!=0){ pos[cpos] = i; cpos++; if(cpos==3){ un[i] = (MathAbs(zz[pos[2]]-zz[pos[1]])/Point) / // AB (MathAbs(zz[pos[0]]-zz[pos[1]])/Point); // XA double d = get_real_value(un[i],error); if(d!=0){ place_text(DoubleToStr(d,3),(pos[0]+pos[2])/2,(zz[pos[0]]+zz[pos[2]])/2,Crimson); create_line(pos[0],pos[2],Gray,zz[pos[0]],zz[pos[2]],0,STYLE_DASHDOT); } pos[0] = pos[1]; pos[1] = pos[2]; cpos = 2; } } } zz[from] = Close[from]; pos[cpos] = 0; cpos++; if(cpos==3){ un[from] = (MathAbs(zz[pos[2]]-zz[pos[1]])/Point) / // AB (MathAbs(zz[pos[0]]-zz[pos[1]])/Point); // XA d = get_real_value(un[from],error); if(d!=0){ place_text(DoubleToStr(d,3),(pos[0]+pos[2])/2,(zz[pos[0]]+zz[pos[2]])/2,Crimson); create_line(pos[0],pos[2],Gray,zz[pos[0]],zz[pos[2]],0,STYLE_DASHDOT); } } int cp = 0; for(i=from; i<barn; i++){ if(un[i]!=0){ pattern[cp] = un[i]; position[cp] = i; cp++; } } //------------------------------------ return(0); } double get_real_value(double v,double err){ double table[15] = { 0.382,2.240, 0.500,2.000, 0.618,1.618, 0.707,1.414, 0.786,1.270, 0.886,1.129, 3.140,3.618, 2.618 }; for(int i=0;i<15;i++){ if(v>=table[i]-err && v<=table[i]+err){ return (table[i]); } } return (v); } Forex Trader 2006.10.17 17:22 #1505 А мог бы кто-нибудь из скачавших, выложить где-то здесь те индикаторы. https://c.mql5.com/mql4/forum/2006/10/indicators.zip ありがとうございます。 Forex Trader 2006.10.17 17:45 #1506 nenが、自動化の目的は、当初は意図していなかったのだろう。 おっしゃるとおり、パターン検索を自動化する狙いはありませんでした。 特にプログラミングの経験があれば、実はそれほど難しいことではありません。IMHOの唯一のもの - 歴史を "ストレート "アルゴリズムは適していない、彼らは単にリアルタイムの信号を検出することはできませんし、それは統計を確認することは困難である。私が間違っていなければ、あなたのPMOには、ポイントや地域ごとの偏差値に従ってスイングをプロットするインジケータがあります - それは非常に適しています:それは履歴を再描画しませんし、それは "ハーモニートレーダー_06 "で行われていたように "悪い影響 "を滑らかにするために、FIBO比の許容範囲を導入することを可能にします。実は、付属のものをベースにしてもいいんです。 敬具、ウラジスラフ。 頑張って、良い流れを作ってください。 Forex Trader 2006.10.17 18:10 #1507 nen но цели автоматизации, скорее всего, изначально не ставились. Вы правы, цели по автоматизации поиска паттернов не было. 特にプログラミングの経験があれば、それほど難しくはないでしょう。IMHOの唯一のもの - 歴史を "ストレート "アルゴリズムは適していない、それは単にリアルタイム信号を決定することは不可能であり、それは統計情報を確認することは困難である。私が間違っていなければ、あなたのPMOには、ポイントや地域ごとの偏差値に従ってスイングをプロットするインジケータがあります - それは非常に適しています:それは履歴を再描画しませんし、それは "ハーモニートレーダー_06 "で行われていたように "悪い影響 "を滑らかにするために、FIBO比の許容範囲を導入することを可能にします。実は、付属のものをベースにしてもいいんです。敬具、ウラジスラフ。頑張って、良い流れを作ってください。 どのようなジグザグで歴史の輪郭を描いているのでしょうか。 1) mtのジグザグ-その誤差を少し修正しました。mtのほうは間違いが多いですね。 2) 3)トレンド指標 4) - また、何もない豊かさ 5) スイング... 6)は、大きく補正されたmtのジグザグで別の時間枠からデータを取得します。 また、「歴史を正す」とはどういう意味ですか? そこでは、許容範囲を3通りに設定している。なるほど......そういうことだったんですね。ただ、それを自動化するためのタスクが本当になかったんです。今なんです。こんなアイデアもあります。スケジュール」に従って指標をスタートさせます。スキャンする通貨ペアと時間枠を設定します。そして、どの通貨ペアで、どの時間軸で、どのようなパターンが形成されたか(どのようなパターンか)、また、どこでパターンが形成されたかを、一定の形で表示するのがインジケーターです。この問題を解決するために、インジケーターはすべてを備えています。 Forex Trader 2006.10.17 18:16 #1508 <br / translate="no"> ここで状況ですが、パターン検索インジケータは、そのジグザグがついたものを使っています。検知した瞬間にパターンを描き、アラートを発するチェックボックスにチェックを入れるとアラートを発し、しばらくするとすべてを消去する。そのため、以前に検出されたパターンは見ることができない。 ここでは、Jewのインジケーターによって解決されたものがあるようです。私が理解する限り、それはおそらくeuの崩壊の合図なのか何なのか? 説明画像はこちらから引用していますhttp://www.harmonictrader.com/price_patternsbfly.htm Forex Trader 2006.10.17 18:30 #1509 また、「豊かな歴史」とはどういう意味でしょうか? いくつかの指標は、"余分な "スイングを削除するためにリバースパスを持っており、これはバーの与えられた範囲で実行することができます。現実的には、これは指標の読み取り 値の変化、つまり他の場所での極大値につながります。しかし、それは歴史の上でしかできないことであり、リアルタイムで状況を区別することは容易ではないだろうからだ(今のところ方法はわからないが)。MT4に内蔵されているジグザグも同様です(パラメータExtBackstep)。パターン検索にはあまり必要ない(余分なスイングという意味です)。さらに悪いことに、しばらくすると、トレーダーはリアルタイムとは異なる画像を見ることができる。しかし、これはIMHOの話です。おそらく、現時点での真の(偽の)極限値を決定できるアルゴリズムがあるのだろう(あるいは、そのような特性を持つこれらの指標を使用できる戦略があるのだろう)。 。 このインジケーターには、この問題を解決するために必要なものがすべて揃っています。 ですから、プログラミングの経験があれば、パターン検索を自動化することは難しいことではないと言っているのです。そこのアルゴリズムがシンプルでよく記述されているので、なおさらです。敬具、ウラジスラフ。頑張って、良い流れを作ってください。 Forex Trader 2006.10.17 18:35 #1510 もしや、ペサベントのパターン 値(黄色)の履歴をまっすぐにすることでしょうか?でも、まっすぐにはならないんです。許容範囲内に入る最も近いペサベント数の値を出すだけです。見やすくなりました。今、どのファイバーが作業中なのかが一目瞭然です。また、ちなみにペサベントのパターンは、Ensignで構築されています。1対1である。 パラメータとして、最も近い値を代入せず、そのままの値を表示するように設定することが可能です。 1...144145146147148149150151152153154155156157158...309 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
https://c.mql5.com/mql4/forum/2006/10/indicators.zip
https://c.mql5.com/mql4/forum/2006/10/indicators.zip
ありがとうございます。
特にプログラミングの経験があれば、実はそれほど難しいことではありません。IMHOの唯一のもの - 歴史を "ストレート "アルゴリズムは適していない、彼らは単にリアルタイムの信号を検出することはできませんし、それは統計を確認することは困難である。私が間違っていなければ、あなたのPMOには、ポイントや地域ごとの偏差値に従ってスイングをプロットするインジケータがあります - それは非常に適しています:それは履歴を再描画しませんし、それは "ハーモニートレーダー_06 "で行われていたように "悪い影響 "を滑らかにするために、FIBO比の許容範囲を導入することを可能にします。実は、付属のものをベースにしてもいいんです。
敬具、ウラジスラフ。
頑張って、良い流れを作ってください。
特にプログラミングの経験があれば、それほど難しくはないでしょう。IMHOの唯一のもの - 歴史を "ストレート "アルゴリズムは適していない、それは単にリアルタイム信号を決定することは不可能であり、それは統計情報を確認することは困難である。私が間違っていなければ、あなたのPMOには、ポイントや地域ごとの偏差値に従ってスイングをプロットするインジケータがあります - それは非常に適しています:それは履歴を再描画しませんし、それは "ハーモニートレーダー_06 "で行われていたように "悪い影響 "を滑らかにするために、FIBO比の許容範囲を導入することを可能にします。実は、付属のものをベースにしてもいいんです。敬具、ウラジスラフ。頑張って、良い流れを作ってください。
1) mtのジグザグ-その誤差を少し修正しました。mtのほうは間違いが多いですね。
2) 3)トレンド指標
4) - また、何もない豊かさ
5) スイング...
6)は、大きく補正されたmtのジグザグで別の時間枠からデータを取得します。
また、「歴史を正す」とはどういう意味ですか?
そこでは、許容範囲を3通りに設定している。なるほど......そういうことだったんですね。ただ、それを自動化するためのタスクが本当になかったんです。今なんです。こんなアイデアもあります。スケジュール」に従って指標をスタートさせます。スキャンする通貨ペアと時間枠を設定します。そして、どの通貨ペアで、どの時間軸で、どのようなパターンが形成されたか(どのようなパターンか)、また、どこでパターンが形成されたかを、一定の形で表示するのがインジケーターです。この問題を解決するために、インジケーターはすべてを備えています。
ここでは、Jewのインジケーターによって解決されたものがあるようです。私が理解する限り、それはおそらくeuの崩壊の合図なのか何なのか?
説明画像はこちらから引用していますhttp://www.harmonictrader.com/price_patternsbfly.htm
いくつかの指標は、"余分な "スイングを削除するためにリバースパスを持っており、これはバーの与えられた範囲で実行することができます。現実的には、これは指標の読み取り 値の変化、つまり他の場所での極大値につながります。しかし、それは歴史の上でしかできないことであり、リアルタイムで状況を区別することは容易ではないだろうからだ(今のところ方法はわからないが)。MT4に内蔵されているジグザグも同様です(パラメータExtBackstep)。パターン検索にはあまり必要ない(余分なスイングという意味です)。さらに悪いことに、しばらくすると、トレーダーはリアルタイムとは異なる画像を見ることができる。しかし、これはIMHOの話です。おそらく、現時点での真の(偽の)極限値を決定できるアルゴリズムがあるのだろう(あるいは、そのような特性を持つこれらの指標を使用できる戦略があるのだろう)。
。
ですから、プログラミングの経験があれば、パターン検索を自動化することは難しいことではないと言っているのです。そこのアルゴリズムがシンプルでよく記述されているので、なおさらです。敬具、ウラジスラフ。頑張って、良い流れを作ってください。
パラメータとして、最も近い値を代入せず、そのままの値を表示するように設定することが可能です。