Помогите с индикатором.

 

Всем привет.

Помогите добавить в индикатор https://www.mql5.com/ru/code/7576 ещё одну пару линий с возможностью настройки, как у других 2-х пар. Тоесть должно стать 7 линий в индикаторе.

Зарание благодарен.

 

Вставляйте по желанию, скоко захотите - пример вставки прилагаю. ;)


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Standard Deviation Channels.mq4 |
//| Copyright © 2006, tageiger, aka fxid10t@yahoo.com |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, tageiger, aka fxid10t@yahoo.com"
#property link "http://www.metaquotes.net"
//----
#property indicator_chart_window
//----
extern int STD.Rgres.period=0;
/*
default 0 means the channel will use the open
time from "x" bars back on which ever time period
the indicator is attached to. one can change to 1,5,
15,30,60...etc to "lock" the start time to a specific
period, and then view the "locked" channels on a different time period...
*/
extern int STD.Rgres.length=56; // bars back regression begins
extern double STD.Rgres.width=1.618;// widest channel

extern double STD.width=0.618; // inside channel

///---------- начинаем добавлять

extern double STD.width2=2.0; // inside channe2

extern double STD.width3=3.618; // inside channe3
//----
int init()
{
return(0);
}
int deinit()
{

ObjectDelete("regression channel");ObjectDelete("std channel");

ObjectDelete("regression channe2");ObjectDelete("std channe3"); // тоже нужно добавить

return(0);

}
int start()
{
//to refresh properly delete old objects...
ObjectDelete("regression channel");ObjectDelete("std channel");
//widest channel
ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);
ObjectSet("regression channel",OBJPROP_COLOR,Orange);
ObjectSet("regression channel",OBJPROP_RAY,true);
//inside channel
ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);
ObjectSet("std channel",OBJPROP_COLOR,Olive);
ObjectSet("std channel",OBJPROP_RAY,true);

/*

Далее можете размножать

*/

ObjectCreate("std channe2",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), Close[STD.Rgres.length],Time[0],Close[0]);

ObjectSet("std channe2",OBJPROP_DEVIATION,STD.width2);
ObjectSet("std channe2",OBJPROP_COLOR,Olive);
ObjectSet("std channe2",OBJPROP_RAY,true);
ObjectCreate("std channe3",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("std channe3",OBJPROP_DEVIATION,STD.width3);
ObjectSet("std channe3",OBJPROP_COLOR,Olive);
ObjectSet("std channe3",OBJPROP_RAY,true);

return(0);
//----
}
//+------------------------------------------------------------------+
 

Огромное, человеческое Спасибо.

Больших профитов Вам.

 

Подскажите пожалуста неграмотному ещё немного.

Как сделать, чтобы все линии (включая регрессию) строились не по Close, а по H+L/2 ?

Спасибо.

 

Возможно этот вариант подойдет, вместо:

Close[STD.Rgres.length]
Close[0]

попробуйте так: 

((High[STD.Rgres.length]+Low[STD.Rgres.length])/2)

((High[0]+Low[0])/2)
 
ToLik_SRGV:

Возможно этот вариант подойдет, вместо:

попробуйте так:


Неполучается. Индикатор пропадает из списка в терминале и не отображается на графике.

А можно пример как правильно вписать эту строку ? Может я по незнанию что не так делаю.

 

Посмотри этот вариант.

https://www.mql5.com/ru/forum/108553/page3

РАсчеты конечно можно было бы и упростить.

 
Vinin:

Посмотри этот вариант.

https://www.mql5.com/ru/forum/108553/page3

РАсчеты конечно можно было бы и упростить.


Спасибо Vinin. Я видел ваш вариант и он мне не подходит к сожалению.

 
dx3:


Спасибо Vinin. Я видел ваш вариант и он мне не подходит к сожалению.


Так переделать его несложно
 

Возможно, так(на графике не проверял, но логика вроде правильная)?

