// +——————————————————————————————————————————————————————————————————————————————————————————————+ // ¦ Ultimate MACD UltimateMACD.mq4 ¦ // ¦ Èíäèêàòîð MACD ñ áîëåå øèðîêèì ôóíêöèîíàëîì, ÷åì âåðñèÿ, çàëîæåííàÿ â MT4. ¦ // ¦ Êîíå÷íî æå, ÿ âëîæèë òîëüêî òå âîçìîæíîñòè, êîòîðûå ñ÷åë îáúåêòèâíî ïîëåçíûìè, è ñîçäàâàë ¦ // ¦ ýòó ðåàëèçàöèþ ïðåèìóùåñòâåííî äëÿ ëè÷íîãî èñïîëüçîâàíèÿ. Ïîýòîìó, íàçâàíèå íè â êîåì ñëó÷àå ¦ // ¦ íå ïðåòåíäóåò íà îáúåêòèâíîñòü :) ¦ // ¦ Íà äàííûé ìîìåíò, â ïëàíàõ äàëüíåéøåå ðàçâèòèå èíäèêàòîðà, íî ýòî íå ïåðâîî÷åðåäíàÿ çàäà÷à. ¦ // ¦ Îãðîìíàÿ ïðîñüáà ðàñïðîñòðàíÿòü èíäèêàòîð òîëüêî â èñõîäíèêå (.mq4), è íå èçìåíÿòü òåêñò ¦ // ¦ ýòîãî çàãîëîâêà. ¦ // ¦----------------------------------------------------------------------------------------------¦ // ¦ [release 1] 05.09.2009 ¦ // ¦ (•)Ïåðâûé ðåëèç. Ïðåäëîæåíèÿ ïî óëó÷øåíèÿì ïðèâåòñòâóþòñÿ ¦ // ¦ (+)Âûáîð èíñòðóìåíòà è ÒÔ ðàñ÷åòíûõ äàííûõ ¦ // ¦ (!)Ïî-óìîë÷àíèþ, ñèãíàëüíàÿ ëèíèÿ ðàñ÷èòûâàåòñÿ ïî ìåòîäó EMA (êàê â êëàññè÷åñêîì âàðèàíòå) ¦ // ¦ (+)Âîçìîæíîñòü èñïîëüçîâàòü â êà÷åñòâå äàííûõ ïîêàçàíèÿ èíäèêàòîðîâ ("íàëîæåíèå" MACD) ¦ // ¦ (+)Âîçìîæíîñòü ïðèìåíåíèÿ àëãîðèòìà ZeroLag MA, äëÿ áîëåå ÷åòêîãî îòîáðàæåíèÿ C/D ñ öåíîé ¦ // ¦ (+)Îòîáðàæåíèå ëèíèè èíäèêàòîðà êàê â ëèíåéíîé êëàññè÷åñêîé ôîðìå, òàê è ãèñòîãðàììîé ¦ // ¦ (+)Âûáîð ìåòîäà óñðåäíåíèÿ è èñïîëüçóåìîé öåíû, îòäåëüíî _________________________________¦ // ¦ äëÿ êàæäîãî MA | © xp3rienced, Ekaterinburg 2009 ¦ // +——————————————————————————————————————————————————————————————————————————————————————————————+ #property copyright "© xp3rienced" #property link "no4ta[at]inbox.ru" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 CadetBlue #property indicator_color2 Red #property indicator_width1 2 #property indicator_width2 1 //#property indicator_style2 STYLE_DOT //====[ ïàðàìåòðû èíäèêàòîðà ]==== extern int FastMA_Period = 12; // Ïåðèîä "áûñòðîé" ÌÀ extern int SlowMA_Period = 26; // Ïåðèîä "ìåäëåííîé" ÌÀ extern int SignalMA_Period = 9; // Ïåðèîä ñèãíàëüíîé ëèíèè èíäèêàòîðà extern int FastMA_Method = 1; // Ìåòîä óñðåäíåíèÿ "áûñòðîé" ÌÀ (äîïóñòèìûå çíà÷åíèÿ ìåòîäîâ: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA) extern int SlowMA_Method = 1; // Ìåòîä óñðåäíåíèÿ "ìåäëåííîé" ÌÀ extern int SignalMA_Method = 1; // Ìåòîä óñðåäíåíèÿ ñèãíàëüíîé ëèíèè èíäèêàòîðà extern int FastMA_Price = 0; // Èñïîëüçóåìàÿ öåíà "áûñòðîé" ÌÀ extern int SlowMA_Price = 0; // Èñïîëüçóåìàÿ öåíà "ìåäëåííîé" ÌÀ extern bool Linear = false; // true - ëèíåéíîå ïðåäñòàâëåíèå èíäèêàòîðà; false - ãèñòîãðàììà extern bool ZeroLag_Algorithm = false; // Èñïîëüçîâàíèå àëãîðèòìà ZeroLag MA extern string __Symbol = ""; // Èìÿ èíñòðóìåíòà. Ïóñòàÿ ñòðîêà - èñïîëüçîâàíèå òåêóùåãî èíñòðóìåíòà extern int TimeFrame = 0; // Òàéìôðåéì. Çíà÷åíèå - âðåìÿ â ìèíóòàõ, 0 äëÿ ÒÔ òåêóùåãî ãðàôèêà /* Äëÿ èñïîëüçîâàíèÿ ïîêàçàíèé êàêîãî-ëèáî èíäèêàòîðà âìåñòî öåíû, íàñòðîéòå ýòè ïàðàìåòðû. / / Èíäèêàòîð-"èñòî÷íèê" íå äîëæåí ñîäåðæàòü ïàðàìåòðû ñòðîêîâîãî òèïà, è îáùåå êîëè÷åñòâî / / åãî ïàðàìåòðîâ íå äîëæíî áûòü áîëüøå ñåìè. */ extern string CI_Name = ""; // Èìÿ èíäèêàòîðà, ïîêàçàíèÿ êîòîðîãî áóäóò èñïîëüçîâàòüñÿ êàê âõîäíûå äàííûå. Ïóñòàÿ ñòðîêà - èñïîëüçîâàíèå öåíû extern int CI_LineNum = 0; // Èíäåêñ ëèíèè èíäèêàòîðà extern int CI_ParamCount = 0; // Êîëè÷åñòâî ïàðàìåòðîâ, ïåðåäàâàåìûõ èíäèêàòîðó extern double CI_Param1 = 0; // -. extern double CI_Param2 = 0; // | extern double CI_Param3 = 0; // | extern double CI_Param4 = 0; // > ïåðåäàâàåìûå èíäèêàòîðó ïàðàìåòðû, â ïîðÿäêå èõ îïèñàíèÿ extern double CI_Param5 = 0; // | extern double CI_Param6 = 0; // | extern double CI_Param7 = 0; // -' //====[ áóôåðû èíäèêàòîðà ]==== double MACD[]; double SignalLine[]; double FastMA[]; double SlowMA[]; double CI_Buffer[]; double ZL_SignalLine[]; //====[ ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà ]==== string symbol; double ZL_EMA,ZL_EMA_P,ZL_EMA_Q; // Ïåðåìåííûå, èñïîëüçóþùèåñÿ â ðàñ÷åòàõ ïî àëãîðèòìó ZeroLag //+------------------------------------------------------------------+ //| Ôóíêöèÿ èíèöèàëèçàöèè èíäèêàòîðà | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(6); IndicatorDigits(Digits+1); //---- íàçíà÷åíèå èíäåêñîâ áóôåðàì SetIndexBuffer(0,MACD); SetIndexBuffer(1,SignalLine); SetIndexBuffer(2,FastMA); SetIndexBuffer(3,SlowMA); SetIndexBuffer(4,CI_Buffer); SetIndexBuffer(5,ZL_SignalLine); //---- óñòàíîâêè îòðèñîâêè if(Linear) SetIndexStyle(0,DRAW_LINE); else SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetIndexDrawBegin(1,SignalMA_Period); //---- èìÿ äëÿ Îêíà Äàííûõ, è íàäïèñè ïîäîêíà èíäèêàòîðà string ShortName=StringConcatenate("Ultimate MACD(",FastMA_Period,",",SlowMA_Period,",",SignalMA_Period); if(ZeroLag_Algorithm) ShortName=StringConcatenate(ShortName,",ZeroLag)"); else ShortName=StringConcatenate(ShortName,")"); if(CI_Name != "") ShortName = StringConcatenate(ShortName, " on ", CI_Name); if(__Symbol != "") symbol = __Symbol; else symbol = Symbol(); ShortName=StringConcatenate(ShortName," [",symbol,",",TimeFrameStr(TimeFrame),"]"); IndicatorShortName(ShortName); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); //---- èíèöèàëèçàöèÿ çàâåðøåíà return(0); } //+------------------------------------------------------------------+ //| Ôóíêöèÿ äåèíèöèàëèçàöèè èíäèêàòîðà | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Ôóíêöèÿ èòåðàöèè èíäèêàòîðà | //+------------------------------------------------------------------+ int start() { int limit=Bars-IndicatorCounted(); if(limit