/*
Version November 28, 2007
Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû
PriceSeries.mqh
â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\
MAMA_NK.mq4
Heiken Ashi#.mq4
â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\
*/
//+X================================================================X+
//| MAMAXX_NK.mq4 |
//| MAMA skript: John Ehlers |
//| MQL4 CODE: Copyright © 2007, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+X================================================================X+
#property link "farria@mail.redcom.ru/"
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ
#property indicator_buffers 2
//---- öâåòà èíäèêàòîðà
#property indicator_color1 Blue
#property indicator_color2 Red
//---- òîëùèíà èíäèêàòîðíûõ ëèíèé
#property indicator_width1 1
#property indicator_width2 1
//---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ
extern double FastLimit = 0.2;
extern double SlowLimit = 0.05;
extern int IPC = 4;/* Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà
(0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED,
7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW,
11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open,
14-Heiken Ashi Close, 15-Heiken Ashi Open0.) */
//---- èíäèêàòîðíûå áóôôåðû
double FAMA[];
double MAMA[];
//+X================================================================X+
//| Îáúÿâëåíèå ôóíêöèè PriceSeries |
//| Îáúÿâëåíèå ôóíêöèè PriceSeriesAlert |
//+X================================================================X+
#include <PriceSeries.mqh>
//+X================================================================X+
//| MAMAXX initialization function |
//+X================================================================X+
int init()
//----+
{
//---- Ñòèëü èñïîëíåíèÿ ãðàôèêà
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
//---- 2 èíäèêàòîðíûõ áóôôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà
SetIndexBuffer(0, FAMA);
SetIndexBuffer(1, MAMA);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
//---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí
IndicatorShortName("#MAMAXX");
SetIndexLabel(0, "#FAMAXX");
SetIndexLabel(1, "#MAMAXX");
//---- óñòàíîâêà íîìåðà áàðà,
//íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð
SetIndexDrawBegin(0, 50);
SetIndexDrawBegin(1, 50);
//---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ
PriceSeriesAlert(IPC);
//---- çàâåðøåíèå èíèöèàëèçàöèè
return(0);
}
//----+
//+X================================================================X+
//| MAMAXX iteration function |
//+X================================================================X+
int start()
//----+
{
int BARS=Bars;
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
if(BARS <= 7)
return(0);
//----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîñ÷èòàííûõ áàðîâ
int MaxBar, limit, bar, counted_bars=IndicatorCounted();
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
if (counted_bars<0)
return(-1);
//---- ïîñëåäíèé ïîñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
if (counted_bars>0)
counted_bars--;
//----+ Ââåäåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé
double alpha;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà,
//íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò âñåõ áàðîâ
MaxBar=BARS-1-7;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà,
//íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò òîëüêî íîâûõ áàðîâ
limit = BARS - 1 - counted_bars;
//---- èíèöèàëèçàöèÿ íóëÿ
if(limit>=MaxBar)
{
for(bar = BARS - 1; bar > MaxBar; bar--)
{
MAMA[bar] = 0.0;
FAMA[bar] = 0.0;
limit = MaxBar;
}
}
//----
for (bar=limit;bar>=0;bar--)
{
alpha = FastLimit;
if (alpha < SlowLimit)
alpha = SlowLimit;
//---+
MAMA[bar] = alpha*PriceSeries(IPC, bar)
+ (1.0 - alpha)*MAMA[bar+1];
FAMA[bar] = 0.5*alpha*MAMA[bar]
+ (1.0 - 0.5*alpha)*FAMA[bar+1];
}
return(0);
}
//----+
//+X================================================================X+
Comments