//----
#property indicator_chart_window
//----
extern int STD.Rgres.period=0; 
/*
default 0 means the channel will use the open 
time from "x" bars back on which ever time period 
the indicator is attached to. one can change to 1,5,
15,30,60...etc to "lock" the start time to a specific 
period, and then view the "locked" channels on a different time period...
*/
extern int STD.Rgres.length=56; // bars back regression begins
extern double STD.Rgres.width=1.618;// widest channel
extern double STD.width=0.618; // inside channel
extern double STD.width2=2.0; // inside channe2
extern double STD.width3=3.618; // inside channe3
double HL_2,HL_2_Std; 
//----
int init() 
{ 
return(0);
}
int deinit() 
{
ObjectDelete("regression channel");ObjectDelete("std channel");
ObjectDelete("regression channe2");ObjectDelete("std channe3"); 
return(0);
}
int start() 
{
HL_2=(High[0]+Low[0])/2;
HL_2_Std=(High[STD.Rgres.length]+Low[STD.Rgres.length])/2;
//to refresh properly delete old objects...
ObjectDelete("regression channel");ObjectDelete("std channel");
//widest channel 
ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), HL_2_Std,Time[0],HL_2);
ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);
ObjectSet("regression channel",OBJPROP_COLOR,Orange);
ObjectSet("regression channel",OBJPROP_RAY,true);
//inside channel
ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), HL_2_Std,Time[0],HL_2);
ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);
ObjectSet("std channel",OBJPROP_COLOR,Olive);
ObjectSet("std channel",OBJPROP_RAY,true);

ObjectCreate("std channe2",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), HL_2_Std,Time[0],HL_2);
ObjectSet("std channe2",OBJPROP_DEVIATION,STD.width2);
ObjectSet("std channe2",OBJPROP_COLOR,Olive);
ObjectSet("std channe2",OBJPROP_RAY,true);
ObjectCreate("std channe3",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length), HL_2_Std,Time[0],HL_2);
ObjectSet("std channe3",OBJPROP_DEVIATION,STD.width3);
ObjectSet("std channe3",OBJPROP_COLOR,Olive);
ObjectSet("std channe3",OBJPROP_RAY,true); 

return(0);
//----
}
//+------------------------------------------------------------------+
 
dx3:


Неполучается. Индикатор пропадает из списка в терминале и не отображается на графике.

А можно пример как правильно вписать эту строку ? Может я по незнанию что не так делаю.

Я имел в виду вот так:

#property copyright "Copyright © 2006, tageiger, aka fxid10t@yahoo.com"
#property link      "http://www.metaquotes.net"
//----
#property indicator_chart_window
//----
extern int STD.Rgres.period=0; 

extern int STD.Rgres.length=56;     // bars back regression begins
extern double STD.Rgres.width=1.618;// widest channel
extern double STD.width=0.618;      // inside channel
//----
int init()   
{ 
   return(0);
}
   int deinit()   
{
   ObjectDelete("regression channel");ObjectDelete("std channel");return(0);
}
   int start()   
{
//to refresh properly delete old objects...
   ObjectDelete("regression channel");ObjectDelete("std channel");
//widest channel   
   ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
((High[STD.Rgres.length]+Low[STD.Rgres.length])/2),Time[0],((High[0]+Low[0])/2));
   ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);
   ObjectSet("regression channel",OBJPROP_COLOR,Orange);
   ObjectSet("regression channel",OBJPROP_RAY,true);
//inside channel
   ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
((High[STD.Rgres.length]+Low[STD.Rgres.length])/2),Time[0],((High[0]+Low[0])/2));
   ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);
   ObjectSet("std channel",OBJPROP_COLOR,Olive);
   ObjectSet("std channel",OBJPROP_RAY,true);
   return(0);
//----
}
//+------------------------------------------------------------------+

Вроде все работает, никуда не исчезает.

Причина обращения: