#property copyright "Copyright © 2009, Wylie" #property link "dazzle.html@live.com" #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Aqua #property indicator_color2 Red #property indicator_color3 White #property indicator_color4 Orange #property indicator_color5 Lime #property indicator_color6 Fuchsia extern int TF = 0; extern bool Mode_iMAX = TRUE; extern bool Mode_hp = TRUE; extern bool Mode_hpx = TRUE; extern int BARS = 0; extern bool DSPLYiMAXPhases = TRUE; extern bool DSPLYhpPhases = TRUE; extern bool DSPLYhpxPhases = TRUE; extern color iMAXph1color = Aqua; extern color iMAXph2color = Red; extern color hpPh1color = White; extern color hpPh2color = Orange; extern color hpxPh1color = Lime; extern color hpxPh2color = Fuchsia; double gda_132[]; double gda_136[]; double g_ibuf_140[]; double g_ibuf_144[]; double g_ibuf_148[]; double g_ibuf_152[]; double g_ibuf_156[]; double g_ibuf_160[]; double gd_164; double gd_172; double gd_180; double gd_188; int gi_196; int gi_200; int gi_204; int g_index_208; int gi_216; int gi_220; int g_error_224; string gsa_228[21]; string gs_232; string gs_240; int init() { gsa_228[0] = "AUDCAD"; gsa_228[1] = "AUDNZD"; gsa_228[2] = "AUDJPY"; gsa_228[3] = "AUDUSD"; gsa_228[4] = "CADJPY"; gsa_228[5] = "CHFJPY"; gsa_228[6] = "EURAUD"; gsa_228[7] = "EURCAD"; gsa_228[8] = "EURCHF"; gsa_228[9] = "EURGBP"; gsa_228[10] = "EURJPY"; gsa_228[11] = "EURUSD"; gsa_228[12] = "GBPCHF"; gsa_228[13] = "GBPJPY"; gsa_228[14] = "GBPUSD"; gsa_228[15] = "NZDUSD"; gsa_228[16] = "USDCAD"; gsa_228[17] = "USDCHF"; gsa_228[18] = "USDMXN"; gsa_228[19] = "USDJPY"; gsa_228[20] = "USDTRY"; gi_220 = 20; if (Mode_hp || Mode_hpx && !GoSym()) { Print("iMAX3ea: HP modes not programmed to function with this Symbol."); return (0); } IndicatorBuffers(6); SetIndexBuffer(0, g_ibuf_140); SetIndexBuffer(1, g_ibuf_144); if (Mode_iMAX && DSPLYiMAXPhases) { SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, iMAXph1color); SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, iMAXph2color); } else { SetIndexStyle(0, DRAW_NONE); SetIndexStyle(1, DRAW_NONE); } if (Mode_hp) { SetIndexBuffer(2, g_ibuf_148); SetIndexBuffer(3, g_ibuf_152); if (DSPLYhpPhases) { SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1, hpPh1color); SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 1, hpPh2color); } else { SetIndexStyle(2, DRAW_NONE); SetIndexStyle(3, DRAW_NONE); } } if (Mode_hpx) { SetIndexBuffer(4, g_ibuf_156); SetIndexBuffer(5, g_ibuf_160); if (DSPLYhpxPhases) { SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, hpxPh1color); SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, hpxPh2color); } else { SetIndexStyle(4, DRAW_NONE); SetIndexStyle(5, DRAW_NONE); } } gs_240 = StringSubstr(Symbol(), 3, 3); gs_232 = StringSubstr(Symbol(), 0, 6); gi_216 = 0; if (gs_240 == "MXN") gi_216 = 1; if (gs_240 == "JPY") gi_216 = 2; if (Mode_hp || Mode_hpx) { switch (gi_216) { case 0: switch (Period()) { case PERIOD_M1: gd_164 = 0.0001; break; case PERIOD_M5: gd_164 = 0.00015; break; case PERIOD_M15: gd_164 = 0.0003; break; case PERIOD_M30: gd_164 = 0.0005; break; case PERIOD_H1: gd_164 = 0.00075; break; case PERIOD_H4: gd_164 = 0.0015; break; case PERIOD_D1: gd_164 = 0.003; break; case PERIOD_W1: gd_164 = 0.005; break; case PERIOD_MN1: gd_164 = 0.01; } break; case 1: switch (Period()) { case PERIOD_M1: gd_164 = 0.001; break; case PERIOD_M5: gd_164 = 0.0015; break; case PERIOD_M15: gd_164 = 0.003; break; case PERIOD_M30: gd_164 = 0.005; break; case PERIOD_H1: gd_164 = 0.0075; break; case PERIOD_H4: gd_164 = 0.015; break; case PERIOD_D1: gd_164 = 0.03; break; case PERIOD_W1: gd_164 = 0.05; break; case PERIOD_MN1: gd_164 = 0.1; } break; case 2: switch (Period()) { case PERIOD_M1: gd_164 = 0.01; break; case PERIOD_M5: gd_164 = 0.015; break; case PERIOD_M15: gd_164 = 0.03; break; case PERIOD_M30: gd_164 = 0.05; break; case PERIOD_H1: gd_164 = 0.075; break; case PERIOD_H4: gd_164 = 0.15; break; case PERIOD_D1: gd_164 = 0.3; break; case PERIOD_W1: gd_164 = 0.5; break; case PERIOD_MN1: gd_164 = 1.0; } } } gi_196 = 20; IndicatorShortName("iMAX3ea"); return (0); } int start() { if (Bars <= gi_196) return (0); gi_204 = IndicatorCounted(); if (gi_204 < 0) return (-1); if (gi_204 > 0) gi_204--; if (BARS == 0) gi_200 = Bars - gi_204 - 1; else gi_200 = BARS; gd_172 = 0.5; ArraySetAsSeries(gda_132, FALSE); ArraySetAsSeries(gda_136, FALSE); ArrayCopySeries(gda_132, 2, gs_232, TF); g_error_224 = GetLastError(); if (g_error_224 == 4066/* HISTORY_WILL_UPDATED */) { for (g_index_208 = 0; g_index_208 < 2; g_index_208++) { Sleep(5000); ArrayCopySeries(gda_132, 2, gs_232, TF); } } ArrayCopySeries(gda_136, 1, gs_232, TF); g_error_224 = GetLastError(); if (g_error_224 == 4066/* HISTORY_WILL_UPDATED */) { for (g_index_208 = 0; g_index_208 < 2; g_index_208++) { Sleep(5000); ArrayCopySeries(gda_136, 1, gs_232, TF); } } for (g_index_208 = gi_200; g_index_208 >= 0; g_index_208--) { if (Mode_hpx) { g_ibuf_160[g_index_208] = 0.13785 * (2.0 * ((gda_132[g_index_208] + gda_136[g_index_208]) * gd_172) - (gda_132[g_index_208 + 1] + (gda_136[g_index_208 + 1])) * gd_172) + 0.0007 * (2.0 * ((gda_132[g_index_208 + 1] + (gda_136[g_index_208 + 1])) * gd_172) - (gda_132[g_index_208 + 2] + (gda_136[g_index_208 + 2])) * gd_172) + 0.13785 * (2.0 * ((gda_132[g_index_208 + 2] + (gda_136[g_index_208 + 2])) * gd_172) - (gda_132[g_index_208 + 3] + (gda_136[g_index_208 + 3])) * gd_172) + (1.2103 * (g_ibuf_156[g_index_208 + 1]) - (g_ibuf_156[g_index_208 + 2]) / 2.0); if (Close[g_index_208] > g_ibuf_160[g_index_208]) g_ibuf_156[g_index_208] = g_ibuf_160[g_index_208] + gd_164; if (Close[g_index_208] < g_ibuf_160[g_index_208]) g_ibuf_156[g_index_208] = g_ibuf_160[g_index_208] - gd_164; } if (Mode_iMAX || Mode_hp) { g_ibuf_140[g_index_208] = 0.13785 * (2.0 * ((gda_132[g_index_208] + gda_136[g_index_208]) * gd_172) - (gda_132[g_index_208 + 1] + (gda_136[g_index_208 + 1])) * gd_172) + 0.0007 * (2.0 * ((gda_132[g_index_208 + 1] + (gda_136[g_index_208 + 1])) * gd_172) - (gda_132[g_index_208 + 2] + (gda_136[g_index_208 + 2])) * gd_172) + 0.13785 * (2.0 * ((gda_132[g_index_208 + 2] + (gda_136[g_index_208 + 2])) * gd_172) - (gda_132[g_index_208 + 3] + (gda_136[g_index_208 + 3])) * gd_172) + (1.2103 * (g_ibuf_140[g_index_208 + 1]) - (g_ibuf_140[g_index_208 + 2]) / 2.0); gd_180 = g_ibuf_140[g_index_208]; g_ibuf_144[g_index_208] = g_ibuf_140[g_index_208 + 1]; } if (Mode_hp) { if (Close[g_index_208] > g_ibuf_140[g_index_208]) gd_188 = g_ibuf_140[g_index_208] + gd_164; if (Close[g_index_208] < g_ibuf_140[g_index_208]) gd_188 = g_ibuf_140[g_index_208] - gd_164; g_ibuf_148[g_index_208] = gd_188; g_ibuf_152[g_index_208] = gd_180; } } return (0); } bool GoSym() { bool li_ret_0 = FALSE; for (g_index_208 = 0; g_index_208 <= gi_220; g_index_208++) if (Symbol() == gsa_228[g_index_208]) li_ret_0 = TRUE; return (li_ret_0); }