Советник для малорискового разгона депозита. Циклов может быть и больше. Зависит от того, какой сигнализатор вы будете использовать.
Именно над этим я и работаю.
Да… советник от Андрея не используйте. Он и рядом не стоял с ТЗ. Пустой.
<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