Navigation:Home > Content >

JADX.mq4

Time: 2010-11-19 | Download file:JADX.mq4

/*
Для  работы  индикатора  следует  положить файл JJMASeries.mqh в папку
(директорию): MetaTrader\experts\include\
*/
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
//|                                                         JADX.mq4 | 
//|                 JMA code: Copyright © 2005, Weld, Jurik Research | 
//|                                          http://weld.torguem.net | 
//|                JADX+MQL4: Copyright © 2005,     Nikolay Kositsin | 
//|                                   Khabarovsk, violet@mail.kht.ru | 
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
#property copyright "Copyright 2005, Nikolay Kositsin" 
#property link "violet@mail.kht.ru"
#property indicator_separate_window
#property indicator_color1 Red 
//---- input parameters 
extern int Length1   = 8;  // глубина сглаживания DX
extern int Length2   = 3;  // глубина сглаживания ADX
extern int Phase1    =-100;// параметр, изменяющийся в пределах -100 ... +100, влияет на качество переходныx процессов +DM и -DM; 
extern int Phase2    =-100;// параметр, изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса ADX; 
extern int Shift     = 0;  // cдвиг индикатора вдоль оси времени 
extern int CountBars = 500;// Количество последних баров, на которых происходит расчёт ндикатора
//---- indicator buffers 
double JADX_Buffer[ ]; 
//---- ADX variabls
double pDM,mDM,TRJ,JpDM,JmDM,ADX,JADX;
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
//| JADX initialization function                                     | 
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
int init() 
{ 
SetIndexStyle(0, DRAW_LINE); 
SetIndexShift(0, Shift); 
//---- 1 indicator buffer[n]s mapping 
SetIndexBuffer (0, JADX_Buffer);
SetIndexDrawBegin(0,Bars-CountBars); 
SetIndexEmptyValue(0,0.0); 
//---- 
SetIndexLabel (0, "JADX"); 
IndicatorShortName ("JADX"); 
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//+======================================================================================================================================+ 
if(Phase1<-100){Alert("Параметр Phase1 должен быть от -100 до +100" + " Вы ввели недопустимое " +Phase1+  " будет использовано -100");}//|
if(Phase1> 100){Alert("Параметр Phase1 должен быть от -100 до +100" + " Вы ввели недопустимое " +Phase1+  " будет использовано  100");}//|
if(Phase2<-100){Alert("Параметр Phase2 должен быть от -100 до +100" + " Вы ввели недопустимое " +Phase2+  " будет использовано -100");}//|
if(Phase2> 100){Alert("Параметр Phase2 должен быть от -100 до +100" + " Вы ввели недопустимое " +Phase2+  " будет использовано  100");}//|
if(Length1< 1) {Alert("Параметр Length1 должен быть не менее 1"     + " Вы ввели недопустимое " +Length1+ " будет использовано  1");}////|
if(Length2< 1) {Alert("Параметр Length2 должен быть не менее 1"     + " Вы ввели недопустимое " +Length2+ " будет использовано  1");}////|
//+======================================================================================================================================+ 
//---- initialization done
return(0); 
} 
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
//| JADX iteration function                                          | 
//+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ 
int start() 
{ 
//----+ Получение уже подсчитанных баров
int counted_bars = IndicatorCounted(); 
//----+ Проверка на возможные ошибки
if (counted_bars<0) return (-1);
int limit=Bars-counted_bars-1;
//----+ Введение и инициализация внутренних переменных функции JJMASeries, nJMAnumber=3(Три обращения к функции) 
if (limit==Bars-1){int reset=-1;int set=JJMASeries(3,0,0,0,0,0,0,0,reset);if((reset!=0)||(set!=0))return(-1);}
//----+  
 for(int k=limit;k>=0;k--)
 {
  TRJ=iATR(NULL,Period(),1,k);     
  pDM=High[k]-High[k+1];mDM=Low[k+1]-Low[k];
  if (pDM<0)pDM=0.0;
  if (mDM<0)mDM=0.0;
  if (pDM==mDM)  {pDM=0.0; mDM=0.0;}
  if((pDM> mDM)&&(pDM>0.0))mDM=0.0;
  if((pDM< mDM)&&(mDM>0.0))pDM=0.0;
  if((TRJ<0.00001)&&(k0.00001) ADX=100*(JpDM-JmDM)/(JpDM+JmDM);else ADX=0.0;
  
  //----+ Обращение к функции JJMASeries за номером 2 (В этом обращении параметр nJMAMaxBar уменьшен на 30  т. к. это повторное JMA сглаживание) 
  reset=1;JADX=JJMASeries(2,0,Bars-1-30,limit,Phase2,Length2,ADX,k,reset);if(reset!=0)return(-1); 
  JADX_Buffer[k]=JADX;  
 }
//----+
return(0);  
}
//----+ Введение функции JJMASeries (файл JJMASeries.mqh следует положить в папку (директорию): MetaTrader\experts\include)
#include  

Recommend