autochannel_hlk.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.