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

XARD Wave

#4x 2011 xard wave [insider].mq4
Вы автор или правообладатель?

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

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

О программе

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

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

Индикатор поддерживает систему уведомлений: всплывающие сообщения, звуковые и email-оповещения при наступлении определённых событий. Уведомления можно включать или отключать, а также настраивать их тип.

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

НастройкаОписание
=3..4 (SR) SR — Числовой параметр, задающий период усреднения вспомогательной линии.
=4..12..20..12 (SRZZ) SRZZ — Числовой параметр, задающий период для расчёта малой зигзаг-линии.
12;//20; // =12..20..54..20 (MainRZZ) MainRZZ — Числовой параметр, задающий основной период для расчёта большой зигзаг-линии.
FP FP — Числовой параметр, используемый для расчёта вспомогательных буферов.
=1..5 (SMF) SMF — Числовой параметр, задающий коэффициент сглаживания вспомогательной линии.
DrawZZ Отрисовка зигзага — Переключатель отрисовки зигзаг-линий на графике.
exaprice exaprice — Текстовый параметр, описывающий режимы цен.
exprice exprice — Текстовый параметр, описывающий доступные режимы цен.
exprice2 exprice2 — Текстовый параметр, описывающий дополнительные режимы цен.
PriceConst Тип цены — Числовой параметр, определяющий тип цены, используемой в расчётах.
alertsOn Уведомления включены — Главный переключатель включения всех уведомлений.
alertsOnCurrent Уведомления для текущей свечи — Переключатель: уведомления для текущей свечи или предыдущей.
alertsMessage Всплывающие сообщения — Переключатель всплывающих сообщений.
alertsSound Звуковые уведомления — Переключатель звуковых уведомлений.
alertsEmail Email-уведомления — Переключатель отправки email-уведомлений.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1  White
#property indicator_width1 2
#property indicator_color2  Lime
#property indicator_width2 3
#property indicator_color3  Blue
#property indicator_color4  Blue
#property indicator_color5  DodgerBlue  //45,140,90
#property indicator_width5 1
#property indicator_color6  C'255,100,255'  //140,45,90
#property indicator_width6 1
#property indicator_color7  DodgerBlue  //45,140,90
#property indicator_width7 1
#property indicator_color8  C'255,100,255'  //140,45,90
#property indicator_width8 1

extern int    SR              = 3;  // =3..4
extern int    SRZZ            = 36; // =4..12..20..12
extern int    MainRZZ         = 36;//12;//20; // =12..20..54..20
extern int    FP              = 36;
extern int    SMF             = 3;  // =1..5
extern bool   DrawZZ          = false;
extern string exaprice        = "Price modes";
extern string exprice         = "0=close,1=open,2=high,3=low";
extern string exprice2        = "4=(h+l)/2,5=(h+l+c)/3,6=(H+L+2*C)/4";        
extern int    PriceConst      = 0; 
extern bool   alertsOn        = false;
extern bool   alertsOnCurrent = true;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = true;
extern bool   alertsEmail     = false;

double        Lmt[];
double        LZZ[];
double        SA[];
double        SM[];
double        Up[];
double        Dn[];
double        pUp[];
double        pDn[];

int LTF[6]={0,0,0,0,0,0},STF[5]={0,0,0,0,0}; 
int MaxBar, nSBZZ, nLBZZ, SBZZ, LBZZ;
bool First=true;
int prevBars=0;

void MainCalculation(int Pos) {
if((Bars-Pos)>(SR+1)) SACalc(Pos); else SA[Pos]=0; 
if((Bars-Pos)>(FP+SR+2)) SMCalc(Pos); else SM[Pos]=0; return; }

void SACalc(int Pos) { int sw, i, w, ww, Shift; double sum; 
switch(PriceConst) {
case  0: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_CLOSE,Pos);
  break;
case  1: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
  break;
/*case  2: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_HIGH,Pos);
  break;
case  3: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_LOW,Pos);
  break;*/
case  4: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_MEDIAN,Pos);
  break;
case  5: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_TYPICAL,Pos);
  break;
case  6: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_WEIGHTED,Pos);
  break;
default: 
  SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
  break; }
for(Shift=Pos+SR+2;Shift>Pos;Shift--) { sum=0.0; sw=0; i=0; w=Shift+SR;
ww=Shift-SR; if(ww<Pos) ww=Pos;
while(w>=Shift) {i++; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
while(w>=ww) { i--; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
SA[Shift]=sum/sw; } return; }

double SnakePrice(int Shift) {
switch(PriceConst) {
   case  0: return(Close[Shift]);
   case  1: return(Open[Shift]);
   /*case  2: return(High[Shift]);
   case  3: return(Low[Shift]);*/
   case  4: return((High[Shift]+Low[Shift])/2);
   case  5: return((Close[Shift]+High[Shift]+Low[Shift])/3);
   case  6: return((2*Close[Shift]+High[Shift]+Low[Shift])/4);
   default: return(Open[Shift]); } }

void SMCalc(int i) { double t, b;
for(int Shift=i+SR+2;Shift>=i;Shift--) {
t=SA[ArrayMaximum(SA,FP,Shift)]; b=SA[ArrayMinimum(SA,FP,Shift)];
SM[Shift]=(2*(2+SMF)*SA[Shift]-(t+b))/2/(1+SMF); } return; }

void LZZCalc(int Pos) { 
int i,RBar,LBar,ZZ,NZZ,NZig,NZag; 
i=Pos-1; NZig=0; NZag=0;
while(i<MaxBar && ZZ==0) { i++; LZZ[i]=0; RBar=i-MainRZZ; 
if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) { ZZ=-1; NZig=i; }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) { ZZ=1;NZag=i; } }
if(ZZ==0) return; NZZ=0;
if(i>Pos) { if(SM[i]>SM[Pos]) { if(ZZ==1) {
if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF[NZZ]=i; } NZag=i; 
LZZ[i]=SM[i]; } }
else { if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF[NZZ]=i; }
NZig=i; LZZ[i]=SM[i]; } } }
while(i<LBZZ || NZZ<5) {  LZZ[i]=0; RBar=i-MainRZZ; 
if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) {
if(ZZ==-1 && SM[i]<SM[NZig]) { 
if(i>=Pos+MainRZZ && NZZ<5) LTF[NZZ]=i; LZZ[NZig]=0; LZZ[i]=SM[i]; 
NZig=i; }
if(ZZ==1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF[NZZ]=i; } 
LZZ[i]=SM[i]; ZZ=-1; NZig=i; } }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) {
if(ZZ==1 && SM[i]>SM[NZag]) { 
if(i>=Pos+MainRZZ && NZZ<5) LTF[NZZ]=i; LZZ[NZag]=0; LZZ[i]=SM[i]; 
NZag=i; }
if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF[NZZ]=i; } 
LZZ[i]=SM[i]; ZZ=1; NZag=i; } } i++; if(i>MaxBar) return; } 
nLBZZ=Bars-LTF

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

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

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

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

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

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

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