← К каталогу
Исходный код · ID 3903

autochannel_hlk.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Это пользовательский индикатор для MetaTrader 5, который отображает на графике ценовой канал, построенный по последним данным. Индикатор рассчитывает верхнюю, среднюю и нижнюю границы канала, а также дополнительные уровни, и рисует их в виде линий. В правом верхнем углу выводится числовое значение ширины канала в пунктах.

Индикатор работает в окне графика и автоматически обновляется при поступлении новых данных. Он не выполняет торговых операций и не выдаёт сигналов, а служит исключительно для визуального анализа волатильности и границ движения цены.

Настройки позволяют задать количество часов для расчёта, цвет линий и коэффициент для дополнительных уровней. Все расчёты производятся на основе истории цен, доступной в терминале.

Настройки программы

НастройкаОписание
Hours Часы — Количество часов, используемых для расчёта канала. Влияет на длину периода анализа.
col Цвет — Цвет линий канала и дополнительных уровней на графике.
K Коэффициент — Коэффициент для расчёта дополнительных уровней внутри канала. Задаётся в процентах.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

extern int Hours=12;
extern color col=LightBlue;
extern double K=20;

double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,sName,fs;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2; 
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double H0,S0,L0,Hp,Sp,Lp;
int i0,p0;
double HL,khl,HK0,LK0,HKp,LKp;

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   ObjectDelete("chH"+sName);
   ObjectDelete("chS"+sName);
   ObjectDelete("chL"+sName);
   ObjectDelete("chHK"+sName);
   ObjectDelete("chLK"+sName);  
   ObjectDelete("txtHL"+sName); }

int start() {
      // код доступен только после оплаты
   }

if (f0==1) p=iBarShift(Symbol(),Period(),ObjectGet("chS"+sName,OBJPROP_TIME1));

sx=0; sy=0; sxy=0; sx2=0; 
for (int n=i0; n<=i0+p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}   
aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

for (int i=i0; i<=i0+p; i++) {
lr=bb+aa*i;
dh=High[i]-lr; dl=Low[i]-lr;

if (i<i0+p/2) {if (i==i0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;} 
if (dh>=dh_1) {dh_1=dh; ai_1=i;}
if (dl<=dl_1) {dl_1=dl; bi_1=i;}}  

if (i>=i0+p/2) {if (i==i0+p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;} 
if (dh>=dh_2) {dh_2=dh; ai_2=i;}
if (dl<=dl_2) {dl_2=dl; bi_2=i;}}} 

lr0=bb+aa*i0; lrp=bb+aa*(i0+p);

if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;
if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;
if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)<MathAbs(dl_1-dl_2)) f=1; if (MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;} 

if (f==1) {
for (n=0; n<=20; n++) { f1=0;
for (i=i0; i<=i0+p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);  
if (i==i0 || i==i0+p/2) dhm=0.0; 
if (High[i]-hai>dhm && i<i0+p/2) {ai_1=i; f1=1;}
if (High[i]-hai>dhm && i>=i0+p/2) {ai_2=i; f1=1;} }
if (f==0) break;} 

for (i=i0; i<=i0+p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);  
dli=Low[i]-hai; 
if (i==i0) dlm=0.0; if (dli<dlm) dlm=dli;}   
ha0=High[ai_1]*(i0-ai_2)/(ai_1-ai_2)+High[ai_2]*(i0-ai_1)/(ai_2-ai_1); 
hap=High[ai_1]*(i0+p-ai_2)/(ai_1-ai_2)+High[ai_2]*(i0+p-ai_1)/(ai_2-ai_1);

Показано первые 50% кода (символов: 3921)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
392,10₽ ≈ $4.79