Rocknrolla
Прохожий
Есть вот такй индюк:
Помогите написать по нему советник, только проблема в том, что он рисует линии Фибо по каждой новой линии, а я хочу чтобы новая линия, являлась целями от предыдущей, то есть надо что бы он рисовал Фибо по предпоследней линии.
Во-вторых, хочу что бы задавались все параметры ZigZag.
Вход отложенными ордерами, на пробои 100%, цель 161,8%.
Вход например 100% Фибо+10 пунктов, выход 161,8% - 15 пунктов, лучше конечно что бы эти самые пункты моно было менять))))
СЛ (2 варианта):
- либо % от Фибо, по умолчанию 61,8%
- либо % от ТП, по умалчанию 30%
вот как это вижу я:
Помогите кто чем может!!!
Заранее благодарен!!!!!!!!
//+------------------------------------------------------------------+
//| |
//| Copyright © 2000-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// Казахский Удав.mq4
#property copyright "слова - Mandor, музыка - народная"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//----
extern int Length=6;
extern int CountBars=1000; // Количество обсчитываемых баров
extern bool fibo=true;
extern color colorFibo = Yellow;
//----
double buffer[];
double lBar, hBar;
datetime tiZZ;
double p1,p2;
datetime t1,t2;
double fi_1[]={0, 0.236, 0.382, 0.5, 0.618, 1.0, 1.618, 2.618};
string fitxt100_1[]={"0.0", "23.6", "38.2", "50.0", "61.8", "100.0", "161.8", "2.618"};
int Sizefibo;
string Period_tf;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void init()
{
SetIndexBuffer(0,buffer);
SetIndexStyle(0,DRAW_SECTION,0,1);
SetIndexEmptyValue(0,0.0);
SetIndexLabel(0,"Value");
SetIndexDrawBegin(0,0);
Sizefibo=ArraySize(fi_1);
string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"};
switch (Period())
{
case 1 : {Period_tf=TF[8];break;}
case 5 : {Period_tf=TF[7];break;}
case 15 : {Period_tf=TF[6];break;}
case 30 : {Period_tf=TF[5];break;}
case 60 : {Period_tf=TF[4];break;}
case 240 : {Period_tf=TF[3];break;}
case 1440 : {Period_tf=TF[2];break;}
case 10080 : {Period_tf=TF[1];break;}
case 43200 : {Period_tf=TF[0];break;}
}
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Начало. |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("_%fibo");
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Конец. |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void start()
{
int shift, zu, zd, Swing, Swing_n, i, i1, i2;
double HH, LL, BH, BL;
//----
if (tiZZ!=Time[0] || lBar<Low[0] || hBar>High[0]) // micmed+nen
{
tiZZ=Time[0]; lBar=Low[0]; hBar=High[0];
if ((Bars-IndicatorCounted()-1)>2) ArrayInitialize(buffer,0.0);
}
else return;
Swing=0;
Swing_n=0;
shift=CountBars-1;
zu=shift;
zd=shift;
BH=High[shift];
BL=Low[shift];
//----
for(shift=CountBars-1; shift>=0; shift--)
{
HH=High[iHighest(NULL,0,MODE_HIGH,Length,shift+1)];
LL=Low [iLowest (NULL,0,MODE_LOW ,Length,shift+1)];
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];}
if (Swing== 1) {buffer[zd]=BL; i1=i2; i2=zd;}
if (Swing==-1) {buffer[zu]=BH; i1=i2; i2=zu;}
BH=High[shift];
BL=Low [shift];
}
if (Swing== 1) {if (High[shift]>=BH) {BH=High[shift]; zu=shift;}}
if (Swing==-1) {if (Low [shift]<=BL) {BL=Low [shift]; zd=shift;}}
Swing_n=Swing;
}
if (fibo)
{
p1=buffer[i1]; t1=Time[i1];
p2=buffer[i2]; t2=Time[i2];
string nameObj="_%fibo";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBO,0,t1,p1,t2,p2);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,colorFibo);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_WIDTH,0);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,0);
ObjectSet(nameObj,OBJPROP_BACK,true);
// ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefibo);
for (i=0;i<Sizefibo;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1);
ObjectSetFiboDescription(nameObj, i, fitxt100_1+" "+DoubleToStr((p1-p2)*fi_1+p2, Digits)+"-"+Period_tf);
}
}
}
//+------------------------------------------------------------------+
//| |
//| Copyright © 2000-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// Казахский Удав.mq4
#property copyright "слова - Mandor, музыка - народная"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//----
extern int Length=6;
extern int CountBars=1000; // Количество обсчитываемых баров
extern bool fibo=true;
extern color colorFibo = Yellow;
//----
double buffer[];
double lBar, hBar;
datetime tiZZ;
double p1,p2;
datetime t1,t2;
double fi_1[]={0, 0.236, 0.382, 0.5, 0.618, 1.0, 1.618, 2.618};
string fitxt100_1[]={"0.0", "23.6", "38.2", "50.0", "61.8", "100.0", "161.8", "2.618"};
int Sizefibo;
string Period_tf;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void init()
{
SetIndexBuffer(0,buffer);
SetIndexStyle(0,DRAW_SECTION,0,1);
SetIndexEmptyValue(0,0.0);
SetIndexLabel(0,"Value");
SetIndexDrawBegin(0,0);
Sizefibo=ArraySize(fi_1);
string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"};
switch (Period())
{
case 1 : {Period_tf=TF[8];break;}
case 5 : {Period_tf=TF[7];break;}
case 15 : {Period_tf=TF[6];break;}
case 30 : {Period_tf=TF[5];break;}
case 60 : {Period_tf=TF[4];break;}
case 240 : {Period_tf=TF[3];break;}
case 1440 : {Period_tf=TF[2];break;}
case 10080 : {Period_tf=TF[1];break;}
case 43200 : {Period_tf=TF[0];break;}
}
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Начало. |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("_%fibo");
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Конец. |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void start()
{
int shift, zu, zd, Swing, Swing_n, i, i1, i2;
double HH, LL, BH, BL;
//----
if (tiZZ!=Time[0] || lBar<Low[0] || hBar>High[0]) // micmed+nen
{
tiZZ=Time[0]; lBar=Low[0]; hBar=High[0];
if ((Bars-IndicatorCounted()-1)>2) ArrayInitialize(buffer,0.0);
}
else return;
Swing=0;
Swing_n=0;
shift=CountBars-1;
zu=shift;
zd=shift;
BH=High[shift];
BL=Low[shift];
//----
for(shift=CountBars-1; shift>=0; shift--)
{
HH=High[iHighest(NULL,0,MODE_HIGH,Length,shift+1)];
LL=Low [iLowest (NULL,0,MODE_LOW ,Length,shift+1)];
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];}
if (Swing== 1) {buffer[zd]=BL; i1=i2; i2=zd;}
if (Swing==-1) {buffer[zu]=BH; i1=i2; i2=zu;}
BH=High[shift];
BL=Low [shift];
}
if (Swing== 1) {if (High[shift]>=BH) {BH=High[shift]; zu=shift;}}
if (Swing==-1) {if (Low [shift]<=BL) {BL=Low [shift]; zd=shift;}}
Swing_n=Swing;
}
if (fibo)
{
p1=buffer[i1]; t1=Time[i1];
p2=buffer[i2]; t2=Time[i2];
string nameObj="_%fibo";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBO,0,t1,p1,t2,p2);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,colorFibo);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_WIDTH,0);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,0);
ObjectSet(nameObj,OBJPROP_BACK,true);
// ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefibo);
for (i=0;i<Sizefibo;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1);
ObjectSetFiboDescription(nameObj, i, fitxt100_1+" "+DoubleToStr((p1-p2)*fi_1+p2, Digits)+"-"+Period_tf);
}
}
}
//+------------------------------------------------------------------+
Помогите написать по нему советник, только проблема в том, что он рисует линии Фибо по каждой новой линии, а я хочу чтобы новая линия, являлась целями от предыдущей, то есть надо что бы он рисовал Фибо по предпоследней линии.
Во-вторых, хочу что бы задавались все параметры ZigZag.
Вход отложенными ордерами, на пробои 100%, цель 161,8%.
Вход например 100% Фибо+10 пунктов, выход 161,8% - 15 пунктов, лучше конечно что бы эти самые пункты моно было менять))))
СЛ (2 варианта):
- либо % от Фибо, по умолчанию 61,8%
- либо % от ТП, по умалчанию 30%
вот как это вижу я:
Помогите кто чем может!!!
Заранее благодарен!!!!!!!!
Последнее редактирование модератором: