SHI Channel
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «shi_channel_colour_talk.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор SHI Channel строит на графике канал на основе двух найденных опорных точек (максимумов или минимумов) и отображает его в виде трёх трендовых линий: верхней границы, нижней границы и средней линии. Канал рассчитывается на заданном количестве баров с возможностью настройки периода для определения фрактальных точек.
Индикатор вычисляет ширину канала и угол наклона, отображает их в комментарии на графике. При изменении ширины канала или направления наклона проверяется условие для уведомлений, если параметр ChannelTalk включён. Цвет линий канала и средняя линия устанавливаются синими, стиль и толщина задаются в коде.
Индикатор использует один буфер для отрисовки ценового маркера на графике. Обработка происходит при каждом новом баре, параметры настраиваются через extern-переменные.
Настройки программы
| Настройка | Описание |
|---|---|
| AllBars | Максимальное количество баров для анализа и построения канала. Если установлено в 0 или меньше, чем доступное число баров, используется текущее количество баров. |
| BarsForFract | Количество баров для определения фрактальных точек. Если установлено в 0, значение выбирается автоматически в зависимости от текущего таймфрейма. |
| ChannelAlert | Пороговое значение ширины канала, используемое для определения условий изменения цвета линий канала. |
| SlopeAlert | Пороговое значение угла наклона, используемое для определения условий изменения цвета средней линии канала. |
| ChannelTalk | Переключатель, включающий или отключающий проверку и уведомление при изменении ширины канала или направления его наклона. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
double ExtMapBuffer1[];
extern int AllBars=240;
extern int BarsForFract=0;
extern int ChannelAlert=50;
extern int SlopeAlert=25;
extern bool ChannelTalk=true;
int CurrentBar=0;
int alertTag;
double Step=0;
int B1=-1,B2=-1;
int UpDown=0;
double P1=0,P2=0,PP=0;
double OldChannelWidth,OldSlopeAngle;
int i=0,AB=300,BFF=0;
int ishift=0;
double iprice=0;
datetime T1,T2;
int firsttime=0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void DelObj()
{
ObjectDelete("TL1");
ObjectDelete("TL2");
ObjectDelete("MIDL");
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
string symbolTxt;
string WhatTxt;
if (Symbol()=="EURUSD") { symbolTxt = "Euro Dollar"; }
if (Symbol()=="EURJPY") { symbolTxt = "Euro Yen "; }
if (Symbol()=="EURAUD") { symbolTxt = "Euro Aussie "; }
if (Symbol()=="EURCAD") { symbolTxt = "Euro Canadian"; }
if (Symbol()=="EURCHF") { symbolTxt = "Euro Swiss"; }
if (Symbol()=="GBPUSD") { symbolTxt = "Cable Dollar"; }
if (Symbol()=="GBPJPY") { symbolTxt = "Cable Yen "; }
if (Symbol()=="GBPCHF") { symbolTxt = "Cable Swiss"; }
if (Symbol()=="AUDUSD") { symbolTxt = "Aussie"; }
if (Symbol()=="USDCHF") { symbolTxt = "Swiss Dollar"; }
if (Symbol()=="USDCAD") { symbolTxt = "Canada"; }
if (Symbol()=="USDJPY") { symbolTxt = "Yen Dollar"; }
if (Symbol()=="CHFJPY") { symbolTxt = "Swiss Yen "; }
if (Symbol()=="GOLD") { symbolTxt = "Gold"; }
if ((AllBars==0) || (Bars<AllBars)) AB=Bars; else AB=AllBars; //AB-?????????? ????????????? ?????
if (BarsForFract>0)
BFF=BarsForFract;
else
{
switch (Period())
{
case 1: BFF=12; break;
case 5: BFF=48; break;
case 15: BFF=24; break;
case 30: BFF=24; break;
case 60: BFF=12; break;
case 240: BFF=15; break;
case 1440: BFF=10; break;
case 10080: BFF=6; break;
default: DelObj(); return(-1); break;
}
}
CurrentBar=2; //??????? ? ???????? ????, ????? ??????? "??????????
B1=-1; B2=-1; UpDown=0;
while(((B1==-1) || (B2==-1)) && (CurrentBar<AB))
{
if((UpDown<1) && (CurrentBar==Lowest(Symbol(),Period(),MODE_LOW,BFF*2+1,CurrentBar-BFF)))
{
if(UpDown==0) { UpDown=-1; B1=CurrentBar; P1=Low[B1]; }
else { B2=CurrentBar; P2=Low[B2];}
}
if((UpDown>-1) && (CurrentBar==Highest(Symbol(),Period(),MODE_HIGH,BFF*2+1,CurrentBar-BFF)))
{
if(UpDown==0) { UpDown=1; B1=CurrentBar; P1=High[B1]; }
Показано первые 50% кода (символов: 4395)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.