#property copyright "Copyright © 2006, Keris2112" #property link "http://www.forex-tsd.com" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Fuchsia #property indicator_color2 DeepSkyBlue #property indicator_color3 FireBrick #property indicator_color4 Navy extern bool ShowIndicator1 = TRUE; extern bool ShowIndicator2 = FALSE; extern string Note1 = "---Choose a timeframe---"; extern string Note2 = "0 = Default"; extern string Note3 = "1 = 1 Min // 2 = 5 Min"; extern string Note4 = "3 = 15 Min // 4 = 30 Min"; extern string Note5 = "5 = 1 Hour // 6 = 4 Hour"; extern string Note6 = "7 = Daily // 8 = Weekly"; extern string Note7 = "9 = Monthly P-SAR"; extern int TimeFrame1 = -1; extern int TimeFrame2 = 0; extern double Variable1 = 8.0; extern double Variable2 = 10.0; extern double Variable3 = 20.0; extern int Variable4 = 4; int g_timeframe_176 = 0; int g_timeframe_180 = 0; double g_ibuf_184[]; double g_ibuf_188[]; double g_ibuf_192[]; double g_ibuf_196[]; int AuthorizedDate() { bool li_ret_0; string ls_4 = "2009.12.31"; int l_str2time_12 = StrToTime(ls_4); if (TimeCurrent() <= l_str2time_12) li_ret_0 = TRUE; else li_ret_0 = FALSE; return (li_ret_0); } int AuthorizedAccount(int ai_0) { bool li_ret_4 = FALSE; if (ai_0 == 6025474 || ai_0 == 6048211 || ai_0 == 6048211 || ai_0 == 5569156 || ai_0 == 2088182226 || ai_0 == 2088203736 || ai_0 == 6046489 || ai_0 == 2368036 || ai_0 == 5661503 || ai_0 == 11201 || ai_0 == 1139824 || ai_0 == 6054916 || ai_0 == 5672146 || ai_0 == 6054298 || ai_0 == 6056548 || ai_0 == 2413999 || ai_0 == 1612010 || ai_0 == 1612012 || ai_0 == 1612015 || ai_0 == 1613288 || ai_0 == 1613289 || ai_0 == 1613290 || ai_0 == 1613292 || ai_0 == 1613293 || ai_0 == 1614331 || ai_0 == 5635503 || ai_0 == 2088200531) li_ret_4 = TRUE; else li_ret_4 = FALSE; return (li_ret_4); } int AuthorizedKey(int ai_0) { bool li_ret_4 = FALSE; int li_8 = 1 * StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 0, 2)); int li_12 = 3 * StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 2, 2)); int li_16 = 5 * StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 4, 2)); int li_20 = StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 6, 2)) * 2; int li_24 = StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 8, 2)) << 2; int li_28 = 6 * StrToInteger(StringSubstr(DoubleToStr(ai_0, 0), 10, 2)); int li_32 = li_8 + li_12 + li_16 + li_20 + li_24 + li_28; if (li_32 == 57 || li_32 == 61 || li_32 == 67 || li_32 == 76 || li_32 == 200 || li_32 == 204 || li_32 == 206 || li_32 == 211 || li_32 == 213 || li_32 == 225 || li_32 == 254 || li_32 == 311 || li_32 == 349 || li_32 == 354 || li_32 == 378 || li_32 == 383 || li_32 == 417 || li_32 == 456 || li_32 == 495 || li_32 == 514 || li_32 == 518 || li_32 == 522 || li_32 == 546 || li_32 == 576 || li_32 == 602 || li_32 == 689) li_ret_4 = TRUE; else li_ret_4 = FALSE; return (li_ret_4); } int init() { string ls_16; Variable1 /= 100.0; Variable2 /= 100.0; Variable3 /= 100.0; SetIndexBuffer(0, g_ibuf_184); SetIndexBuffer(1, g_ibuf_188); SetIndexBuffer(2, g_ibuf_192); SetIndexBuffer(3, g_ibuf_196); SetIndexStyle(0, DRAW_ARROW); SetIndexStyle(1, DRAW_ARROW); SetIndexStyle(2, DRAW_ARROW); SetIndexStyle(3, DRAW_ARROW); SetIndexArrow(0, 159); SetIndexArrow(1, 159); SetIndexArrow(2, 159); SetIndexArrow(3, 159); switch (TimeFrame2) { case 0: g_timeframe_180 = 0; break; case 1: g_timeframe_180 = 1; break; case 2: g_timeframe_180 = 5; break; case 3: g_timeframe_180 = 15; break; case 4: g_timeframe_180 = 30; break; case 5: g_timeframe_180 = 60; break; case 6: g_timeframe_180 = 240; break; case 7: g_timeframe_180 = 1440; break; case 8: g_timeframe_180 = 10080; break; case 9: g_timeframe_180 = 43200; break; default: g_timeframe_180 = 0; } if (TimeFrame1 == -1) { switch (Period()) { case PERIOD_M1: g_timeframe_176 = 5; break; case PERIOD_M5: g_timeframe_176 = 1; break; case PERIOD_M15: g_timeframe_176 = 30; break; case PERIOD_M30: g_timeframe_176 = 60; break; case PERIOD_H1: g_timeframe_176 = 240; break; case PERIOD_H4: g_timeframe_176 = 1440; break; case PERIOD_D1: g_timeframe_176 = 10080; break; case PERIOD_W1: g_timeframe_176 = 43200; break; default: g_timeframe_176 = 0; } } else { switch (TimeFrame1) { case 0: g_timeframe_176 = 0; break; case 1: g_timeframe_176 = 1; break; case 2: g_timeframe_176 = 5; break; case 3: g_timeframe_176 = 15; break; case 4: g_timeframe_176 = 30; break; case 5: g_timeframe_176 = 60; break; case 6: g_timeframe_176 = 240; break; case 7: g_timeframe_176 = 1440; break; case 8: g_timeframe_176 = 10080; break; case 9: g_timeframe_176 = 43200; break; default: g_timeframe_176 = 0; } } switch (g_timeframe_176) { case PERIOD_M1: ls_16 = "Period_M1"; break; case PERIOD_M5: ls_16 = "Period_M5"; break; case PERIOD_M15: ls_16 = "Period_M15"; break; case PERIOD_M30: ls_16 = "Period_M30"; break; case PERIOD_H1: ls_16 = "Period_H1"; break; case PERIOD_H4: ls_16 = "Period_H4"; break; case PERIOD_D1: ls_16 = "Period_D1"; break; case PERIOD_W1: ls_16 = "Period_W1"; break; case PERIOD_MN1: ls_16 = "Period_MN1"; break; default: ls_16 = "Current Timeframe"; } IndicatorShortName("mew_in_trends-sar-mtf (" + ls_16 + ")"); return (0); } int start() { if (AuthorizedDate() && AuthorizedAccount(AccountNumber()) && AuthorizedKey(AccountNumber())) { if (g_timeframe_176 == 0 || Period() <= g_timeframe_176) { if (ShowIndicator1) calcSAR1(); if (ShowIndicator2) calcSAR2(); ObjectsRedraw(); return (0); } Alert("Indicator timeframe must be equal to or greater than chart timeframe!"); return (-1); } Alert("Use of this indicator is not authorized on this account!"); return (-1); } void calcSAR1() { int lia_0[]; double ld_20; int li_12 = 0; int l_ind_counted_16 = IndicatorCounted(); ArrayCopySeries(lia_0, 5, Symbol(), g_timeframe_176); int li_8 = Bars - l_ind_counted_16; int li_4 = 0; li_12 = 0; while (li_4 < li_8) { if (Time[li_4] < lia_0[li_12]) li_12++; ld_20 = NormalizeDouble(iSAR(Symbol(), g_timeframe_176, Variable1, Variable3, li_12), Variable4); if (ld_20 >= iHigh(Symbol(), 0, li_4)) { g_ibuf_192[li_4] = ld_20; g_ibuf_196[li_4] = EMPTY_VALUE; } if (ld_20 <= iLow(Symbol(), 0, li_4)) { g_ibuf_196[li_4] = ld_20; g_ibuf_192[li_4] = EMPTY_VALUE; } li_4++; } } void calcSAR2() { int lia_0[]; double ld_20; int li_12 = 0; int l_ind_counted_16 = IndicatorCounted(); ArrayCopySeries(lia_0, 5, Symbol(), g_timeframe_180); int li_8 = Bars - l_ind_counted_16; int li_4 = 0; li_12 = 0; while (li_4 < li_8) { if (Time[li_4] < lia_0[li_12]) li_12++; ld_20 = NormalizeDouble(iSAR(Symbol(), g_timeframe_180, Variable2, Variable3, li_12), Variable4); if (ld_20 >= iHigh(Symbol(), 0, li_4)) { g_ibuf_184[li_4] = ld_20; g_ibuf_188[li_4] = EMPTY_VALUE; } if (ld_20 <= iLow(Symbol(), 0, li_4)) { g_ibuf_188[li_4] = ld_20; g_ibuf_184[li_4] = EMPTY_VALUE; } li_4++; } }