//+------------------------------------------------------------------+ //| Trustfibs.com mq4 | //| Trustfibs.com | //+------------------------------------------------------------------+ #property copyright "Trustfibs.com" #property link "Trustfibs.com" //---- #property indicator_chart_window #property indicator_buffers 7 // Čëč 8 - äë˙ testBuffer #property indicator_color1 Aqua #property indicator_color2 Black #property indicator_color3 Black #property indicator_color4 Black #property indicator_color5 White #property indicator_color6 Lime #property indicator_width6 1 #property indicator_color7 Red #property indicator_width7 1 //#property indicator_color8 White // Äë˙ ďîäáîđŕ ÷ĺăî-íčáóäü extern int KeelOver=55; // Äë˙ M15 extern int Slalom=17; // Äë˙ M15 double KeelOverZigAndZagSECTION[]; double KeelOverZagBuffer[]; double SlalomZigBuffer[]; double SlalomZagBuffer[]; double LimitOrdersBuffer[]; double BuyOrdersBuffer[]; double SellOrdersBuffer[]; //double testBuffer[]; int shift,back,CountBar,Backstep=3; int LastSlalomZagPos,LastSlalomZigPos,LastKeelOverZagPos,LastKeelOverZigPos; double Something,LimitPoints,Navel; double CurKeelOverZig,CurKeelOverZag,CurSlalomZig,CurSlalomZag; double LastSlalomZag,LastSlalomZig,LastKeelOverZag,LastKeelOverZig; bool TrendUp,SetBuyOrder,SetLimitOrder,SetSellOrder,Second=false; string LastZigOrZag="None"; //---- int init() { SetIndexBuffer(0,KeelOverZigAndZagSECTION); SetIndexStyle(0,DRAW_SECTION,STYLE_DOT);//DRAW_SECTION čëč DRAW_NONE SetIndexEmptyValue(0,0.0); SetIndexBuffer(1,KeelOverZagBuffer); SetIndexStyle(1,DRAW_NONE); SetIndexEmptyValue(1,0.0); SetIndexBuffer(2,SlalomZigBuffer); SetIndexStyle(2,DRAW_NONE); SetIndexEmptyValue(2,0.0); SetIndexBuffer(3,SlalomZagBuffer); SetIndexStyle(3,DRAW_NONE); SetIndexEmptyValue(3,0.0); SetIndexBuffer(4,LimitOrdersBuffer); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,108); SetIndexEmptyValue(4,0.0); SetIndexBuffer(5,BuyOrdersBuffer); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,233); SetIndexEmptyValue(5,0.0); SetIndexBuffer(6,SellOrdersBuffer); SetIndexStyle(6,DRAW_ARROW); SetIndexArrow(6,234); SetIndexEmptyValue(6,0.0); // SetIndexStyle(7,DRAW_SECTION); // SetIndexBuffer(7,testBuffer); // SetIndexEmptyValue(7,0.0); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { CountBar=Bars-KeelOver; LimitPoints=Ask-Bid; if(CountBar<=3*KeelOver) return(-1); // Ěŕëîâŕňî áóäĺň if(KeelOver<=2*Slalom) return(-1); // Ňůŕňĺëüíĺĺ íŕäî // Çŕ÷čńňęŕ íĺďđŕâčëüíîé čńňîđčč for(shift=Bars-1; shift>Bars-KeelOver; shift--) { SlalomZagBuffer[shift]=0.0; SlalomZigBuffer[shift]=0.0; KeelOverZagBuffer[shift]=0.0; KeelOverZigAndZagSECTION[shift]=0.0; LimitOrdersBuffer[shift]=0.0; BuyOrdersBuffer[shift]=0.0; SellOrdersBuffer[shift]=0.0; // testBuffer[shift]=0.0; } //+---Ďĺđâűé ďîőîä ďî čńňîđčč----------------------------------------+ The_First_Crusade(); //+---Âňîđîé ďđîőîä ďî čńňîđč÷ĺńęčě ěĺńňŕě---------------------------+ //+---ń öĺëüţ ďîä÷čńňęč íĺâĺđíî ďîí˙ňűő ńîáűňčé----------------------+ LastSlalomZag=-1; LastSlalomZagPos=-1; LastSlalomZig=-1; LastSlalomZigPos=-1; LastKeelOverZag=-1; LastKeelOverZagPos=-1; LastKeelOverZig=-1; LastKeelOverZigPos=-1; The_Second_Crusade(); //+---Ňđĺňčé čńňîđč÷ĺńęčé ýęńęóđń - ďîńňđîĺíčĺ "ňđĺíäŕ"--------------+ //+---č đŕńńňŕíîâęŕ "ňîđăîâűő ńčăíŕëîâ"------------------------------+ LastSlalomZag=-1; LastSlalomZagPos=-1; LastSlalomZig=-1; LastSlalomZigPos=-1; LastZigOrZag="None"; The_Third_Crusade(); //+---Ŕ ÷ĺăî ěű ňĺďĺđü áóäĺě čěĺňü çäĺńü č ńĺé÷ŕń?-------------------+ Shift_Zerro(); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void The_First_Crusade() { for(shift=CountBar; shift>0; shift--) { // Ďîčńę ňî÷ĺę "âńňŕë â ďîçó" - "óřĺë ń đűíęŕ" CurSlalomZig=Low[Lowest(NULL,0,MODE_LOW,Slalom,shift)]; CurSlalomZag=High[Highest(NULL,0,MODE_HIGH,Slalom,shift)]; // Ďđîâĺđ˙ĺě shift íŕ íŕëč÷čĺ î÷ĺđĺäíîăî ŃëŕëîěÇčăŕ äë˙ âőîäŕ // â ďîęóďęó čëč äë˙ âűőîäŕ čç ďđîäŕćč if(CurSlalomZig==LastSlalomZig) CurSlalomZig=0.0; else { LastSlalomZig=CurSlalomZig; if((Low[shift]-CurSlalomZig)>LimitPoints) CurSlalomZig=0.0; else { // Íŕ číňĺđâŕëĺ Backstep ěîćĺň áűňü ňîëüęî îäčí Çčă, // îńňŕâë˙ĺě ňîëüęî ďîńëĺäíčé, áîëĺĺ đŕííčĺ óáčđŕĺě for(back=1; back<=Backstep; back++) { Something=SlalomZigBuffer[shift+back]; if((Something!=0)&&(Something>CurSlalomZig)) SlalomZigBuffer[shift+back]=0.0; } } } // Ďđîâĺđ˙ĺě shift íŕ íŕëč÷čĺ î÷ĺđĺäíîăî ŃëŕëîěÇŕăŕ äë˙ âőîäŕ âíčç // čëč äë˙ âűőîäŕ čç ďîęóďęč if(CurSlalomZag==LastSlalomZag) CurSlalomZag=0.0; else { LastSlalomZag=CurSlalomZag; if((CurSlalomZag-High[shift])>LimitPoints) CurSlalomZag=0.0; else { // Íŕ číňĺđâŕëĺ Backstep ěîćĺň áűňü ňîëüęî îäčí Çŕă, // îńňŕâë˙ĺě ňîëüęî ďîńëĺäíčé, áîëĺĺ đŕííčĺ óáčđŕĺě for(back=1; back<=Backstep; back++) { Something=SlalomZagBuffer[shift+back]; if((Something!=0)&&(SomethingLimitPoints) CurKeelOverZig=0.0; else { // Íŕ číňĺđâŕëĺ Backstep ěîćĺň áűňü ňîëüęî îäčí Çčă, // îńňŕâë˙ĺě ňîëüęî ďîńëĺäíčé, áîëĺĺ đŕííčĺ óáčđŕĺě for(back=1; back<=Backstep; back++) { Something=KeelOverZigAndZagSECTION[shift+back]; if((Something!=0)&&(Something>CurKeelOverZig)) KeelOverZigAndZagSECTION[shift+back]=0.0; } } } // Ďđîâĺđ˙ĺě shift íŕ íŕëč÷čĺ î÷ĺđĺäíîăî ÎâĺđęčëüÇŕăŕ if(CurKeelOverZag==LastKeelOverZag) CurKeelOverZag=0.0; else { LastKeelOverZag=CurKeelOverZag; if((CurKeelOverZag-High[shift])>LimitPoints) CurKeelOverZag=0.0; else { // Íŕ číňĺđâŕëĺ Backstep ěîćĺň áűňü ňîëüęî îäčí Çŕă, // áîëĺĺ đŕííčĺ óáčđŕĺě for(back=1; back<=Backstep; back++) { Something=KeelOverZagBuffer[shift+back]; if((Something!=0)&&(Something0; shift--) { CurSlalomZig=SlalomZigBuffer[shift]; CurSlalomZag=SlalomZagBuffer[shift]; if((CurSlalomZig==0)&&(CurSlalomZag==0)) continue; if(CurSlalomZag!=0) { if(LastSlalomZag>0) { if(LastSlalomZag0) { if(LastSlalomZig>CurSlalomZig) SlalomZigBuffer[LastSlalomZigPos]=0; else SlalomZigBuffer[shift]=0; } if((CurSlalomZig0) { if(LastKeelOverZag0) { if(LastKeelOverZig>CurSlalomZig) KeelOverZigAndZagSECTION[LastKeelOverZigPos]=0; else KeelOverZigAndZagSECTION[shift]=0; } if((CurKeelOverZig0; shift--) { // Íčçâĺăŕĺě ďđĺćíčő ďđîđîęîâ LimitOrdersBuffer[shift]=0.0; BuyOrdersBuffer[shift]=0.0; SellOrdersBuffer[shift]=0.0; // Çŕäŕĺě öĺíňđ ěčđîçäŕíü˙ číňĺđâŕëŕ shift (ďî ëţáîěó - // ńďîńîá áîëüřîăî ďîëčňč÷ĺńęîăî âĺńŕ íĺ čěĺĺň) Navel=(5*Close[shift]+2*Open[shift]+High[shift]+Low[shift])/9; // Ĺńëč îâĺđęčëü - ńěîňđčě, // ęóäŕ (ěîćĺň áűňü) äŕëüřĺ ńĺéěîěĺíňíî ďîéäĺě: ââĺđő čëč âíčç if(KeelOverZigAndZagSECTION[shift]!=0.0) { TrendUp=true; first=false; } if(KeelOverZagBuffer[shift]!=0.0) { TrendUp=false; first=false; } // Ńîáčđŕĺě â KeelOverZigAndZagSECTION č ÎâĺđęčëüÇčăč, č ÎâĺđęčëüÇŕăč, // č ďóńňűřęč - âńĺ â îäíó ęó÷ęó, ňŕęčě îáđŕçîě ďîëó÷ŕĺě äîëăîčăđŕţůčé // ZigAndZag, íŕň˙ăčâŕ˙ íčňü "ňđĺíäŕ" íŕ ďóďęč đŕçâîđîňíűő ńâĺ÷ĺę if(KeelOverZagBuffer[shift]!=0.0 || KeelOverZigAndZagSECTION[shift]!=0.0) { KeelOverZigAndZagSECTION[shift]=Navel; } else KeelOverZigAndZagSECTION[shift]=0.0; // Ďđîâĺđ˙ĺě shift íŕ íŕëč÷čĺ ŃëŕëîěÇčăŕ čëč ŃëŕëîěÇŕăŕ if(SlalomZigBuffer[shift]!=0.0) { LastZigOrZag="Zig"; LastSlalomZig=Navel; SetBuyOrder=false; SetLimitOrder=false; SetSellOrder=false; } if(SlalomZagBuffer[shift]!=0.0) { LastZigOrZag="Zag"; LastSlalomZag=Navel; SetBuyOrder=false; SetLimitOrder=false; SetSellOrder=false; } // č, ĺńëč íč ŃëŕëîěÇčăŕ, íč ŃëŕëîěÇŕăŕ óćĺ íĺň, // ŕ îâĺđęčëü óćĺ áűë - ńěîňđčě, ŕ ÷ňî ĺńňü ďî âőîäó-âűőîäó if(SlalomZigBuffer[shift]==0.0 && SlalomZagBuffer[shift]==0.0 && first==false) Slalom_With_A_Scalpel(); } return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Shift_Zerro() { shift=0; Navel=(5*Close[0]+2*Open[0]+High[0]+Low[0])/9; Slalom_With_A_Scalpel(); KeelOverZigAndZagSECTION[0]=Navel; return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Slalom_With_A_Scalpel() { // Ďđîâĺđ˙ĺě ńóůĺńňâóţůčé ńčăíŕë íŕ čěĺĺň ďđŕâî áűňü // čëč íŕ ĺńëč íĺ ńňîčň, ŕ őîňĺëîńü áű: // ĺńëč őîä ÷čńňî ęîíęđĺňíî ďî ćčçíč - çŕáčâŕĺě Ńňđĺëęó íŕ äĺíüăč, // ĺńëč ďđîňčâ - ńňŕâčě íŕ řóőĺđ Řŕđčęŕ Äĺëŕé-Íîăč if(LastZigOrZag=="Zig") { if(TrendUp==true) { if((Navel-LastSlalomZig)>=LimitPoints && SetBuyOrder==false) { SetBuyOrder=true; BuyOrdersBuffer[shift]=Low[shift+1]; LastSlalomZigPos=shift; } if(Navel<=LastSlalomZig && SetBuyOrder==true) { SetBuyOrder=false; BuyOrdersBuffer[LastSlalomZigPos]=0.0; LastSlalomZigPos=-1; } } if(TrendUp==false) { if(Navel>LastSlalomZig && SetLimitOrder==false) { SetLimitOrder=true; LimitOrdersBuffer[shift]=Navel; // LimitOrdersBuffer[shift]=Close[shift]; LastSlalomZigPos=shift; } if(Navel<=LastSlalomZig && SetLimitOrder==true) { SetLimitOrder=false; LimitOrdersBuffer[LastSlalomZigPos]=0.0; LastSlalomZigPos=-1; } } } if(LastZigOrZag=="Zag") { if(TrendUp==false) { if((LastSlalomZag-Navel)>=LimitPoints && SetSellOrder==false) { SetSellOrder=true; SellOrdersBuffer[shift]=High[shift+1]; LastSlalomZagPos=shift; } if(Navel>=LastSlalomZag && SetSellOrder==true) { SetSellOrder=false; SellOrdersBuffer[LastSlalomZagPos]=0.0; LastSlalomZagPos=-1; } } if(TrendUp==true) { if(LastSlalomZag>Navel && SetLimitOrder==false) { SetLimitOrder=true; LimitOrdersBuffer[shift]=Navel; // LimitOrdersBuffer[shift]=Close[shift]; LastSlalomZagPos=shift; } if(Navel>=LastSlalomZag && SetLimitOrder==true) { SetLimitOrder=false; LimitOrdersBuffer[LastSlalomZagPos]=0.0; LastSlalomZagPos=-1; } } } return; } //+--Ńîáńňâĺííî, ˙ âńĺ ńęŕçŕë. Çŕáŕâíî, ĺńëč âńĺ ýňî đŕáîňŕňü áóäĺň--+ //+------------------------------------------------------------------+