Советник для малорискового разгона депозита. Циклов может быть и больше. Зависит от того, какой сигнализатор вы будете использовать.
Именно над этим я и работаю.
Да… советник от Андрея не используйте. Он и рядом не стоял с ТЗ. Пустой.
<code>//+------------------------------------------------------------------+ //| MTF Fractal KAE_v2.mq4 | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 clrRed // Up_Fractal_Color #property indicator_color2 clrBlue // Down_Fractal_Color enum Wight { Three_Bars, Five_Bars, Seven_Bars, }; extern int Fractal_Timeframe = 0; extern Wight FractalsWight = Five_Bars; //extern int LevelDelta = 5; extern bool Show_Validation_Candle = false; extern bool Show_Line = true; extern int HistoryBars = 2000; double UpBuffer[], DnBuffer[], refchk, tempref, level; int barc; double Current; //+------------------------------------------------------------------+ //| INIT | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_ARROW, DRAW_ARROW, 1); SetIndexArrow(0,119); SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_ARROW, DRAW_ARROW, 1);SetIndexArrow(1,119); return(0); } //+------------------------------------------------------------------+ //| DEINIT | //+------------------------------------------------------------------+ int deinit() { for (int i = ObjectsTotal(); i >= 0; i--) if (StringSubstr(ObjectName(i),0,12) == "MTF_Fractal_KAE") ObjectDelete(ObjectName(i)); return(0); } //+------------------------------------------------------------------+ //| START | //+------------------------------------------------------------------+ int start() { int i, c, dif; tempref = iHigh(Symbol(), Fractal_Timeframe, 1) + iHigh(Symbol(), Fractal_Timeframe, 51) + iHigh(Symbol(), Fractal_Timeframe, 101); if (barc != Bars || IndicatorCounted() < 0 || tempref != refchk) { barc = Bars; refchk = tempref; } else return(0); if (Fractal_Timeframe <= Period()) Fractal_Timeframe = Period(); dif = Fractal_Timeframe/Period(); if (HistoryBars > Bars) HistoryBars = Bars-10; for(i = 0; i < HistoryBars; i++) { if (iBarShift(NULL,Fractal_Timeframe,Time[i]) < 2) { UpBuffer[i] = 0; DnBuffer[i] = 0; continue; } if(FractalsWight==Three_Bars) { //----Fractals up Current=High[i]; if(Current>High[i+1] && Current>=High[i-1]) UpBuffer[i]=Current; //----Fractals down Current=Low[i]; if(Current<Low[i+1] && Current<=Low[i-1]) DnBuffer[i]=Current; } if(FractalsWight==Five_Bars) { //----Fractals up Current=High[i]; if(Current>High[i+1] && Current>High[i+2] && Current>=High[i-1] && Current>=High[i-2]) UpBuffer[i]=Current; //----Fractals down Current=Low[i]; if(Current<Low[i+1] && Current<Low[i+2] && Current<=Low[i-1] && Current<=Low[i-2]) DnBuffer[i]=Current; } if(FractalsWight==Seven_Bars) { //----Fractals up Current=High[i]; if(Current>High[i+3] && Current>High[i+2] && Current>High[i+1] && Current>=High[i-1] && Current>=High[i-2] && Current>=High[i-3]) UpBuffer[i]=Current; //----Fractals down Current=Low[i]; if(Current<Low[i+3] && Current<Low[i+2] && Current<Low[i+1] && Current<=Low[i-1] && Current<=Low[i-2] && Current<=Low[i-3]) DnBuffer[i]=Current; } } //--- if (Show_Line) { for(i = 0; i < HistoryBars; i++) { if (UpBuffer[i] > 0) { level = UpBuffer[i];//+LevelDelta*Point; for (c = i; c > 0; c--) { if ((Open[c] < level && Close[c] > level) || (Open[c] > level && Close[c] < level)) break; if (Open[c] <= level && Close[c] <= level && Open[c-1] >= level && Close[c-1] >= level) break; if (Open[c] >= level && Close[c] >= level && Open[c-1] <= level && Close[c-1] <= level) break; } DrawLine ("H", i, c, level, 0, clrBlue, 0, 2); if (Show_Validation_Candle) UpBuffer[i-2*dif] = level; i += dif; } //--- } for(i = 0; i < HistoryBars; i++) { if (DnBuffer[i] > 0) { level = DnBuffer[i];//-LevelDelta*Point; for (c = i; c > 0; c--) { if ((Open[c] < level && Close[c] > level) || (Open[c] > level && Close[c] < level)) break; if (Open[c] <= level && Close[c] <= level && Open[c-1] >= level && Close[c-1] >= level) break; if (Open[c] >= level && Close[c] >= level && Open[c-1] <= level && Close[c-1] <= level) break; } DrawLine ("L", i, c, level, 0, clrRed, 0, 2); if (Show_Validation_Candle) DnBuffer[i-2*dif] = level; i += dif; } } } return(0); } //+------------------------------------------------------------------+ //| DRAW LINE | //+------------------------------------------------------------------+ void DrawLine (string dir, int i, int c, double lev, bool back, color col, int width, int style) { ObjectCreate("MTF_Fractal_"+dir+i,OBJ_TREND,0,0,0,0,0); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_TIME1,iTime(Symbol(),Period(),i)); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_PRICE1,lev); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_TIME2,iTime(Symbol(),Period(),c)); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_PRICE2,lev); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_RAY,0); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_BACK,back); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_COLOR,col); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_WIDTH,width); ObjectSet ("MTF_Fractal_"+dir+i,OBJPROP_STYLE,style); } //+------------------------------------------------------------------+ </code>
Удивлён, что это всё кому-то интересно.
Сейчас по БУ, потом по БУ… А когда зарабатывать будем то?
Ваше предложение имеет смысл если в т.5 мы имеем какую-то минимальную прибыль. Так хоть не жаль потерянные годы кропотливого труда.
Иначе ждём точку 9, закрываем все продажи и тралим от т.10 прибыль. При «правильном» шаге можно войти в нирвану.
kvashnin007