/* Generated by EX4-TO-MQ4 decompiler V4.0.224.1 [] Website: http://purebeam.biz E-mail : purebeam@gmail.com */ #property copyright "Divergence between Price and Indicator Barry_Stander_4@yahoo.com" #property link "http://www.4Africa.net/4meta/" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red #property indicator_level1 50.0 string gs_76 = "Divergence Indicator Version 2.1 01/01/2006 Copyright © 2006 Barry Stander Barry_Stander_4@yahoo.com"; double g_ibuf_84[]; double g_ibuf_88[]; double g_ibuf_92[]; extern int Hi_Low_Mode = 1; extern int Use_RSI = 1; extern int Use_CCI = 0; extern int Use_MACD = 0; extern int Use_Momentum = 0; extern int Use_Stochastic = 0; extern int RSIPeriod = 14; extern int CCIPeriod = 14; extern int MACD_FastEMA = 12; extern int MACD_SlowEMA = 26; extern int MACD_SignalSMA = 9; extern int MomPeriod = 14; extern int KPeriod = 5; extern int DPeriod = 3; extern int Slowing = 3; extern int Show_Message = 1; extern int Ray = 1; extern int LineWidth = 1; double g_ibuf_168[]; double g_ibuf_172[]; double g_ibuf_176[]; double g_ibuf_180[]; double g_ibuf_184[]; double g_ibuf_188[]; double g_ibuf_192[]; double g_ibuf_196[]; double g_ibuf_200[]; double g_ibuf_204[]; double g_ibuf_208[]; int gi_212 = 0; int gi_216 = 0; double g_ifractals_220; double g_ifractals_228; string gs_236; string gs_244; double gda_252[13]; double gda_unused_256[7]; double gda_260[13]; double gda_264[4]; double gda_268[13]; double gda_272[13]; string gs_276 = ""; int gi_284; int gi_288; int gi_292; int gi_296; int gi_300; int gi_304; int gi_308; int gi_312; double gd_316; double gd_324; double gd_332; double gd_340; double gd_348; int init() { Comment(gs_76); if (Use_RSI + Use_CCI + Use_MACD + Use_Momentum + Use_Stochastic > 1) { Alert("You can use only ONE Indicator at a time ! ! ! \n\n Switching back to RSI "); Use_RSI = 1; Use_CCI = 0; Use_MACD = 0; Use_Momentum = 0; Use_Stochastic = 0; } if (Use_RSI + Use_CCI + Use_MACD + Use_Momentum + Use_Stochastic <= 0) { Alert("You must choose ONE Indicator ! ! ! \n\n Switching back to RSI "); Use_RSI = 1; Use_CCI = 0; Use_MACD = 0; Use_Momentum = 0; Use_Stochastic = 0; } if (Use_RSI == 1) { SetIndexStyle(1, DRAW_NONE, STYLE_SOLID, 1); IndicatorBuffers(3); SetIndexBuffer(1, g_ibuf_88); SetIndexBuffer(2, g_ibuf_92); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, g_ibuf_84); gs_276 = "RSI Price Divergence (" + RSIPeriod + ")"; IndicatorShortName(gs_276); SetIndexLabel(0, gs_276); SetIndexDrawBegin(0, RSIPeriod); SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1); } if (Use_CCI == 1) { IndicatorBuffers(4); SetIndexBuffer(1, g_ibuf_172); SetIndexBuffer(2, g_ibuf_176); SetIndexBuffer(3, g_ibuf_180); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, g_ibuf_168); gs_276 = "CCI Price Divergence (" + CCIPeriod + ")"; IndicatorShortName(gs_276); SetIndexLabel(0, gs_276); SetIndexDrawBegin(0, CCIPeriod); SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 0); } if (Use_MACD == 1) { IndicatorBuffers(2); SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1); SetIndexStyle(1, DRAW_LINE, STYLE_DOT, 1); SetIndexDrawBegin(1, MACD_SignalSMA); IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1.0); if (!SetIndexBuffer(0, g_ibuf_184) && !SetIndexBuffer(1, g_ibuf_188)) Print("cannot set indicator buffers!"); gs_276 = "MACD Price Divergence (" + MACD_FastEMA + "," + MACD_SlowEMA + "," + MACD_SignalSMA + ")"; IndicatorShortName(gs_276); SetIndexLabel(0, gs_276); SetIndexLabel(1, gs_276); } if (Use_Momentum == 1) { IndicatorBuffers(1); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, g_ibuf_192); gs_276 = "Mom Price Divergence (" + MomPeriod + ")"; IndicatorShortName(gs_276); SetIndexLabel(0, gs_276); SetIndexDrawBegin(0, MomPeriod); } if (Use_Stochastic == 1) { IndicatorBuffers(4); SetIndexBuffer(2, g_ibuf_204); SetIndexBuffer(3, g_ibuf_208); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, g_ibuf_196); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, g_ibuf_200); gs_276 = "Stochastic Price Divergence (" + KPeriod + "," + DPeriod + "," + Slowing + ")"; IndicatorShortName(gs_276); SetIndexLabel(0, gs_276); SetIndexLabel(1, "Signal"); gi_212 = KPeriod + Slowing; gi_216 = gi_212 + DPeriod; SetIndexDrawBegin(0, gi_212); SetIndexDrawBegin(1, gi_216); } return (0); } int deinit() { ObjectDelete("DivHigh"); ObjectDelete("DivLow"); ObjectDelete("DivHighInd"); ObjectDelete("DivLowInd"); return (0); } int start() { double ld_8; double ld_16; double ld_24; double ld_32; double ld_40; double ld_52; double ld_60; double ld_68; int li_76; int li_80; double ld_88; double ld_96; double ld_104; double ld_112; Comment(gs_76); int li_4 = IndicatorCounted(); if (li_4 < 0) return (-1); if (Use_RSI == 1) { for (int li_0 = Bars; li_0 >= 0; li_0--) { ld_32 = 0.0; ld_40 = 0.0; if (li_0 == Bars - RSIPeriod - 1) { for (int li_48 = Bars - 2; li_48 >= li_0; li_48--) { ld_8 = Close[li_48] - (Close[li_48 + 1]); if (ld_8 > 0.0) ld_40 += ld_8; else ld_32 -= ld_8; } ld_24 = ld_40 / RSIPeriod; ld_16 = ld_32 / RSIPeriod; } else { ld_8 = Close[li_0] - (Close[li_0 + 1]); if (ld_8 > 0.0) ld_40 = ld_8; else ld_32 = -ld_8; ld_24 = ((g_ibuf_88[li_0 + 1]) * (RSIPeriod - 1) + ld_40) / RSIPeriod; ld_16 = ((g_ibuf_92[li_0 + 1]) * (RSIPeriod - 1) + ld_32) / RSIPeriod; } g_ibuf_88[li_0] = ld_24; g_ibuf_92[li_0] = ld_16; if (ld_16 == 0.0) g_ibuf_84[li_0] = 0.0; else g_ibuf_84[li_0] = 100.0 - 100.0 / (ld_24 / ld_16 + 1.0); } } if (Use_CCI == 1) { if (Bars <= CCIPeriod) return (0); if (li_4 < 1) { for (li_0 = 1; li_0 <= CCIPeriod; li_0++) g_ibuf_168[Bars - li_0] = 0.0; for (li_0 = 1; li_0 <= CCIPeriod; li_0++) g_ibuf_176[Bars - li_0] = 0.0; for (li_0 = 1; li_0 <= CCIPeriod; li_0++) g_ibuf_180[Bars - li_0] = 0.0; } li_76 = Bars - li_4; if (li_4 > 0) li_76++; for (li_0 = 0; li_0 < li_76; li_0++) g_ibuf_180[li_0] = iMA(NULL, 0, CCIPeriod, 0, MODE_SMA, PRICE_TYPICAL, li_0); li_0 = Bars - CCIPeriod + 1; if (li_4 > CCIPeriod - 1) li_0 = Bars - li_4 - 1; ld_68 = 0.015 / CCIPeriod; while (li_0 >= 0) { ld_60 = 0.0; for (li_48 = li_0 + CCIPeriod - 1; li_48 >= li_0; li_48--) { ld_52 = (High[li_48] + Low[li_48] + Close[li_48]) / 3.0; ld_60 += MathAbs(ld_52 - g_ibuf_180[li_0]); } g_ibuf_176[li_0] = ld_60 * ld_68; li_0--; } li_0 = Bars - CCIPeriod + 1; if (li_4 > CCIPeriod - 1) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { ld_52 = (High[li_0] + Low[li_0] + Close[li_0]) / 3.0; g_ibuf_172[li_0] = ld_52 - g_ibuf_180[li_0]; li_0--; } li_0 = Bars - CCIPeriod + 1; if (li_4 > CCIPeriod - 1) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { if (g_ibuf_176[li_0] == 0.0) g_ibuf_168[li_0] = 0.0; else g_ibuf_168[li_0] = g_ibuf_172[li_0] / g_ibuf_176[li_0]; li_0--; } } if (Use_MACD == 1) { if (li_4 < 0) return (-1); if (li_4 > 0) li_4--; li_80 = Bars - li_4; for (int li_84 = 0; li_84 < li_80; li_84++) g_ibuf_184[li_84] = iMA(NULL, 0, MACD_FastEMA, 0, MODE_EMA, PRICE_CLOSE, li_84) - iMA(NULL, 0, MACD_SlowEMA, 0, MODE_EMA, PRICE_CLOSE, li_84); for (li_84 = 0; li_84 < li_80; li_84++) g_ibuf_188[li_84] = iMAOnArray(g_ibuf_184, Bars, MACD_SignalSMA, 0, MODE_SMA, li_84); } if (Use_Momentum == 1) { if (Bars <= MomPeriod) return (0); if (li_4 < 1) for (li_0 = 1; li_0 <= MomPeriod; li_0++) g_ibuf_192[Bars - li_0] = 0.0; li_0 = Bars - MomPeriod - 1; if (li_4 >= MomPeriod) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { g_ibuf_192[li_0] = 100.0 * Close[li_0] / (Close[li_0 + MomPeriod]); li_0--; } } if (Use_Stochastic == 1) { if (Bars <= gi_216) return (0); if (li_4 < 1) { for (li_0 = 1; li_0 <= gi_212; li_0++) g_ibuf_196[Bars - li_0] = 0; for (li_0 = 1; li_0 <= gi_216; li_0++) g_ibuf_200[Bars - li_0] = 0; } li_0 = Bars - KPeriod; if (li_4 > KPeriod) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { ld_88 = 1000000; for (li_48 = li_0 + KPeriod - 1; li_48 >= li_0; li_48--) { ld_52 = Low[li_48]; if (ld_88 > ld_52) ld_88 = ld_52; } g_ibuf_208[li_0] = ld_88; li_0--; } li_0 = Bars - KPeriod; if (li_4 > KPeriod) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { ld_96 = -1000000; for (li_48 = li_0 + KPeriod - 1; li_48 >= li_0; li_48--) { ld_52 = High[li_48]; if (ld_96 < ld_52) ld_96 = ld_52; } g_ibuf_204[li_0] = ld_96; li_0--; } li_0 = Bars - gi_212; if (li_4 > gi_212) li_0 = Bars - li_4 - 1; while (li_0 >= 0) { ld_104 = 0.0; ld_112 = 0.0; for (li_48 = li_0 + Slowing - 1; li_48 >= li_0; li_48--) { ld_104 += Close[li_48] - g_ibuf_208[li_48]; ld_112 += g_ibuf_204[li_48] - g_ibuf_208[li_48]; } if (ld_112 == 0.0) g_ibuf_196[li_0] = 100.0; else g_ibuf_196[li_0] = 100.0 * (ld_104 / ld_112); li_0--; } if (li_4 > 0) li_4--; li_76 = Bars - li_4; for (li_0 = 0; li_0 < li_76; li_0++) g_ibuf_200[li_0] = iMAOnArray(g_ibuf_196, Bars, DPeriod, 0, MODE_SMA, li_0); } for (li_0 = 50; li_0 >= 0; li_0--) { ObjectDelete("DivHigh"); ObjectDelete("DivLow"); ObjectDelete("DivHighInd"); ObjectDelete("DivLowInd"); ObjectDelete("Line70"); ObjectDelete("Line30"); ObjectDelete("Line0"); if (Hi_Low_Mode == 1) { g_ifractals_220 = iFractals(NULL, 0, MODE_UPPER, li_0); if (g_ifractals_220 > 0.0) { gda_252[2] = gda_252[1]; gda_252[4] = gda_252[3]; gda_252[1] = High[li_0]; gda_268[6] = gda_268[5]; if (Use_RSI == 1) { gd_316 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0); gd_340 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_CCI == 1) { gd_316 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0); gd_340 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_MACD == 1) { gd_316 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 2); gd_324 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 1); gd_332 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0); gd_340 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 1); gd_348 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 2); } if (Use_Momentum == 1) { gd_316 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0); gd_340 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_Stochastic == 1) { gd_316 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 2); gd_324 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 1); gd_332 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0); gd_340 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 1); gd_348 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 2); } if (gd_332 > gd_324 && gd_332 >= gd_316 && gd_332 >= gd_340 && gd_332 >= gd_348) { gda_252[3] = gd_332; gda_268[5] = li_0; } else { if (gd_316 >= gd_324 && gd_316 >= gd_332 && gd_316 >= gd_340 && gd_316 >= gd_348) { gda_252[3] = gd_316; gda_268[5] = li_0 - 2; } if (gd_324 >= gd_316 && gd_324 >= gd_332 && gd_324 >= gd_340 && gd_324 >= gd_348) { gda_252[3] = gd_324; gda_268[5] = li_0 - 1; } if (gd_340 >= gd_316 && gd_340 >= gd_324 && gd_340 >= gd_332 && gd_340 >= gd_348) { gda_252[3] = gd_340; gda_268[5] = li_0 + 2; } if (gd_348 >= gd_316 && gd_348 >= gd_324 && gd_348 >= gd_332 && gd_348 >= gd_340) { gda_252[3] = gd_348; gda_268[5] = li_0 + 1; } } gda_252[6] = gda_252[5]; gda_252[5] = li_0; } if ((gda_252[1] >= gda_252[2] && gda_252[3] >= gda_252[4]) || (gda_252[1] <= gda_252[2] && gda_252[3] <= gda_252[4])) gs_236 = ""; else { if (gda_252[3] > 40.0 && gda_252[3] < 60.0 && (gda_252[4] > 40.0 && gda_252[4] < 60.0)) gs_236 = "Hidden Divergence on High\'\'s "; else gs_236 = "Divergence on High\'\'s "; } g_ifractals_228 = iFractals(NULL, 0, MODE_LOWER, li_0); if (g_ifractals_228 > 0.0) { gda_260[2] = gda_260[1]; gda_260[4] = gda_260[3]; gda_260[1] = Low[li_0]; gda_272[6] = gda_272[5]; if (Use_RSI == 1) { gd_316 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0); gd_340 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_CCI == 1) { gd_316 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0); gd_340 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_MACD == 1) { gd_316 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 2); gd_324 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 1); gd_332 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0); gd_340 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 1); gd_348 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 2); } if (Use_Momentum == 1) { gd_316 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0); gd_340 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_Stochastic == 1) { gd_316 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 2); gd_324 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 1); gd_332 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0); gd_340 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 1); gd_348 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 2); } if (gd_332 <= gd_324 && gd_332 <= gd_316 && gd_332 <= gd_340 && gd_332 <= gd_348) { gda_260[3] = gd_332; gda_272[5] = li_0; } else { if (gd_316 <= gd_324 && gd_316 <= gd_332 && gd_316 <= gd_340 && gd_316 <= gd_348) { gda_260[3] = gd_316; gda_272[5] = li_0 - 2; } if (gd_324 <= gd_316 && gd_324 <= gd_332 && gd_324 <= gd_340 && gd_324 <= gd_348) { gda_260[3] = gd_324; gda_272[5] = li_0 - 1; } if (gd_340 <= gd_316 && gd_340 <= gd_324 && gd_340 <= gd_332 && gd_340 <= gd_348) { gda_260[3] = gd_340; gda_272[5] = li_0 + 1; } if (gd_348 <= gd_316 && gd_348 <= gd_324 && gd_348 <= gd_332 && gd_348 <= gd_340) { gda_260[3] = gd_348; gda_272[5] = li_0 + 2; } } gda_260[6] = gda_260[5]; gda_260[5] = li_0; } if ((gda_260[1] >= gda_260[2] && gda_260[3] >= gda_260[4]) || (gda_260[1] <= gda_260[2] && gda_260[3] <= gda_260[4])) gs_244 = ""; else { if (gda_260[3] > 40.0 && gda_260[3] < 60.0 && (gda_260[4] > 40.0 && gda_260[4] < 60.0)) gs_244 = "\nHidden Divergence on Low\'\'s "; else gs_244 = "\nDivergence on Low\'\'s"; } } if (Hi_Low_Mode == 2) { if (High[li_0 - 1] <= High[li_0] && High[li_0 - 2] <= High[li_0] && High[li_0 - 3] < High[li_0] && High[li_0 - 4] < High[li_0] && High[li_0 + 1] <= High[li_0] && High[li_0 + 2] <= High[li_0] && High[li_0 + 3] < High[li_0] && High[li_0 + 4] < High[li_0]) { if (gda_252[6] <= gda_252[5]) { gda_252[6] = gda_264[1]; gda_264[1] = gda_252[5]; gda_252[2] = gda_264[2]; gda_264[2] = gda_252[1]; gda_252[4] = gda_264[3]; gda_264[3] = gda_252[3]; } else { gda_252[6] = gda_252[5]; gda_252[2] = gda_252[1]; gda_252[4] = gda_252[3]; gda_264[1] = gda_252[5]; gda_264[2] = gda_252[1]; gda_264[3] = gda_252[3]; } gda_252[1] = High[li_0]; gda_268[6] = gda_268[5]; gda_252[5] = li_0; if (Use_RSI == 1) { gd_316 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0); gd_340 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_CCI == 1) { gd_316 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0); gd_340 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_MACD == 1) { gd_316 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 2); gd_324 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 1); gd_332 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0); gd_340 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 1); gd_348 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 2); } if (Use_Momentum == 1) { gd_316 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0); gd_340 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_Stochastic == 1) { gd_316 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 2); gd_324 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 1); gd_332 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0); gd_340 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 1); gd_348 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 2); } if (gd_332 >= gd_324 && gd_332 >= gd_316 && gd_332 >= gd_340 && gd_332 >= gd_348) { gda_252[3] = gd_332; gda_268[5] = li_0; gda_252[1] = High[li_0]; } else { if (gd_316 > gd_324 && gd_316 > gd_332 && gd_316 > gd_340 && gd_316 > gd_348) { gda_252[3] = gd_316; gda_268[5] = li_0 - 2; } if (gd_324 > gd_316 && gd_324 > gd_332 && gd_324 > gd_340 && gd_324 > gd_348) { gda_252[3] = gd_324; gda_268[5] = li_0 - 1; } if (gd_340 > gd_316 && gd_340 > gd_324 && gd_340 > gd_332 && gd_340 > gd_348) { gda_252[3] = gd_340; gda_268[5] = li_0 + 2; } if (gd_348 > gd_316 && gd_348 > gd_324 && gd_348 > gd_332 && gd_348 > gd_340) { gda_252[3] = gd_348; gda_268[5] = li_0 + 1; } } } if ((gda_252[1] >= gda_252[2] && gda_252[3] >= gda_252[4]) || (gda_252[1] <= gda_252[2] && gda_252[3] <= gda_252[4])) gs_236 = ""; else { if (gda_252[3] > 40.0 && gda_252[3] < 60.0 && (gda_252[4] > 40.0 && gda_252[4] < 60.0)) gs_236 = "Hidden Divergence on High\'\'s "; else gs_236 = "Divergence on High\'\'s "; } if (Low[li_0 - 1] >= Low[li_0] && Low[li_0 - 2] >= Low[li_0] && Low[li_0 - 3] > Low[li_0] && Low[li_0 - 4] > Low[li_0] && Low[li_0 + 1] >= Low[li_0] && Low[li_0 + 2] >= Low[li_0] && Low[li_0 + 3] > Low[li_0] && Low[li_0 + 4] > Low[li_0]) { gda_260[2] = gda_260[1]; gda_260[4] = gda_260[3]; gda_260[1] = Low[li_0]; gda_272[6] = gda_272[5]; if (Use_RSI == 1) { gd_316 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0); gd_340 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_CCI == 1) { gd_316 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0); gd_340 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_MACD == 1) { gd_316 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 2); gd_324 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 - 1); gd_332 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0); gd_340 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 1); gd_348 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, li_0 + 2); } if (Use_Momentum == 1) { gd_316 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 2); gd_324 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 - 1); gd_332 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0); gd_340 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 1); gd_348 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, li_0 + 2); } if (Use_Stochastic == 1) { gd_316 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 2); gd_324 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 - 1); gd_332 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0); gd_340 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 1); gd_348 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, li_0 + 2); } if (gd_332 <= gd_324 && gd_332 <= gd_316 && gd_332 <= gd_340 && gd_332 <= gd_348) { gda_260[3] = gd_332; gda_272[5] = li_0; } else { if (gd_316 <= gd_324 && gd_316 <= gd_332 && gd_316 <= gd_340 && gd_316 <= gd_348) { gda_260[3] = gd_316; gda_272[5] = li_0 - 2; } if (gd_324 <= gd_316 && gd_324 <= gd_332 && gd_324 <= gd_340 && gd_324 <= gd_348) { gda_260[3] = gd_324; gda_272[5] = li_0 - 1; } if (gd_340 <= gd_316 && gd_340 <= gd_324 && gd_340 <= gd_332 && gd_340 <= gd_348) { gda_260[3] = gd_340; gda_272[5] = li_0 + 1; } if (gd_348 <= gd_316 && gd_348 <= gd_324 && gd_348 <= gd_332 && gd_348 <= gd_340) { gda_260[3] = gd_348; gda_272[5] = li_0 + 2; } } gda_260[6] = gda_260[5]; gda_260[5] = li_0; } if ((gda_260[1] >= gda_260[2] && gda_260[3] >= gda_260[4]) || (gda_260[1] <= gda_260[2] && gda_260[3] <= gda_260[4])) gs_244 = ""; else { if (gda_260[3] > 40.0 && gda_260[3] < 60.0 && (gda_260[4] > 40.0 && gda_260[4] < 60.0)) gs_244 = "\nHidden Divergence on Low\'\'s "; else gs_244 = "\nDivergence on Low\'\'s"; } } gi_284 = gda_252[5]; gi_288 = gda_252[6]; gi_292 = gda_260[5]; gi_296 = gda_260[6]; gi_300 = gda_268[5]; gi_304 = gda_268[6]; gi_308 = gda_272[5]; gi_312 = gda_272[6]; ObjectCreate("DivHigh", OBJ_TREND, 0, Time[gi_288], gda_252[2], Time[gi_284], gda_252[1]); ObjectCreate("DivLow", OBJ_TREND, 0, Time[gi_296], gda_260[2], Time[gi_292], gda_260[1]); ObjectCreate("DivHighInd", OBJ_TREND, WindowFind(gs_276), Time[gi_304], gda_252[4], Time[gi_300], gda_252[3]); ObjectCreate("DivLowInd", OBJ_TREND, WindowFind(gs_276), Time[gi_312], gda_260[4], Time[gi_308], gda_260[3]); if (Use_RSI == 1) { ObjectCreate("Line70", OBJ_HLINE, WindowFind(gs_276), Time[gi_288], 70); ObjectCreate("Line30", OBJ_HLINE, WindowFind(gs_276), Time[gi_296], 30); } if (Use_CCI == 1) ObjectCreate("Line0", OBJ_HLINE, WindowFind(gs_276), Time[gi_288], 0); if (Use_MACD == 1) ObjectCreate("Line0", OBJ_HLINE, WindowFind(gs_276), Time[gi_288], 0); if (Use_Momentum == 1) { } if (Use_Stochastic == 1) { } } if (Show_Message == 1) { if (gs_236 > "" || gs_244 > "") { Comment("\n" + gs_236 + gs_244); } } ObjectSet("DivHigh", OBJPROP_COLOR, Red); ObjectSet("DivLow", OBJPROP_COLOR, Blue); ObjectSet("DivHighInd", OBJPROP_COLOR, Red); ObjectSet("DivLowInd", OBJPROP_COLOR, Blue); ObjectSet("Line70", OBJPROP_COLOR, Black); ObjectSet("Line30", OBJPROP_COLOR, Black); ObjectSet("Line0", OBJPROP_COLOR, Black); ObjectSet("DivHigh", OBJPROP_STYLE, STYLE_DASH); ObjectSet("DivLow", OBJPROP_STYLE, STYLE_DASH); ObjectSet("DivHighInd", OBJPROP_STYLE, STYLE_DASH); ObjectSet("DivLowInd", OBJPROP_STYLE, STYLE_DASH); ObjectSet("Line70", OBJPROP_STYLE, STYLE_DOT); ObjectSet("Line30", OBJPROP_STYLE, STYLE_DOT); ObjectSet("Line0", OBJPROP_STYLE, STYLE_DOT); ObjectSet("DivHigh", OBJPROP_RAY, Ray); ObjectSet("DivLow", OBJPROP_RAY, Ray); ObjectSet("DivHighInd", OBJPROP_RAY, Ray); ObjectSet("DivLowInd", OBJPROP_RAY, Ray); ObjectSet("Line70", OBJPROP_RAY, Ray); ObjectSet("Line30", OBJPROP_RAY, Ray); ObjectSet("Line0", OBJPROP_RAY, Ray); ObjectSet("DivHigh", OBJPROP_WIDTH, LineWidth); ObjectSet("DivLow", OBJPROP_WIDTH, LineWidth); ObjectSet("DivHighInd", OBJPROP_WIDTH, LineWidth); ObjectSet("DivLowInd", OBJPROP_WIDTH, LineWidth); ObjectSet("Line70", OBJPROP_WIDTH, LineWidth); ObjectSet("Line30", OBJPROP_WIDTH, LineWidth); ObjectSet("Line0", OBJPROP_WIDTH, LineWidth); ObjectsRedraw(); if (TimeCurrent() > D'01.04.2015 13:01') { Alert("Your version of this Indicator( Divergence ) has expired Please Download new version ! ! ! ", Symbol(), " ", Period()); ObjectDelete("DivHigh"); ObjectDelete("DivLow"); ObjectDelete("DivHighInd"); ObjectDelete("DivLowInd"); ObjectDelete("Line70"); ObjectDelete("Line30"); ObjectDelete("Line0"); } return (0); }