#property copyright "Copyright © 2006, Eli hayun" #property link "http://www.elihayun.com" #property indicator_separate_window #property indicator_minimum 0.0 #property indicator_maximum 5.0 #property indicator_buffers 8 #property indicator_color1 DodgerBlue #property indicator_color2 Crimson #property indicator_color3 DodgerBlue #property indicator_color4 Crimson #property indicator_color5 DodgerBlue #property indicator_color6 Crimson #property indicator_color7 DodgerBlue #property indicator_color8 Crimson extern double stepPSAR1 = 0.06; extern double stepPSAR2 = 0.06; extern double stepPSAR3 = 0.06; extern double stepPSAR4 = 0.06; extern double maxPSAR = 0.2; extern int BarWidth = 0; extern color UpBarColor = DodgerBlue; extern color DownBarColor = Crimson; extern color TextColor = White; extern int MaxBars = 500; extern bool AlertWhenTFColorMatch = TRUE; extern string AlertCustomMessageUp = "All TF going UP"; extern string AlertCustomMessageDown = "All TF going DOWN"; double gd_156 = 1.0; double g_ibuf_164[]; 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_isar_196; bool gi_204; bool gi_208; bool gi_212; bool gi_216; string gs_220 = ""; bool gi_228 = TRUE; int gi_232 = 110; int gi_236 = 110; int gi_240 = 228; bool gi_244 = TRUE; int g_time_248 = 0; int init() { gi_228 = TRUE; SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, BarWidth, UpBarColor); SetIndexArrow(0, gi_232); SetIndexBuffer(0, g_ibuf_164); SetIndexEmptyValue(0, 0.0); SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, BarWidth, DownBarColor); SetIndexArrow(1, gi_236); SetIndexBuffer(1, g_ibuf_168); SetIndexEmptyValue(1, 0.0); SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, BarWidth, UpBarColor); SetIndexArrow(2, gi_232); SetIndexBuffer(2, g_ibuf_172); SetIndexEmptyValue(2, 0.0); SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, BarWidth, DownBarColor); SetIndexArrow(3, gi_236); SetIndexBuffer(3, g_ibuf_176); SetIndexEmptyValue(3, 0.0); SetIndexStyle(4, DRAW_ARROW, STYLE_SOLID, BarWidth, UpBarColor); SetIndexArrow(4, gi_232); SetIndexBuffer(4, g_ibuf_180); SetIndexEmptyValue(4, 0.0); SetIndexStyle(5, DRAW_ARROW, STYLE_SOLID, BarWidth, DownBarColor); SetIndexArrow(5, gi_236); SetIndexBuffer(5, g_ibuf_184); SetIndexEmptyValue(5, 0.0); SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, BarWidth, UpBarColor); SetIndexArrow(6, gi_232); SetIndexBuffer(6, g_ibuf_188); SetIndexEmptyValue(6, 0.0); SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, BarWidth, DownBarColor); SetIndexArrow(7, gi_236); SetIndexBuffer(7, g_ibuf_192); SetIndexEmptyValue(7, 0.0); SetIndexLabel(0, NULL); SetIndexLabel(1, NULL); SetIndexLabel(2, NULL); SetIndexLabel(3, NULL); SetIndexLabel(4, NULL); SetIndexLabel(5, NULL); SetIndexLabel(6, NULL); SetIndexLabel(7, NULL); IndicatorDigits(0); for (int li_0 = MaxBars - 1; li_0 >= 0; li_0--) { g_ibuf_188[li_0] = 0; g_ibuf_192[li_0] = 0; g_ibuf_180[li_0] = 0; g_ibuf_184[li_0] = 0; g_ibuf_172[li_0] = 0; g_ibuf_176[li_0] = 0; g_ibuf_164[li_0] = 0; g_ibuf_168[li_0] = 0; } return (0); } int deinit() { return (0); } int start() { int li_24; int li_28; int l_timeframe_40; int l_timeframe_44; int l_timeframe_48; int l_timeframe_52; int lia_60[]; int lia_64[]; int lia_68[]; int lia_72[]; int li_76; double ld_80; double ld_92; string l_text_100; double l_price_108; string l_name_120; int l_timeframe_132; double ld_136; double ld_144; int l_ind_counted_0 = IndicatorCounted(); int l_index_4 = 0; int l_index_8 = 0; int l_index_12 = 0; int l_index_16 = 0; int l_index_20 = 0; if (gi_228) li_28 = MaxBars; else li_28 = MaxBars; switch (Period()) { case PERIOD_M1: l_timeframe_40 = 1; l_timeframe_44 = 5; l_timeframe_48 = 15; l_timeframe_52 = 30; break; case PERIOD_M5: l_timeframe_40 = 5; l_timeframe_44 = 15; l_timeframe_48 = 30; l_timeframe_52 = 60; break; case PERIOD_M15: l_timeframe_40 = 15; l_timeframe_44 = 30; l_timeframe_48 = 60; l_timeframe_52 = 240; break; case PERIOD_M30: l_timeframe_40 = 30; l_timeframe_44 = 60; l_timeframe_48 = 240; l_timeframe_52 = 1440; break; case PERIOD_H1: l_timeframe_40 = 60; l_timeframe_44 = 240; l_timeframe_48 = 1440; l_timeframe_52 = 10080; break; case PERIOD_H4: l_timeframe_40 = 240; l_timeframe_44 = 1440; l_timeframe_48 = 10080; l_timeframe_52 = 43200; break; case PERIOD_D1: l_timeframe_40 = 1440; l_timeframe_44 = 10080; l_timeframe_48 = 43200; l_timeframe_52 = 43200; break; case PERIOD_W1: l_timeframe_40 = 10080; l_timeframe_44 = 43200; l_timeframe_48 = 43200; l_timeframe_52 = 43200; break; case PERIOD_MN1: l_timeframe_40 = 43200; l_timeframe_44 = 43200; l_timeframe_48 = 43200; l_timeframe_52 = 43200; } gs_220 = "#TheSecret TF PSAR (" + l_timeframe_40 + "," + l_timeframe_44 + "," + l_timeframe_48 + "," + l_timeframe_52 + ")"; IndicatorShortName(gs_220); gi_244 = NewBar(); if (gi_228 || gi_244) { li_76 = gi_240; ld_80 = Time[0] - Time[1]; for (int li_88 = ObjectsTotal() - 1; li_88 > -1; li_88--) { if (StringFind(ObjectName(li_88), "FF_" + li_76 + "_") >= 0) ObjectDelete(ObjectName(li_88)); else li_88 = -1; } ld_92 = 0.2; for (li_88 = 0; li_88 < 4; li_88++) { l_text_100 = "??"; switch (li_88) { case 0: l_text_100 = tf2txt(l_timeframe_40); l_price_108 = ld_92 + 1.0; break; case 1: l_text_100 = tf2txt(l_timeframe_44); l_price_108 = gd_156 + 1.0 + ld_92; break; case 2: l_text_100 = tf2txt(l_timeframe_48); l_price_108 = 2.0 * gd_156 + 1.0 + ld_92; break; case 3: l_text_100 = tf2txt(l_timeframe_52); l_price_108 = 3.0 * gd_156 + 1.0 + ld_92; } l_name_120 = "FF_" + li_76 + "_" + li_88 + "_" + l_text_100; ObjectCreate(l_name_120, OBJ_TEXT, WindowFind(gs_220), iTime(NULL, 0, 0) + 3.0 * ld_80, l_price_108); ObjectSetText(l_name_120, l_text_100, 8, "Arial", TextColor); } if (gi_228) { ArrayCopySeries(lia_60, 5, Symbol(), l_timeframe_52); ArrayCopySeries(lia_64, 5, Symbol(), l_timeframe_48); ArrayCopySeries(lia_68, 5, Symbol(), l_timeframe_44); ArrayCopySeries(lia_72, 5, Symbol(), l_timeframe_40); } } if (gi_228) { l_index_4 = 0; l_index_8 = 0; l_index_12 = 0; l_index_16 = 0; l_index_20 = 0; while (l_index_4 < li_28) { if (Time[l_index_4] < lia_60[l_index_12]) l_index_12++; if (Time[l_index_4] < lia_64[l_index_16]) l_index_16++; if (Time[l_index_4] < lia_68[l_index_20]) l_index_20++; if (Time[l_index_4] < lia_72[l_index_8]) l_index_8++; for (int l_count_128 = 0; l_count_128 < 4; l_count_128++) { ld_136 = 0; ld_144 = 0; switch (l_count_128) { case 0: l_timeframe_132 = l_timeframe_40; li_24 = l_index_8; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR1, maxPSAR, li_24); break; case 1: l_timeframe_132 = l_timeframe_44; li_24 = l_index_20; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR2, maxPSAR, li_24); break; case 2: l_timeframe_132 = l_timeframe_48; li_24 = l_index_16; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR3, maxPSAR, li_24); break; case 3: l_timeframe_132 = l_timeframe_52; li_24 = l_index_12; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR4, maxPSAR, li_24); } if (g_isar_196 < iClose(NULL, l_timeframe_132, li_24)) ld_136 = 1; else ld_144 = 1; switch (l_count_128) { case 0: g_ibuf_188[l_index_4] = ld_136; g_ibuf_192[l_index_4] = ld_144; break; case 1: g_ibuf_180[l_index_4] = ld_136 * (gd_156 + 1.0); g_ibuf_184[l_index_4] = ld_144 * (gd_156 + 1.0); break; case 2: g_ibuf_172[l_index_4] = ld_136 * (2.0 * gd_156 + 1.0); g_ibuf_176[l_index_4] = ld_144 * (2.0 * gd_156 + 1.0); break; case 3: g_ibuf_164[l_index_4] = ld_136 * (3.0 * gd_156 + 1.0); g_ibuf_168[l_index_4] = ld_144 * (3.0 * gd_156 + 1.0); } } l_index_4++; } } l_index_4 = 0; l_index_8 = 0; l_index_12 = 0; l_index_16 = 0; l_index_20 = 0; while (l_index_4 < 1) { for (l_count_128 = 0; l_count_128 < 4; l_count_128++) { ld_136 = 0; ld_144 = 0; switch (l_count_128) { case 0: l_timeframe_132 = l_timeframe_40; li_24 = l_index_8; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR1, maxPSAR, li_24); break; case 1: l_timeframe_132 = l_timeframe_44; li_24 = l_index_20; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR2, maxPSAR, li_24); break; case 2: l_timeframe_132 = l_timeframe_48; li_24 = l_index_16; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR3, maxPSAR, li_24); break; case 3: l_timeframe_132 = l_timeframe_52; li_24 = l_index_12; g_isar_196 = iSAR(NULL, l_timeframe_132, stepPSAR4, maxPSAR, li_24); } if (g_isar_196 < iClose(NULL, l_timeframe_132, li_24)) ld_136 = 1; else ld_144 = 1; switch (l_count_128) { case 0: g_ibuf_188[l_index_4] = ld_136; g_ibuf_192[l_index_4] = ld_144; break; case 1: g_ibuf_180[l_index_4] = ld_136 * (gd_156 + 1.0); g_ibuf_184[l_index_4] = ld_144 * (gd_156 + 1.0); break; case 2: g_ibuf_172[l_index_4] = ld_136 * (2.0 * gd_156 + 1.0); g_ibuf_176[l_index_4] = ld_144 * (2.0 * gd_156 + 1.0); break; case 3: g_ibuf_164[l_index_4] = ld_136 * (3.0 * gd_156 + 1.0); g_ibuf_168[l_index_4] = ld_144 * (3.0 * gd_156 + 1.0); } } l_index_4++; } if (AlertWhenTFColorMatch && gi_244 && !gi_228) { if (g_ibuf_164[0] == 0.0 && g_ibuf_168[0] == 4.0 && g_ibuf_172[0] == 0.0 && g_ibuf_176[0] == 3.0 && g_ibuf_180[0] == 0.0 && g_ibuf_184[0] == 2.0 && g_ibuf_188[0] == 0.0 && g_ibuf_192[0] == 1.0) gi_208 = TRUE; else gi_208 = FALSE; if (g_ibuf_164[0] == 4.0 && g_ibuf_168[0] == 0.0 && g_ibuf_172[0] == 3.0 && g_ibuf_176[0] == 0.0 && g_ibuf_180[0] == 2.0 && g_ibuf_184[0] == 0.0 && g_ibuf_188[0] == 1.0 && g_ibuf_192[0] == 0.0) gi_204 = TRUE; else gi_204 = FALSE; if (g_ibuf_164[1] == 0.0 && g_ibuf_168[1] == 4.0 && g_ibuf_172[1] == 0.0 && g_ibuf_176[1] == 3.0 && g_ibuf_180[1] == 0.0 && g_ibuf_184[1] == 2.0 && g_ibuf_188[1] == 0.0 && g_ibuf_192[1] == 1.0) gi_216 = TRUE; else gi_216 = FALSE; if (g_ibuf_164[1] == 4.0 && g_ibuf_168[1] == 0.0 && g_ibuf_172[1] == 3.0 && g_ibuf_176[1] == 0.0 && g_ibuf_180[1] == 2.0 && g_ibuf_184[1] == 0.0 && g_ibuf_188[1] == 1.0 && g_ibuf_192[1] == 0.0) gi_212 = TRUE; else gi_212 = FALSE; if (gi_204 && !gi_212) Alert("4TFPSAR on " + Symbol() + " " + tf2txt(Period()) + " : " + AlertCustomMessageUp); if (gi_208 && !gi_216) Alert("4TFPSAR on " + Symbol() + " " + tf2txt(Period()) + " : " + AlertCustomMessageDown); } gi_228 = FALSE; return (0); } string tf2txt(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"); if (ai_0 == 120) return ("H2"); return ("??"); } int NewBar() { if (Time[0] != g_time_248) { g_time_248 = Time[0]; return (1); } return (0); }