SupportResistance M1.ex4 (59 Kb)
Добрый день. Прошу создать советника по скальпинговому индюку. Вручную отрабатывает на ура, на минутке, но дополняю его фибо, пивотами и сильными уровнями. В советнике это громоздко.
Суть — цена коснулась (не дошла на n пунктов, выставляется опционально) резистенс — продаём. И обратный сигнал либо выход при достижения n пунктов от безубытка.
Всё гениальное — просто
Комментарии (3)
#property indicator_buffers 8
//#property indicator_color1 Yellow
//#property indicator_color2 Yellow
//#property indicator_color3 LimeGreen
//#property indicator_color4 LimeGreen
//#property indicator_color5 Blue
//#property indicator_color6 Blue
//#property indicator_color7 Red
//#property indicator_color8 Red
//---- enum parameters
enum calcPRC { HighLow, OpenClose };
//---- input parameters
extern calcPRC CalcPrices = HighLow;
extern ENUM_TIMEFRAMES Period1 = PERIOD_M15,
Period2 = PERIOD_H1,
Period3 = PERIOD_H4,
Period4 = PERIOD_D1;
extern calcPRC DrawPrices = HighLow;
extern color color1 = clrYellow,
color2 = clrLimeGreen,
color3 = clrDeepSkyBlue, //DodgerBlue,
color4 = clrMagenta;
extern int SRcode1 = 158,
SRcode2 = 167,
SRcode3 = 115,
SRcode4 = 171,
SRsize1 = 2,
SRsize2 = 2,
SRsize3 = 3,
SRsize4 = 3;
double Ress1[], Supp1[];
double Ress2[], Supp2[];
double Ress3[], Supp3[];
double Ress4[], Supp4[];
int init()
{
Period1 = fmax(Period1,_Period);
Period2 = fmax(Period2,_Period);
Period3 = fmax(Period3,_Period);
Period4 = fmax(Period4,_Period);
IndicatorBuffers(8); IndicatorDigits(Digits);
// SetIndexBuffer(0,Ress1);
// SetIndexStyle(0,DRAW_ARROW,EMPTY,SRsize1,color1); SetIndexArrow(0, SRcode1);
// SetIndexDrawBegin(0,Period1); SetIndexLabel(0,stringMTF(Period1)+": Resistance1"); //«Resistance M15»);
// SetIndexBuffer(1,Supp1);
// SetIndexStyle(1,DRAW_ARROW,EMPTY,SRsize1,color1); SetIndexArrow(1, SRcode1);
// SetIndexDrawBegin(1,Period1); SetIndexLabel(1,stringMTF(Period1)+": Support1"); //«Support M15»);
SetIndexBuffer(2,Ress2);
SetIndexStyle(2,DRAW_ARROW,EMPTY,SRsize2,Red); SetIndexArrow(2, SRcode2);
SetIndexDrawBegin(2,Period1); SetIndexLabel(2,stringMTF(Period2)+": Resistance2"); //«Resistance H1»);
SetIndexBuffer(3,Supp2);
SetIndexStyle(3,DRAW_ARROW,EMPTY,SRsize2,SkyBlue); SetIndexArrow(3, SRcode2);
SetIndexDrawBegin(3,Period1); SetIndexLabel(3,stringMTF(Period2)+": Support2"); //«Support H1»);
SetIndexBuffer(4,Ress3);
SetIndexStyle(4,DRAW_ARROW,EMPTY,2,DarkRed); SetIndexArrow(4, SRcode3);
SetIndexDrawBegin(4,Period1); SetIndexLabel(4,stringMTF(Period3)+": Resistance3"); //«Resistance H4»);
SetIndexBuffer(5,Supp3);
SetIndexStyle(5,DRAW_ARROW,EMPTY,SRsize3,DarkBlue); SetIndexArrow(5, SRcode3);
SetIndexDrawBegin(5,Period1); SetIndexLabel(5,stringMTF(Period3)+": Support3"); //«Support H4»);
// SetIndexBuffer(6,Ress4);
// SetIndexStyle(6,DRAW_ARROW,EMPTY,SRsize4,Yellow); SetIndexArrow(6, SRcode4);
// SetIndexDrawBegin(6,Period1); SetIndexLabel(6,stringMTF(Period4)+": Resistance4"); //Resistance D1");
// SetIndexBuffer(7,Supp4);
// SetIndexStyle(7,DRAW_ARROW,EMPTY,SRsize4,color4); SetIndexArrow(7, SRcode4);
// SetIndexDrawBegin(7,Period1); SetIndexLabel(7,stringMTF(Period4)+": Support4"); //«Support D1»);
IndicatorShortName( WindowExpertName() +": "+ stringMTF(Period1)+" > "+stringMTF(Period2)+" > "+stringMTF(Period3)+" > "+stringMTF(Period4) );
return(0);
}
int deinit() { Comment(""); return(0); }
bool Fractal (string M, int P, int shift)
{
if (_Period>P) return(false);
P=P/_Period*2+MathCeil(P/_Period/2);
if (shift<P) return(false);
if (shift>Bars-P) return(false);
for (int i=1; i<=P; i++)
{
if (M==«U»)
{
if (CalcPrices==0)
{
if (High[shift+i] > High[shift]) return(false);
if (High[shift-i] >= High[shift]) return(false);
}
if (CalcPrices==1)
{
if ( fmax(Open[shift+i],Close[shift+i]) > fmax(Open[shift],Close[shift]) ) return(false);
if ( fmax(Open[shift-i],Close[shift-i]) >= fmax(Open[shift],Close[shift]) ) return(false);
}
}
if (M==«L»)
{
if (CalcPrices==0)
{
if (Low[shift+i] < Low[shift]) return(false);
if (Low[shift-i] <= Low[shift]) return(false);
}
if (CalcPrices==1)
{
if ( fmin(Open[shift+i],Close[shift+i]) < fmin(Open[shift],Close[shift]) ) return(false);
if ( fmin(Open[shift-i],Close[shift-i]) <= fmin(Open[shift],Close[shift]) ) return(false);
}
}
}
return(true);
}
int start()
{
int M15=Period1, H1=Period2, H4=Period3, D1=Period4; ///int D1=1440, H4=240, H1=60, M15=15;
int i=Bars;
while (i>=0)
{
// if (Fractal(«U»,M15,i)) Ress1[i] = DrawPrices==0? High[i]: fmax(Open[i],Close[i]);
// else Ress1[i] = Ress1[i+1];
// if (Fractal(«L»,M15,i)) Supp1[i] = DrawPrices==0? Low[i]: fmin(Open[i],Close[i]);
// else Supp1[i] = Supp1[i+1];
// if (Period2>Period1)
// {
if (Fractal(«U»,H1,i)) Ress2[i] = DrawPrices==0? High[i]: fmax(Open[i],Close[i]);
else Ress2[i] = Ress2[i+1];
if (Fractal(«L»,H1,i)) Supp2[i] = DrawPrices==0? Low[i]: fmin(Open[i],Close[i]);
else Supp2[i] = Supp2[i+1];
// }
if (Period3>Period1 && Period3!=Period2)
{
if (Fractal(«U»,H4,i)) Ress3[i] = DrawPrices==0? High[i]: fmax(Open[i],Close[i]);
else Ress3[i] = Ress3[i+1];
if (Fractal(«L»,H4,i)) Supp3[i] = DrawPrices==0? Low[i]: fmin(Open[i],Close[i]);
else Supp3[i] = Supp3[i+1];
}
if (Period4>Period1 && Period4!=Period3 && Period4!=Period2)
{
if (Fractal(«U»,D1,i)) Ress4[i] = DrawPrices==0? High[i]: fmax(Open[i],Close[i]);
else Ress4[i] = Ress4[i+1];
if (Fractal(«L»,D1,i)) Supp4[i] = DrawPrices==0? Low[i]: fmin(Open[i],Close[i]);
else Supp4[i] = Supp4[i+1];
}
i--;
}
return(0);
}
string stringMTF(int perMTF)
{
if (perMTF==0) perMTF=_Period;
if (perMTF==1) return(«M1»);
if (perMTF==5) return(«M5»);
if (perMTF==15) return(«M15»);
if (perMTF==30) return(«M30»);
if (perMTF==60) return(«H1»);
if (perMTF==240) return(«H4»);
if (perMTF==1440) return(«D1»);
if (perMTF==10080) return(«W1»);
if (perMTF==43200) return(«MN1»);
if (perMTF== 2 || 3 || 4 || 6 || 7 || 8 || 9 || /// нестандартные периоды для грфиков Renko
10 || 11 || 12 || 13 || 14 || 16 || 17 || 18) return(«M»+(string)_Period);
return(«Period error!»); //(«Ошибка периода»);
8 Maxix Сообщений: 59
8 Maxix Сообщений: 59
4 walter8319 Автор Сообщений: 100
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий