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

SHI Channel

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

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

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

О программе

Индикатор SHI Channel строит аналитический канал на графике цены, определяя два экстремальных значения (максимумы или минимумы) за настраиваемый период и проводя через них линейные тренды. На графике отображаются три линии: верхняя и нижняя границы канала, а также средняя линия. Цвет линий меняется в зависимости от параметров канала.

Ширина канала и угол его наклона вычисляются и отображаются в виде комментария прямо на графике. При изменении ширины канала или направления его наклона индикатор может отправлять звуковое уведомление, если соответствующая настройка включена.

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

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

НастройкаОписание
AllBars Максимальное количество баров, используемых для анализа и построения канала.
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]; }
			else { B2=CurrentBar; P2

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

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

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

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

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

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

Стоимость полного кода
443,90₽ ≈ $5.43