/* Generated by EX4-TO-MQ4 decompiler V4.0.427.4 [-] Website: https://purebeam.biz E-mail : purebeam@gmail.com */ #property copyright "Copyright © 2012, Dean Malone" #property link "http://www.synergyprotrader.com" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 LimeGreen #property indicator_color2 LightSlateGray #property indicator_color3 LightSlateGray #import "CompassFX.dll" string gGrab(string a0, string a1); #import "synergy_pro.dll" string returnReg(string a0, string a1); #import int g_file_76; bool gi_80 = FALSE; string gs_unused_84; double gd_unused_92 = 1.1; extern string Custom_Indicator = "Synergy Pro Volatility"; extern string Copyright = "© 2012,Dean Malone"; extern string Web_Address = "www.synergyprotrader.com"; extern string Bar = "=== Smooth setting ==="; extern double Smooth = 3.0; extern string Level_settings = "=== Level settings ==="; extern double MyLevel = 0.0; extern color MyLevel_Color = Crimson; int gi_160 = 7; int g_ma_method_164 = MODE_SMA; int g_applied_price_168 = PRICE_CLOSE; double g_ibuf_176[]; double g_ibuf_180[]; double g_ibuf_184[]; double g_ibuf_188[]; double gd_192; string gs_200; double gda_208[][10]; int init() { HideTestIndicators(TRUE); switch (Period()) { case PERIOD_MN1: gd_192 = 0.005; break; case PERIOD_W1: gd_192 = 0.005; break; case PERIOD_D1: gd_192 = 0.005; break; case PERIOD_H4: gd_192 = 0.0014; break; case PERIOD_H1: gd_192 = 0.0008; break; case PERIOD_M30: gd_192 = 0.0006; break; case PERIOD_M15: gd_192 = 0.0004; break; case PERIOD_M5: gd_192 = 0.0002; break; case PERIOD_M1: gd_192 = 0.0001; } if (Digits < 4) gd_192 = 100.0 * gd_192; if (MyLevel != 0.0) gd_192 = MyLevel; IndicatorBuffers(4); SetIndexBuffer(0, g_ibuf_176); SetIndexBuffer(1, g_ibuf_180); SetIndexBuffer(2, g_ibuf_184); SetIndexBuffer(3, g_ibuf_188); SetIndexLabel(0, "Volatility"); SetIndexLabel(1, NULL); SetIndexLabel(2, NULL); SetLevelValue(0, gd_192); SetLevelStyle(0, 0, MyLevel_Color); gs_200 = WindowExpertName(); gi_160 = MathMax(gi_160, 1); IndicatorShortName("Synergy_Pro_Volatility"); //f0_3(); return (0); } int deinit() { return (0); } int start() { int shift_12; int datetime_16; double ld_24; if (gi_80) return (0); int li_0 = IndicatorCounted(); if (li_0 < 0) return (-1); if (li_0 > 0) li_0--; int li_8 = MathMin(Bars - li_0, Bars - 1); for (int li_4 = li_8; li_4 >= 0; li_4--) g_ibuf_176[li_4] = f0_1(iStdDev(NULL, 0, gi_160, 0, g_ma_method_164, g_applied_price_168, li_4), Smooth, 0, li_4); if (g_ibuf_188[li_8] == -1.0) f0_2(li_8, g_ibuf_180, g_ibuf_184); for (li_4 = li_8; li_4 >= 0; li_4--) { shift_12 = iBarShift(NULL, 0, Time[li_4]); g_ibuf_188[li_4] = g_ibuf_188[li_4 + 1]; if (g_ibuf_176[li_4] > g_ibuf_176[li_4 + 1]) g_ibuf_188[li_4] = 1; if (g_ibuf_176[li_4] < g_ibuf_176[li_4 + 1]) g_ibuf_188[li_4] = -1; datetime_16 = iTime(NULL, 0, shift_12); for (int li_20 = 1; li_4 + li_20 < Bars && Time[li_4 + li_20] >= datetime_16; li_20++) { } ld_24 = 1.0 / li_20; for (int li_32 = 1; li_32 < li_20; li_32++) g_ibuf_176[li_4 + li_32] = li_32 * ld_24 * (g_ibuf_176[li_4 + li_20]) + (1.0 - li_32 * ld_24) * g_ibuf_176[li_4]; } for (li_4 = li_8; li_4 >= 0; li_4--) { g_ibuf_180[li_4] = EMPTY_VALUE; g_ibuf_184[li_4] = EMPTY_VALUE; if (g_ibuf_188[li_4] == -1.0) f0_5(li_4, g_ibuf_180, g_ibuf_184, g_ibuf_176); } return (0); } void f0_2(int ai_0, double &ada_4[], double &ada_8[]) { if (ada_8[ai_0] != EMPTY_VALUE && ada_8[ai_0 + 1] != EMPTY_VALUE) { ada_8[ai_0 + 1] = EMPTY_VALUE; return; } if (ada_4[ai_0] != EMPTY_VALUE && ada_4[ai_0 + 1] != EMPTY_VALUE && ada_4[ai_0 + 2] == EMPTY_VALUE) ada_4[ai_0 + 1] = EMPTY_VALUE; } void f0_5(int ai_0, double &ada_4[], double &ada_8[], double ada_12[]) { if (ada_4[ai_0 + 1] == EMPTY_VALUE) { if (ada_4[ai_0 + 2] == EMPTY_VALUE) { ada_4[ai_0] = ada_12[ai_0]; ada_4[ai_0 + 1] = ada_12[ai_0 + 1]; ada_8[ai_0] = EMPTY_VALUE; return; } ada_8[ai_0] = ada_12[ai_0]; ada_8[ai_0 + 1] = ada_12[ai_0 + 1]; ada_4[ai_0] = EMPTY_VALUE; return; } ada_4[ai_0] = ada_12[ai_0]; ada_8[ai_0] = EMPTY_VALUE; } double f0_1(double ad_0, double ad_8, double ad_16, int ai_24, int ai_28 = 0) { double ld_80; double ld_88; if (ad_8 <= 1.0) return (ad_0); if (ArrayRange(gda_208, 0) != Bars) ArrayResize(gda_208, Bars); int li_32 = Bars - ai_24 - 1; if (li_32 == 0) { for (int count_36 = 0; count_36 < 7; count_36++) gda_208[0][count_36 + ai_28] = ad_0; while (count_36 < 10) { gda_208[0][count_36 + ai_28] = 0; count_36++; } return (ad_0); } double ld_40 = MathMax(MathLog(MathSqrt((ad_8 - 1.0) / 2.0)) / MathLog(2.0) + 2.0, 0); double ld_48 = MathMax(ld_40 - 2.0, 0.5); double ld_56 = ad_0 - (gda_208[li_32 - 1][ai_28 + 5]); double ld_64 = ad_0 - (gda_208[li_32 - 1][ai_28 + 6]); gda_208[li_32][ai_28 + 7] = 0; if (MathAbs(ld_56) > MathAbs(ld_64)) gda_208[li_32][ai_28 + 7] = MathAbs(ld_56); if (MathAbs(ld_56) < MathAbs(ld_64)) gda_208[li_32][ai_28 + 7] = MathAbs(ld_64); gda_208[li_32][ai_28 + 8] = gda_208[li_32 - 1][ai_28 + 8] + (gda_208[li_32][ai_28 + 7] - (gda_208[li_32 - 10][ai_28 + 7])) / 10.0; double ld_72 = MathMin(MathMax(4.0 * ad_8, 30), 150); if (li_32 < ld_72) { ld_80 = gda_208[li_32][ai_28 + 8]; for (count_36 = 1; count_36 < ld_72 && li_32 - count_36 >= 0; count_36++) ld_80 += gda_208[li_32 - count_36][ai_28 + 8]; ld_80 /= count_36; } else ld_80 = ((gda_208[li_32 - 1][ai_28 + 9]) * ld_72 - (gda_208[li_32 - f0_4(ld_72)][ai_28 + 8]) + (gda_208[li_32][ai_28 + 8])) / ld_72; gda_208[li_32][ai_28 + 9] = ld_80; if (gda_208[li_32][ai_28 + 9] > 0.0) ld_88 = (gda_208[li_32][ai_28 + 7]) / (gda_208[li_32][ai_28 + 9]); else ld_88 = 0; if (ld_88 > MathPow(ld_40, 1.0 / ld_48)) ld_88 = MathPow(ld_40, 1.0 / ld_48); if (ld_88 < 1.0) ld_88 = 1.0; double ld_96 = MathPow(ld_88, ld_48); double ld_104 = MathSqrt((ad_8 - 1.0) / 2.0) * ld_40; double ld_112 = MathPow(ld_104 / (ld_104 + 1.0), MathSqrt(ld_96)); if (ld_56 > 0.0) gda_208[li_32][ai_28 + 5] = ad_0; else gda_208[li_32][ai_28 + 5] = ad_0 - ld_112 * ld_56; if (ld_64 < 0.0) gda_208[li_32][ai_28 + 6] = ad_0; else gda_208[li_32][ai_28 + 6] = ad_0 - ld_112 * ld_64; double ld_120 = MathMax(MathMin(ad_16, 100), -100) / 100.0 + 1.5; double ld_128 = (ad_8 - 1.0) / 2.0 / ((ad_8 - 1.0) / 2.0 + 2.0); double ld_136 = MathPow(ld_128, ld_96); gda_208[li_32][ai_28 + 0] = ad_0 + ld_136 * (gda_208[li_32 - 1][ai_28 + 0] - ad_0); gda_208[li_32][ai_28 + 1] = (ad_0 - (gda_208[li_32][ai_28 + 0])) * (1 - ld_128) + ld_128 * (gda_208[li_32 - 1][ai_28 + 1]); gda_208[li_32][ai_28 + 2] = gda_208[li_32][ai_28 + 0] + ld_120 * (gda_208[li_32][ai_28 + 1]); gda_208[li_32][ai_28 + 3] = (gda_208[li_32][ai_28 + 2] - (gda_208[li_32 - 1][ai_28 + 4])) * MathPow(1 - ld_136, 2) + MathPow(ld_136, 2) * (gda_208[li_32 - 1][ai_28 + 3]); gda_208[li_32][ai_28 + 4] = gda_208[li_32 - 1][ai_28 + 4] + (gda_208[li_32][ai_28 + 3]); return (gda_208[li_32][ai_28 + 4]); } int f0_4(double ad_0) { return (ad_0); }