#property copyright "© 2009.07.16, SwingMan" #property link "" #property indicator_separate_window #property indicator_buffers 7 #property indicator_color1 Gray #property indicator_color2 Green #property indicator_color3 YellowGreen #property indicator_color4 Maroon #property indicator_color5 Tomato #property indicator_color6 DeepSkyBlue #property indicator_color7 Red #property indicator_width1 1 extern int TRIX_Period = 3; extern string _____Averages_____ = "0=SMA, 1=EMA, 2=SMMA, 3=LWMA"; extern int Mode_Average_1 = 1; extern int Mode_Average_2 = 1; extern int Mode_Average_3 = 1; extern string _____Input_Price_____ = "0=C,4=Median,5=Typical,6=Weighted"; extern int Input_Price = 0; extern string p2 = "_____Signals_____"; extern bool Draw_Signals = TRUE; extern bool Alert_Signals = FALSE; extern bool EMail_Signals = FALSE; extern int CountBars = 500; int g_period_136 = 0; double gd_140 = 1000.0; double gda_148[]; double gda_152[]; double gda_156[]; double gda_160[]; double g_ibuf_164[]; double g_ibuf_168[]; double g_ibuf_172[]; double gda_176[]; double g_ibuf_180[]; double g_ibuf_184[]; double gda_188[]; double gda_192[]; double g_ibuf_196[]; double g_ibuf_200[]; bool gi_204 = FALSE; bool gi_208 = FALSE; int g_ma_method_212; int g_ma_method_216; int g_ma_method_220; int g_applied_price_224; int init() { string ls_0; string ls_8; string ls_16; string ls_24; ArraySetAsSeries(gda_148, TRUE); ArraySetAsSeries(gda_152, TRUE); ArraySetAsSeries(gda_156, TRUE); ArraySetAsSeries(gda_160, TRUE); ArraySetAsSeries(gda_192, TRUE); ArraySetAsSeries(gda_176, TRUE); ArraySetAsSeries(gda_188, TRUE); IndicatorDigits(4); SetIndexBuffer(0, g_ibuf_164); SetIndexStyle(0, DRAW_LINE); SetIndexLabel(0, "TRIX"); SetIndexBuffer(1, g_ibuf_168); SetIndexStyle(1, DRAW_HISTOGRAM); SetIndexLabel(1, NULL); SetIndexBuffer(2, g_ibuf_172); SetIndexStyle(2, DRAW_HISTOGRAM); SetIndexLabel(2, NULL); SetIndexBuffer(3, g_ibuf_180); SetIndexStyle(3, DRAW_HISTOGRAM); SetIndexLabel(3, NULL); SetIndexBuffer(4, g_ibuf_184); SetIndexStyle(4, DRAW_HISTOGRAM); SetIndexLabel(4, NULL); SetIndexBuffer(5, g_ibuf_196); SetIndexStyle(5, DRAW_ARROW); SetIndexArrow(5, 233); SetIndexLabel(5, NULL); SetIndexBuffer(6, g_ibuf_200); SetIndexStyle(6, DRAW_ARROW); SetIndexArrow(6, 234); SetIndexLabel(6, NULL); g_ma_method_212 = 2; g_ma_method_216 = 2; g_ma_method_220 = 1; g_applied_price_224 = 0; switch (Mode_Average_1) { case 0: g_ma_method_212 = 0; ls_8 = "S"; break; case 1: g_ma_method_212 = 1; ls_8 = "E"; break; case 2: g_ma_method_212 = 2; ls_8 = "M"; break; case 3: g_ma_method_212 = 3; ls_8 = "W"; } switch (Mode_Average_2) { case 0: g_ma_method_216 = 0; ls_16 = "S"; break; case 1: g_ma_method_216 = 1; ls_16 = "E"; break; case 2: g_ma_method_216 = 2; ls_16 = "M"; break; case 3: g_ma_method_216 = 3; ls_16 = "W"; } switch (Mode_Average_3) { case 0: g_ma_method_220 = 0; ls_24 = "S"; break; case 1: g_ma_method_220 = 1; ls_24 = "E"; break; case 2: g_ma_method_220 = 2; ls_24 = "M"; break; case 3: g_ma_method_220 = 3; ls_24 = "W"; } switch (Input_Price) { case 0: g_applied_price_224 = 0; ls_0 = "C"; break; case 4: g_applied_price_224 = 4; ls_0 = "M"; break; case 5: g_applied_price_224 = 5; ls_0 = "T"; break; case 6: g_applied_price_224 = 6; ls_0 = "W"; } string ls_48 = ", " + ls_8 + "," + ls_16 + "," + ls_24 + ", " + ls_0; IndicatorShortName("SwingMan UltraSuperTRIX_PV_4col (" + TRIX_Period + ls_48 + ")"); return (0); } int start() { double ld_8; double ld_16; int li_24; int li_28; int li_32; string ls_36; string ls_44; if (TRIX_Period == g_period_136) return (0); ArrayResize(gda_148, Bars); ArrayResize(gda_152, Bars); ArrayResize(gda_156, Bars); ArrayResize(gda_160, Bars); ArrayResize(gda_192, Bars); ArrayResize(gda_176, Bars); ArrayResize(gda_188, Bars); int li_4 = CountBars; if (li_4 > Bars) li_4 = Bars - 1; for (int li_0 = 0; li_0 < li_4; li_0++) gda_148[li_0] = iMA(Symbol(), Period(), TRIX_Period, 0, g_ma_method_212, g_applied_price_224, li_0); for (li_0 = 0; li_0 < li_4; li_0++) gda_152[li_0] = iMAOnArray(gda_148, 0, TRIX_Period, 0, g_ma_method_216, li_0); for (li_0 = 0; li_0 < li_4; li_0++) gda_192[li_0] = iMAOnArray(gda_152, 0, TRIX_Period, 0, g_ma_method_220, li_0); for (li_0 = 0; li_0 < li_4 - 1; li_0++) if (gda_192[li_0 + 1] != 0.0) gda_148[li_0] = gd_140 * (gda_192[li_0] - (gda_192[li_0 + 1])) / (gda_192[li_0 + 1]); for (li_0 = 0; li_0 < li_4 - 1; li_0++) gda_152[li_0] = iMAOnArray(gda_148, 0, g_period_136, 0, MODE_EMA, li_0); for (li_0 = li_4 - 1; li_0 >= 0; li_0--) { ld_8 = gda_148[li_0] - gda_152[li_0]; g_ibuf_164[li_0] = ld_8; ld_16 = g_ibuf_164[li_0] - (g_ibuf_164[li_0 + 1]); if (ld_8 >= 0.0) { if (ld_16 >= 0.0) { g_ibuf_168[li_0] = ld_8; g_ibuf_180[li_0] = EMPTY_VALUE; g_ibuf_172[li_0] = EMPTY_VALUE; g_ibuf_184[li_0] = EMPTY_VALUE; } else { g_ibuf_168[li_0] = EMPTY_VALUE; g_ibuf_180[li_0] = EMPTY_VALUE; g_ibuf_172[li_0] = ld_8; g_ibuf_184[li_0] = EMPTY_VALUE; } } else { if (ld_8 < 0.0) { if (ld_16 >= 0.0) { g_ibuf_168[li_0] = EMPTY_VALUE; g_ibuf_180[li_0] = EMPTY_VALUE; g_ibuf_172[li_0] = EMPTY_VALUE; g_ibuf_184[li_0] = ld_8; } else { g_ibuf_168[li_0] = EMPTY_VALUE; g_ibuf_180[li_0] = ld_8; g_ibuf_172[li_0] = EMPTY_VALUE; g_ibuf_184[li_0] = EMPTY_VALUE; } } } if (ld_8 >= 0.0) { gda_176[li_0] = ld_8; gda_188[li_0] = EMPTY_VALUE; } else { gda_176[li_0] = EMPTY_VALUE; gda_188[li_0] = ld_8; } } for (li_0 = li_4 - 1; li_0 >= 0; li_0--) { if (Draw_Signals == TRUE) { li_24 = 0; g_ibuf_196[li_0 + li_24] = EMPTY_VALUE; g_ibuf_200[li_0 + li_24] = EMPTY_VALUE; li_28 = gda_176[li_0 + li_24] > 0.0 && gda_176[li_0 + li_24] != EMPTY_VALUE && gda_188[li_0 + 1 + li_24] < 0.0; li_32 = gda_188[li_0 + li_24] < 0.0 && gda_176[li_0 + 1 + li_24] != EMPTY_VALUE && gda_176[li_0 + 1 + li_24] > 0.0; if (li_28 == 1) { g_ibuf_196[li_0 + li_24] = 0; g_ibuf_200[li_0 + li_24] = EMPTY_VALUE; } if (li_32 == 1) { g_ibuf_196[li_0 + li_24] = EMPTY_VALUE; g_ibuf_200[li_0 + li_24] = 0; } li_24 = 1; g_ibuf_196[li_0 + li_24] = EMPTY_VALUE; g_ibuf_200[li_0 + li_24] = EMPTY_VALUE; li_28 = gda_176[li_0 + li_24] > 0.0 && gda_176[li_0 + li_24] != EMPTY_VALUE && gda_188[li_0 + 1 + li_24] < 0.0; li_32 = gda_188[li_0 + li_24] < 0.0 && gda_176[li_0 + 1 + li_24] != EMPTY_VALUE && gda_176[li_0 + 1 + li_24] > 0.0; if (li_28 == 1) { g_ibuf_196[li_0 + li_24] = 0; g_ibuf_200[li_0 + li_24] = EMPTY_VALUE; } if (li_32 == 1) { g_ibuf_196[li_0 + li_24] = EMPTY_VALUE; g_ibuf_200[li_0 + li_24] = 0; } } ls_44 = Get_sPeriod(Period()); if (Alert_Signals == TRUE || EMail_Signals == TRUE) { if (gda_152[li_0] < gda_148[li_0] && gda_152[li_0 + 1] >= gda_148[li_0 + 1]) gda_156[li_0] = gda_152[li_0] - 0.0001; if (gda_152[li_0] > gda_148[li_0] && gda_152[li_0 + 1] <= gda_148[li_0 + 1]) gda_160[li_0] = gda_152[li_0] + 0.0001; if (gda_156[0] == gda_152[0] - 0.0001 && gi_204 == FALSE) { ls_36 = "Trix BUY: " + Symbol() + "-" + ls_44 + " at " + Close[0] + " " + TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS); if (Alert_Signals == TRUE) Alert(ls_36); if (EMail_Signals == TRUE) SendMail("TRIX alert", ls_36); gi_208 = FALSE; gi_204 = TRUE; } if (gda_160[0] == gda_152[0] + 0.0001 && gi_208 == FALSE) { ls_36 = "Trix SELL: " + Symbol() + "-" + ls_44 + " at " + Close[0] + " " + TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS); if (Alert_Signals == TRUE) Alert(ls_36); if (EMail_Signals == TRUE) SendMail("TRIX alert", ls_36); gi_208 = TRUE; gi_204 = FALSE; } } } return (0); } string Get_sPeriod(int ai_0) { if (ai_0 == 1) return ("M1"); if (ai_0 == 5) return ("M5"); if (ai_0 == 15) return ("M15"); if (ai_0 == 30) return ("M30"); if (ai_0 == 60) return ("H1"); if (ai_0 == 240) return ("H4"); if (ai_0 == 1440) return ("D1"); if (ai_0 == 10080) return ("W1"); if (ai_0 == 43200) return ("MN1"); return (""); }