#property copyright "Quantum Globe Inc." #property link "http://www.forexderivative.com/" #import "ForexDerivative.dll" int Func1(string a0, string a1); void Func2(double& a0[], int a1, string a2); int Func3(int a0); #import int gia_76[]; string gsa_unused_80 = "1.0.0"; string gsa_unused_84[]; bool gi_88; int gi_92 = 0; int g_timeframe_96 = PERIOD_M1; int gi_100 = 2; double gd_104 = 0.5; double gd_112 = 2.0; double gd_120 = 1.3; double gd_128 = 1.3; double gd_136 = 20.0; double gd_144 = 4.0; double gd_152 = 2.0; double gd_160 = 1.0; int gi_168 = 1; int gi_172 = 1; int gi_176 = 0; int gi_180 = 0; int gi_184 = 1; int gi_188 = 10; int gi_192 = 30; int gi_196 = 10; int gi_200 = 10; int gi_204 = 100; int gi_208 = 100; int gi_212; int g_timeframe_216 = PERIOD_M5; int gi_220 = 1; int gi_224 = 10; double gda_228[]; double gd_232 = 0.8; int gi_240 = 60; int gi_244 = 70; int gi_248 = 500; int gi_252; double gd_256 = 1.0; double gd_264 = 0.3; double gd_272 = 0.75; int gi_280 = 2; int gi_284 = 1; double gd_288 = 2.0; int gi_296 = 10; int gi_300 = 1; int gi_304 = 4; int gi_308 = 2; int gi_312; int g_timeframe_316; int g_period_320; int g_ma_method_324 = MODE_EMA; int gi_328; double gd_332; int g_period_340 = 15; int gi_344 = 4; int g_timeframe_348; double gd_352 = 0.0; double gd_360 = 0.0; int gi_unused_368 = 40; int gi_unused_372 = 1; int gi_376 = 20; int gi_380 = 0; int gi_384 = 0; double gd_388 = 10.0; double gd_396 = 15.0; int gi_404 = 10; int gi_408 = 10; double gd_412 = 1.0; double gd_420 = 1.0; int gi_428 = 8; int gi_432 = 8; int gi_unused_436 = 15; int gi_unused_440 = 40; double gd_444 = 4.0; double gd_452 = 2.0; double gd_460 = 5000.0; int gi_468 = 1; int gi_472 = 1; int gi_476 = 1; int gi_480 = 2; double gd_484 = 15.0; double g_period_492; double gd_500 = 10.0; double g_period_508; int gi_516 = 1; int g_timeframe_520; int gi_524 = -10; double g_period_528 = 100.0; double gd_536 = 12.0; double gd_544 = 10.0; int gi_552 = 1; int g_timeframe_556; int g_ma_method_560 = MODE_EMA; int g_period_564 = 14; int gi_568 = 4; int g_timeframe_572; double gd_576 = 0.0; double gd_584 = 0.0; int g_timeframe_592 = PERIOD_M5; int g_timeframe_596 = PERIOD_M15; double gd_600 = 0.5; double gd_608 = 0.25; double gd_616 = 0.25; double gd_624 = 2.0; double gd_632 = 2.0; int gi_640 = 0; int gi_644 = 1; int gi_648 = 20; int gi_652 = 2; int gi_656 = 1; double gd_660 = 0.1; int gi_668 = 0; double gd_672 = 125.0; double gd_680; double gd_688 = 2.0; double g_timeframe_696; double gd_704 = 0.8; int gi_712 = 0; double gd_716 = 0.5; int gi_724 = 1; double gd_728 = 3.0; double gd_736 = 0.3; int gi_744 = 0; int gi_748 = 12; double gd_752; double gd_760 = 0.9; double gd_768 = 0.382; int gi_776 = 2; int gi_780 = 55; double gd_784 = 30.0; double gd_792 = 24.0; double gd_unused_800 = 0.0; double gd_unused_808 = 24.0; int gi_unused_816 = 0; int gi_820 = 1; int gi_824 = 50; int gi_828 = 0; int gi_832 = 0; extern string KEY = "84012079"; string gs_7117870_844 = "7117870"; extern bool MoneyManagement = TRUE; double gd_856 = 1.0; double gd_864 = 1.0; double gd_872 = 1.0; double gd_unused_880 = 0.1; double gd_888 = 87878.0; double gd_896 = 37841.0; double gd_904 = 6748155.0; double gd_912 = 100.0; double gd_920 = 2000.0; double gd_928 = 10000.0; double gd_936 = 50000.0; extern double FixLotSize = 1.0; double gd_952 = 5.0; double gd_960 = 2.0; double gd_968 = 1232.0; double gd_976 = 78.0; double gd_984 = 192.0; double gd_992 = 4786.0; extern bool Hedging = FALSE; extern bool DisplayOnChart = TRUE; extern bool EmailNotification = FALSE; int gia_unused_1012[][4]; int gia_unused_1016[][4]; int gia_unused_1020[][4]; int gia_1024[3]; double gda_1028[3]; string gsa_1032[3]; bool gi_1036 = FALSE; extern string INFO = "FOREX DERIVATIVE 2.0 v1"; bool gi_1048 = FALSE; double gd_1052 = 6.0; double gd_1060 = 6.0; double gd_1068 = 7.0; double gd_1076 = 7.0; bool gi_1084; bool gi_1088; string gsa_1092[6]; bool gi_1096; double gd_1100; double gd_1108; bool gi_1116; bool gba_1120[]; double gda_1124[]; double gda_1128[]; bool gba_1132[]; double gda_1136[]; bool gba_1140[]; bool gi_1144; double gd_1148; bool gi_1156; double gd_1160; double gd_1168; bool gi_1176; double gd_1180; bool gi_1188; double gd_1192; bool gi_1200; bool gi_1204; double gd_1208; int gi_1216; double gd_1220; bool gi_1228; bool gi_1232; int gi_1236; double gd_unused_1240; int gi_unused_1248; bool gi_1252; double gd_1256; int gi_1264; double gd_unused_1268; double g_ima_on_arr_1276; double g_ima_on_arr_1284; int gi_1292 = 5000; double g_ima_on_arr_1296; int gia_1304[4]; int gi_1308; int gi_1312; double gda_1316[]; double gda_1320[]; int gia_1324[4]; int gia_1328[4]; int g_datetime_1332 = 0; int g_datetime_1336 = 0; int g_datetime_1340 = 0; int g_datetime_1344 = 0; int g_year_1348 = 0; int g_datetime_1352 = 0; bool gi_1356; int gi_unused_1360; bool gi_1364; double gd_1368; bool gi_1376; double gd_1380; double gd_unused_1388; double gda_1396[]; int gi_1400; int gi_1404; int gi_unused_1408 = 200; bool gi_1412; int gi_1416; int gi_1420; int g_count_1424; int g_count_1428; double gd_1432; double gd_1440; int gi_1448; double gd_1452; int g_count_1460; double gd_1464; int gi_unused_1472 = 10; bool gba_1476[]; double gda_1480[]; double gda_1484[]; double gda_1488[]; double gda_1492[]; double gda_1496[]; double gda_1500[]; int gia_1504[]; int gia_1508[]; int gi_1512; bool gba_1516[]; int gia_1520[]; int gia_1524[]; int gia_1528[]; int gia_1532[]; double gda_1536[]; double gda_1540[]; double gda_1544[][3][3]; int gia_1548[]; double gd_1552; double gd_1560; double gd_1568; double gd_1576; double gd_1584; double gd_1592; double gd_1600; double gd_1608; double gd_1616; double gd_1624; double gd_1632; double gd_1640; bool gi_1648; bool gi_1652; bool gi_1656; bool gi_1660; int g_count_1664; int g_count_1668; int g_count_1672; int g_count_1676; int gi_1680; int g_count_1684; int g_count_1688; int g_count_1692; int g_count_1696; double gd_1700; double gd_1708; double gd_1716; double gd_1724; double gd_1732; double gd_1740; double gd_1748; bool gi_1756; int gi_unused_1760; double gd_1764; double gd_1772; double gd_1780; double gd_1788; int g_file_1796; int gi_unused_1800; int gi_unused_1804; int g_file_1808; double g_minlot_1812; bool gi_1820; bool gi_1824; int gi_unused_1828; int g_error_1832; string gs_1836; double gd_unused_1844; int g_count_1852; int gi_1856 = D'18.05.2009 21:30'; bool gi_1860; bool gi_1864; int gi_1868; bool gi_1872 = TRUE; int gia_1876[4]; double gda_1880[]; double gda_1884[]; double gda_1888[]; double gda_1892[]; double gda_1896[]; double gda_1900[]; double gda_1904[]; double gda_1908[]; int gia_1912[4]; int gia_1916[4]; int gi_1920 = 500; int gi_unused_1924 = 1800; double gd_unused_1928 = 0.0; double gd_unused_1936 = 0.0; int gia_1944[]; bool gba_unused_1948[]; double gd_1952; double gd_unused_1960; int gi_1968; int g_count_1972; double gda_unused_1976[][4]; string gs_unused_1980 = "V1_0_0"; int gi_1988 = 10; double gd_1992 = 4.0; double gd_2000 = 25.0; string gs_unused_2008 = "OrderReliable fname unset"; int gi_unused_2016 = 0/* NO_ERROR */; void FindLevels(int ai_0) { int li_4; int li_8; int li_12; int li_16; double ld_20; int li_28; double ld_32; double ld_40; double ld_48; double ld_56; string ls_unused_64; double lda_72[]; double lda_76[]; int li_80; int lia_84[4]; int lia_88[4]; int li_92; double ld_96; int li_104 = 0; int li_108 = 0; if (ai_0 == 395790116) { li_4 = gi_428; li_8 = gi_380; li_12 = gd_388; li_16 = gi_404; ld_20 = gd_412; for (int l_index_112 = 0; l_index_112 < 4; l_index_112++) lia_88[l_index_112] = gia_1324[l_index_112]; } else { if (ai_0 == 395790115) { li_4 = gi_432; li_8 = gi_384; li_12 = gd_396; li_16 = gi_408; ld_20 = gd_420; for (l_index_112 = 0; l_index_112 < 4; l_index_112++) lia_88[l_index_112] = gia_1328[l_index_112]; } } lia_84[0] = 4200; lia_84[1] = 21000; lia_84[2] = 259200; lia_84[3] = 5184000; gia_1876[0] = 1000; gia_1876[1] = 1000; gia_1876[2] = 1000; gia_1876[3] = 1000; li_104 = 0; ArrayResize(lda_76, 1); ArrayInitialize(lda_76, 0); for (l_index_112 = li_8; l_index_112 < 4; l_index_112++) { li_80 = gia_1876[l_index_112]; if (TimeCurrent() - lia_88[l_index_112] >= lia_84[l_index_112]) { for (int li_116 = li_16; li_116 >= 2.5; li_116 = li_116 - 2.5) { ld_40 = li_116 / 10000.0 * ld_20; ld_48 = NormalizeDouble(iLow(NULL, gia_1304[l_index_112], iLowest(NULL, gia_1304[l_index_112], MODE_LOW, li_80, 0)), 4); ld_56 = NormalizeDouble(iHigh(NULL, gia_1304[l_index_112], iHighest(NULL, gia_1304[l_index_112], MODE_HIGH, li_80, 0)), 4); ArrayResize(gia_1944, (ld_56 - ld_48) / 0.0001 + 1.0); ArrayInitialize(gia_1944, 0); ArrayResize(lda_72, 1); ArrayInitialize(lda_72, 0); li_108 = 0; for (double ld_120 = ld_48; ld_120 <= ld_56; ld_120 += 0.0001) { li_92 = (ld_120 - ld_48) / 0.0001; for (int li_128 = 1; li_128 < li_80; li_128++) if (ld_120 > NormalizeDouble(iLow(NULL, gia_1304[l_index_112], li_128), 4) && ld_120 < NormalizeDouble(iHigh(NULL, gia_1304[l_index_112], li_128), 4)) gia_1944[li_92]++; } ld_96 = ld_40 / 0.0001; for (ld_120 = ld_48 + ld_40; ld_120 <= ld_56 - ld_40; ld_120 += 0.0001) { li_92 = (ld_120 - ld_48) / 0.0001; if (gia_1944[li_92] == gia_1944[ArrayMinimum(gia_1944, 2.0 * ld_96, li_92 - ld_40 / 0.0001)] && gia_1944[li_92 - 1] != gia_1944[ArrayMinimum(gia_1944, 2.0 * ld_96, li_92 - ld_40 / 0.0001)] && gia_1944[ArrayMaximum(gia_1944, 2.0 * ld_96, li_92 - ld_40 / 0.0001)] - gia_1944[ArrayMinimum(gia_1944, 2.0 * ld_96, li_92 - ld_40 / 0.0001)] > li_116) { ArrayResize(lda_72, li_108 + 1); lda_72[li_108] = ld_48 + li_92 / 10000.0; gd_1952 = ld_48 + li_92 / 10000.0; gd_unused_1960 = lda_72[li_108]; li_108++; } } if (li_108 >= li_4) break; } if (ld_48 != NormalizeDouble(iLow(NULL, gia_1304[l_index_112], 0), 4)) { ArrayResize(lda_72, li_108 + 1); lda_72[li_108] = ld_48; li_108++; } if (ld_56 != NormalizeDouble(iHigh(NULL, gia_1304[l_index_112], 0), 4)) { ArrayResize(lda_72, li_108 + 1); lda_72[li_108] = ld_56; li_108++; } if (ai_0 == 395790116) { switch (gia_1304[l_index_112]) { case 1: ArrayResize(gda_1880, li_108); ArrayCopy(gda_1880, lda_72, 0, 0, WHOLE_ARRAY); break; case 5: ArrayResize(gda_1884, li_108); ArrayCopy(gda_1884, lda_72, 0, 0, WHOLE_ARRAY); break; case 60: ArrayResize(gda_1888, li_108); ArrayCopy(gda_1888, lda_72, 0, 0, WHOLE_ARRAY); break; case 1440: ArrayResize(gda_1892, li_108); ArrayCopy(gda_1892, lda_72, 0, 0, WHOLE_ARRAY); } gia_1324[l_index_112] = TimeCurrent(); gia_1916[l_index_112] = li_108; } else { if (ai_0 == 395790115) { switch (gia_1304[l_index_112]) { case 1: ArrayResize(gda_1896, li_108); ArrayCopy(gda_1896, lda_72, 0, 0, WHOLE_ARRAY); break; case 5: ArrayResize(gda_1900, li_108); ArrayCopy(gda_1900, lda_72, 0, 0, WHOLE_ARRAY); break; case 60: ArrayResize(gda_1904, li_108); ArrayCopy(gda_1904, lda_72, 0, 0, WHOLE_ARRAY); break; case 1440: ArrayResize(gda_1908, li_108); ArrayCopy(gda_1908, lda_72, 0, 0, WHOLE_ARRAY); } gia_1328[l_index_112] = TimeCurrent(); gia_1912[l_index_112] = li_108; } } } } li_104 = 0; if (ai_0 == 395790116) { if (li_8 <= 0) { ArrayResize(lda_76, li_104 + gia_1916[0]); ArrayCopy(lda_76, gda_1880, li_104, 0, WHOLE_ARRAY); li_104 += gia_1916[0]; } if (li_8 <= 1) { ArrayResize(lda_76, li_104 + gia_1916[1]); ArrayCopy(lda_76, gda_1884, li_104, 0, WHOLE_ARRAY); li_104 += gia_1916[1]; } if (li_8 <= 2) { ArrayResize(lda_76, li_104 + gia_1916[2]); ArrayCopy(lda_76, gda_1888, li_104, 0, WHOLE_ARRAY); li_104 += gia_1916[2]; } if (li_8 <= 3) { ArrayResize(lda_76, li_104 + gia_1916[3]); ArrayCopy(lda_76, gda_1892, li_104, 0, WHOLE_ARRAY); li_104 += gia_1916[3]; } } else { if (ai_0 == 395790115) { if (li_8 <= 0) { ArrayResize(lda_76, li_104 + gia_1912[0]); ArrayCopy(lda_76, gda_1896, li_104, 0, WHOLE_ARRAY); li_104 += gia_1912[0]; } if (li_8 <= 1) { ArrayResize(lda_76, li_104 + gia_1912[1]); ArrayCopy(lda_76, gda_1900, li_104, 0, WHOLE_ARRAY); li_104 += gia_1912[1]; } if (li_8 <= 2) { ArrayResize(lda_76, li_104 + gia_1912[2]); ArrayCopy(lda_76, gda_1904, li_104, 0, WHOLE_ARRAY); li_104 += gia_1912[2]; } if (li_8 <= 3) { ArrayResize(lda_76, li_104 + gia_1912[3]); ArrayCopy(lda_76, gda_1908, li_104, 0, WHOLE_ARRAY); li_104 += gia_1912[3]; } } } double ld_140 = NormalizeDouble(iClose(NULL, 0, 0), 4); double ld_148 = MathRound(ld_140 / 0.0001 / 1000.0); ArrayResize(lda_76, li_104 + 3); lda_76[li_104] = 1000.0 * ld_148 / 10000.0 + gi_1920 / 10000.0; lda_76[li_104 + 1] = 1000.0 * ld_148 / 10000.0; lda_76[li_104 + 2] = 1000.0 * ld_148 / 10000.0 - gi_1920 / 10000.0; li_104 += 3; ArraySort(lda_76); if (li_104 > 0) { ArrayResize(lda_72, li_104); ArrayInitialize(lda_72, 0); } int li_156 = 0; for (int l_index_160 = 0; l_index_160 < li_104; l_index_160++) { ld_32 = lda_76[l_index_160]; li_28 = 1; while (l_index_160 < li_104 && MathAbs(lda_76[l_index_160] - (lda_76[l_index_160 + 1])) < gi_376 * li_12 / 10000.0) { ld_32 += lda_76[l_index_160 + 1]; li_28++; l_index_160++; } if (li_28 != 0) lda_72[li_156] = ld_32 / li_28; li_156 += 1; } li_104 = li_156; ArrayResize(lda_72, li_104); ArrayResize(lda_76, li_104); ArrayInitialize(lda_76, 0); ArrayCopy(lda_76, lda_72, 0, 0, WHOLE_ARRAY); if (ai_0 == 395790116) { gi_1308 = li_104; ArrayResize(gda_1316, gi_1308); ArrayInitialize(gda_1316, 0); ArrayCopy(gda_1316, lda_76, 0, 0, WHOLE_ARRAY); return; } if (ai_0 == 395790115) { gi_1312 = li_104; ArrayResize(gda_1320, gi_1312); ArrayInitialize(gda_1320, 0); ArrayCopy(gda_1320, lda_76, 0, 0, WHOLE_ARRAY); } } void FindTP_SR(int ai_0, int ai_4) { double ld_8; double ld_16; double ld_24; double ld_32; bool li_40; bool li_44; int li_48; double ld_52; double ld_60; bool li_68; bool li_72; double ld_76; if (ai_4 == 395790116) ld_76 = gd_444; else if (ai_4 == 395790115) ld_76 = gd_452; if (ai_4 == 395790116) { ld_8 = NormalizeDouble(iClose(NULL, 0, 0), 4); if (ai_0 == 1) ld_16 = ld_8 + gd_460 / 10000.0; else ld_16 = ld_8 - gd_460 / 10000.0; if (ld_16 > gda_1316[gi_1308 - 1]) { li_44 = TRUE; ld_32 = gda_1316[gi_1308 - 1]; } else { if (ld_16 < gda_1316[0]) { li_40 = TRUE; ld_24 = gda_1316[0]; } else { for (int li_84 = 0; li_84 < gi_1308; li_84 += 1) { if (ld_16 > gda_1316[li_84] && ld_16 <= gda_1316[li_84 + 1]) { li_48 = li_84; break; } } ld_24 = gda_1316[li_48 + 1]; ld_32 = gda_1316[li_48]; li_40 = TRUE; li_44 = TRUE; } } } else { if (ai_4 == 395790115) { ld_8 = NormalizeDouble(iClose(NULL, 0, 0), 4); if (ld_8 > gda_1320[gi_1312 - 1]) { li_44 = TRUE; ld_32 = gda_1320[gi_1312 - 1]; } else { if (ld_8 < gda_1320[0]) { li_40 = TRUE; ld_24 = gda_1320[0]; } else { for (li_84 = 0; li_84 < gi_1312; li_84 += 1) { if (ld_8 > gda_1320[li_84] && ld_8 <= gda_1320[li_84 + 1]) { li_48 = li_84; break; } } ld_24 = gda_1320[li_48 + 1]; ld_32 = gda_1320[li_48]; li_40 = TRUE; li_44 = TRUE; } } } } if (ai_4 == 395790115) { if (ai_0 == 1 && li_40 == TRUE) { if (ld_24 - ld_8 > ld_76 * gi_376 / 10000.0) { ld_52 = ld_24 - ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_24 + ld_76 * gi_376 / 10000.0; } else { if (gi_184 == 3) { li_68 = FALSE; ld_52 = ld_24 - ld_76 * gi_376 / 10000.0; li_72 = TRUE; ld_60 = ld_24 + ld_76 * gi_376 / 10000.0; gi_1264 = 1; } else { ld_52 = ld_24; li_68 = TRUE; li_72 = FALSE; ld_60 = 0; } } } else { if (ai_0 == 2 && li_44 == TRUE) { if (ld_8 - ld_32 > ld_76 * gi_376 / 10000.0) { ld_52 = ld_32 + ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_32 - ld_76 * gi_376 / 10000.0; } else { if (gi_184 == 3) { li_68 = FALSE; ld_52 = ld_32 + ld_76 * gi_376 / 10000.0; li_72 = TRUE; ld_60 = ld_32 - ld_76 * gi_376 / 10000.0; gi_1264 = 2; } else { ld_52 = ld_32; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_32 - ld_76 * gi_376 / 10000.0; } } } else { li_68 = FALSE; li_72 = FALSE; } } gi_1156 = li_68; gd_1160 = ld_52; gd_1256 = ld_60; gi_1252 = li_72; return; } if (ai_4 == 395790116) { if (ai_0 == 1 && li_40 == TRUE) { if (ld_24 - ld_8 > ld_76 * gi_376 / 10000.0) { ld_52 = ld_24 - ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_24 + ld_76 * gi_376 / 10000.0; } else { li_68 = FALSE; ld_52 = ld_24 - ld_76 * gi_376 / 10000.0; li_72 = TRUE; ld_60 = ld_24 + ld_76 * gi_376 / 10000.0; gi_1216 = 1; } } else { if (ai_0 == 2 && li_44 == TRUE) { if (ld_8 - ld_32 > ld_76 * gi_376 / 10000.0) { ld_52 = ld_32 + ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_32 - ld_76 * gi_376 / 10000.0; } else { li_68 = FALSE; ld_52 = ld_32 + ld_76 * gi_376 / 10000.0; li_72 = TRUE; ld_60 = ld_32 - ld_76 * gi_376 / 10000.0; gi_1216 = 2; } } else { if (ai_0 == 1) { ld_52 = ld_8 + gd_460 / 10000.0 - ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_8 + gd_460 / 10000.0 + ld_76 * gi_376 / 10000.0; } else { if (ai_0 == 2) { ld_52 = ld_8 - gd_460 / 10000.0 + ld_76 * gi_376 / 10000.0; li_68 = TRUE; li_72 = FALSE; ld_60 = ld_8 - gd_460 / 10000.0 - ld_76 * gi_376 / 10000.0; } else { li_68 = FALSE; li_72 = FALSE; } } } } gi_1096 = li_68; gd_1100 = ld_52; gd_1208 = ld_60; gi_1204 = li_72; } } void CheckStateSingleShot() { gi_1084 = gi_1088; switch (gi_1088) { case 1: if (Transition_Exit_SingleShot() != 1) return; gi_1084 = FALSE; gi_1252 = FALSE; return; case 0: if (Transition_Entry_SingleShot() == 1) { gi_1084 = TRUE; return; } return; } } int CheckEntrySingleShot() { if (gi_1084 == TRUE && gi_1084 != gi_1088) { if (gi_92 == 0) { if (Transition_Entry_SingleShot() != 1) return (0); gi_1968 = CheckSingleShotDirection(0); if (gi_1968 == 1) return (1); if (gi_1968 != 2) return (0); return (2); } if (gi_92 == 1) { if (gi_1968 == 1) return (1); if (gi_1968 == 2) return (2); } } return (0); } int Transition_Entry_SingleShot() { bool li_0; bool li_4; bool li_8; bool li_12; int li_16; int li_24; double ld_28; double l_ima_on_arr_36; double ld_44; double ld_52; double ld_60; double ld_68; int l_highest_76; int l_lowest_80; int li_unused_84; double ld_88; double ld_96; int li_104; int li_108; bool li_ret_112 = FALSE; if (iATR(NULL, g_timeframe_96, 1000, 0) == 0.0) return (0); if (gi_92 == 0) { li_0 = FALSE; ld_44 = NormalizeDouble(iHigh(NULL, g_timeframe_96, iHighest(NULL, g_timeframe_96, MODE_HIGH, gi_100, 0)), 4); ld_52 = NormalizeDouble(iLow(NULL, g_timeframe_96, iLowest(NULL, g_timeframe_96, MODE_LOW, gi_100, 0)), 4); ld_60 = ld_44 - ld_52; if (ld_60 > gd_104 * gi_100 * iATR(NULL, g_timeframe_96, 1000, 0) && CheckNoGap(0, gi_100, ld_60, g_timeframe_96, 0.3) == 1) li_0 = TRUE; else return (0); if (gi_168 == 0) li_4 = TRUE; else { li_4 = TRUE; if (gi_168 == 2) li_16 = 1; else li_16 = gi_100 - 1; for (int li_116 = 0; li_116 < li_16; li_116++) { gi_1968 = CheckSingleShotDirection(li_116); if (gi_1968 == 0) { li_4 = FALSE; return (0); } if (li_116 >= 1 && li_24 != gi_1968) { li_4 = FALSE; return (0); } li_24 = gi_1968; } } if (gi_172 == 0) li_8 = TRUE; else { li_8 = TRUE; if (gi_172 == 2) li_16 = 1; else li_16 = gi_100 - 1; for (li_116 = 1; li_116 < li_16; li_116++) { ld_28 = CheckSingleShotExpansion(li_116); if (ld_28 < gd_120) { li_8 = FALSE; return (0); } } } if (gi_176 == 0) li_12 = TRUE; else { li_12 = TRUE; if (g_timeframe_96 == PERIOD_M1) l_ima_on_arr_36 = g_ima_on_arr_1276; else l_ima_on_arr_36 = g_ima_on_arr_1284; if (gi_176 == 1 || gi_176 == 2) { if (gi_176 == 2) li_16 = 1; else li_16 = gi_100 - 1; for (li_116 = 1; li_116 <= li_16; li_116++) { if (iVolume(NULL, g_timeframe_96, li_116) < gd_128 * l_ima_on_arr_36) { li_12 = FALSE; return (0); } } } else { if (gi_176 == 3) { ld_88 = CalculateVolumeMovementStrength(gi_100 - 1, 0, g_timeframe_96); ld_96 = gd_128 * l_ima_on_arr_36 * gi_100; if (ld_88 < ld_96) { li_12 = FALSE; return (0); } } } } } if (gi_92 == 1) { li_0 = FALSE; l_highest_76 = iHighest(NULL, g_timeframe_96, MODE_HIGH, gi_100, 0); ld_44 = NormalizeDouble(iHigh(NULL, g_timeframe_96, l_highest_76), 4); l_lowest_80 = iLowest(NULL, g_timeframe_96, MODE_LOW, gi_100, 0); ld_52 = NormalizeDouble(iLow(NULL, g_timeframe_96, l_lowest_80), 4); ld_60 = ld_44 - ld_52; if (CheckNoGap(0, gi_100, ld_60, g_timeframe_96, 0.3) == 1) { ld_68 = gd_104 * gi_100 * iATR(NULL, g_timeframe_96, 1000, 0); li_104 = iClose(NULL, g_timeframe_96, 0) - ld_52 > ld_68; li_108 = ld_44 - iClose(NULL, g_timeframe_96, 0) > ld_68; if (li_104 == 1 && li_108 == 0) { gi_1968 = 1; li_unused_84 = l_lowest_80; li_0 = TRUE; } else { if (li_104 == 0 && li_108 == 1) { gi_1968 = 2; li_unused_84 = l_highest_76; li_0 = TRUE; } else return (0); } } return (0); } li_ret_112 = li_0 && li_4 && li_8 && li_12; return (li_ret_112); } int Transition_Exit_SingleShot() { bool li_ret_0 = FALSE; double ld_4 = NormalizeDouble(iHigh(NULL, g_timeframe_96, iHighest(NULL, g_timeframe_96, MODE_HIGH, gd_112 * gi_100, 0)), 4); double ld_12 = NormalizeDouble(iLow(NULL, g_timeframe_96, iLowest(NULL, g_timeframe_96, MODE_LOW, gd_112 * gi_100, 0)), 4); double ld_20 = ld_4 - ld_12; if (ld_20 < gd_104 * gi_100 * iATR(NULL, g_timeframe_96, 1000, 0)) li_ret_0 = TRUE; return (li_ret_0); } int CheckSingleShotDirection(int ai_0) { int li_ret_4; if (NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0), 4) > NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0 + 1), 4) && NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0), 4) > NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0 + 1), 4)) li_ret_4 = 1; else { if (NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0), 4) < NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0 + 1), 4) && NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0), 4) < NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0 + 1), 4)) li_ret_4 = 2; else li_ret_4 = 0; } return (li_ret_4); } double CheckSingleShotExpansion(int ai_0) { double ld_ret_4; double ld_12 = NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0), 4); double ld_20 = NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0), 4); double ld_28 = NormalizeDouble(iHigh(NULL, g_timeframe_96, ai_0 + 1), 4); double ld_36 = NormalizeDouble(iLow(NULL, g_timeframe_96, ai_0 + 1), 4); if (ld_28 - ld_36 == 0.0) ld_ret_4 = 10000; else ld_ret_4 = (ld_12 - ld_20) / (ld_28 - ld_36); return (ld_ret_4); } int OrderOpen_SINGLESHOT(int ai_0) { int li_4; double ld_8; if (ai_0 == 1) { if (gi_184 == 1) { gd_1160 = Ask + gd_136 * gd_104 * gi_100 * iATR(NULL, g_timeframe_96, 1000, 0); gi_1156 = TRUE; } else { if (gi_184 == 2 || gi_184 == 3) { FindLevels(395790115); FindTP_SR(1, 395790115); } } gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gd_1168 = NormalizeDouble(Bid, 4) - gd_1148; gd_1180 = NormalizeDouble(Bid, 4) - gd_160 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); if ((gi_1156 == TRUE && gd_1160 - Ask <= 0.001) || NormalizeDouble(Bid, 4) - gd_1168 <= 0.001) return (0); if (gi_180 == 1) gd_1168 = MathMax(gd_1168, NormalizeDouble(iLow(NULL, PERIOD_M1, 1), 4)); gd_unused_1240 = gd_1168; ld_8 = MoneyManagement(NormalizeDouble(Ask, 4), gd_1168, 395790115, OP_BUY, 0); if (gi_184 < 2 || gi_1252 == FALSE && ld_8 != 0.0) { gi_1144 = TRUE; gi_1176 = TRUE; gi_1188 = TRUE; gi_1232 = TRUE; if (!IsTesting()) RefreshRates(); if (gi_1156 == TRUE) li_4 = OrderSendReliable(Symbol(), OP_BUY, ld_8, Ask, gi_1868, gd_1168 - 0.001, gd_1160, "", 395790115, 0, Blue); else li_4 = OrderSendReliable(Symbol(), OP_BUY, ld_8, Ask, gi_1868, gd_1168 - 0.001, 0, "", 395790115, 0, Blue); if (EmailNotification == TRUE && li_4 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open buy " + DoubleToStr(ld_8, 2) + " " + Symbol() + " at " + DoubleToStr(Ask, Digits)); if (li_4 < 0) { AlertIsError(GetLastError()); return (0); } return (1); } } else { if (ai_0 == 2) { if (gi_184 == 1) { gd_1160 = Bid - gd_136 * gd_104 * gi_100 * iATR(NULL, g_timeframe_96, 1000, 0); gi_1156 = TRUE; } else { if (gi_184 == 2 || gi_184 == 3) { FindLevels(395790115); FindTP_SR(2, 395790115); } } gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gd_1168 = NormalizeDouble(Ask, 4) + gd_1148; gd_1180 = NormalizeDouble(Ask, 4) + gd_160 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); if ((gi_1156 == TRUE && Bid - gd_1160 <= 0.001) || gd_1168 - NormalizeDouble(Ask, 4) <= 0.001) return (0); if (gi_180 == 1) gd_1168 = MathMin(gd_1168, NormalizeDouble(iHigh(NULL, PERIOD_M1, 1), 4)); gd_unused_1240 = gd_1168; ld_8 = MoneyManagement(NormalizeDouble(Bid, 4), gd_1168, 395790115, OP_SELL, 0); if (gi_184 < 2 || gi_1252 == FALSE && ld_8 != 0.0) { gi_1144 = TRUE; gi_1176 = TRUE; gi_1188 = TRUE; gi_1232 = TRUE; if (!IsTesting()) RefreshRates(); if (gi_1156 == TRUE) li_4 = OrderSendReliable(Symbol(), OP_SELL, ld_8, Bid, gi_1868, gd_1168 + 0.001, gd_1160, "", 395790115, 0, Blue); else li_4 = OrderSendReliable(Symbol(), OP_SELL, ld_8, Bid, gi_1868, gd_1168 + 0.001, 0, "", 395790115, 0, Blue); if (EmailNotification == TRUE && li_4 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open sell " + DoubleToStr(ld_8, 2) + " " + Symbol() + " at " + DoubleToStr(Bid, Digits)); if (li_4 < 0) { AlertIsError(GetLastError()); return (0); } return (1); } } } return (0); } void CheckForOpenSingleShot() { int li_0; double ld_4; int li_12; if (gi_1252 == TRUE && gi_184 == 3) { if (gi_1264 == 1 && NormalizeDouble(iClose(NULL, PERIOD_M1, 0), 4) > gd_1256) { if (gi_472 == 0) { gd_1168 = gd_1160; gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); } else { if (gi_472 == 1) { gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gd_1168 = NormalizeDouble(Bid, 4) - gd_1148; } } gd_unused_1268 = gd_1256; FindLevels(395790115); FindTP_SR(1, 395790115); ld_4 = MoneyManagement(NormalizeDouble(Ask, 4), gd_1168, 395790115, OP_BUY, 0); if (gi_1252 == FALSE && ld_4 != 0.0) { gi_1176 = TRUE; gi_1144 = TRUE; if (!IsTesting()) RefreshRates(); li_0 = OrderSendReliable(Symbol(), OP_BUY, ld_4, Ask, gi_1868, gd_1168 - 0.001, 0, "", 395790115, 0, Blue); if (EmailNotification == TRUE && li_0 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open buy " + DoubleToStr(ld_4, 2) + " " + Symbol() + " at " + DoubleToStr(Ask, Digits)); if (li_0 < 0) { AlertIsError(GetLastError()); return; } gi_unused_1248 = 1; return; } } else { if (gi_1264 == 2 && NormalizeDouble(iClose(NULL, PERIOD_M1, 0), 4) < gd_1256) { if (gi_472 == 0) { gd_1168 = gd_1160; gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); } else { if (gi_472 == 1) { gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gd_1168 = NormalizeDouble(Ask, 4) + gd_1148; } } gd_unused_1268 = gd_1256; FindLevels(395790115); FindTP_SR(2, 395790115); ld_4 = MoneyManagement(NormalizeDouble(Bid, 4), gd_1168, 395790115, OP_SELL, 0); if (gi_1252 == FALSE && ld_4 != 0.0) { gi_1176 = TRUE; gi_1144 = TRUE; if (!IsTesting()) RefreshRates(); li_0 = OrderSendReliable(Symbol(), OP_SELL, ld_4, Bid, gi_1868, gd_1168 + 0.001, 0, "", 395790115, 0, Blue); if (EmailNotification == TRUE && li_0 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open sell " + DoubleToStr(ld_4, 2) + " " + Symbol() + " at " + DoubleToStr(Bid, Digits)); if (li_0 < 0) { AlertIsError(GetLastError()); return; } gi_unused_1248 = 1; return; } } } } int li_16 = CheckEntrySingleShot(); if (li_16 == 1 && gi_1252 == FALSE || gi_1264 == 2) { if (gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_SELL) == 0) li_12 = OrderOpen_SINGLESHOT(1); } else { if (li_16 == 2 && gi_1252 == FALSE || gi_1264 == 1) if (gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_BUY) == 0) li_12 = OrderOpen_SINGLESHOT(2); } } int CheckForLongTermTrend(int ai_0) { double ld_4; double ld_12; double ld_20; double ld_28; double ld_36; double ld_44; double ld_52; double ld_60; double ld_68; switch (gi_480) { case 0: return (1); case 1: ld_12 = NormalizeDouble(iMA(NULL, g_timeframe_520, g_period_492, 0, MODE_EMA, PRICE_CLOSE, 0), 4); ld_4 = NormalizeDouble(iMA(NULL, g_timeframe_520, g_period_508, 0, MODE_EMA, PRICE_CLOSE, 0), 4); ld_20 = (ld_12 - ld_4) / 0.0001; if (ai_0 == 1) { if (ld_20 > gi_524) return (1); return (0); } if (ai_0 == 2) { if (ld_20 < -gi_524) return (1); return (0); } case 2: ld_28 = NormalizeDouble(iMA(NULL, g_timeframe_556, g_period_528, 0, g_ma_method_560, PRICE_CLOSE, 0), 4); ld_36 = NormalizeDouble(iMA(NULL, g_timeframe_556, g_period_528, 0, g_ma_method_560, PRICE_CLOSE, gd_536), 4); if (gd_536 != 0.0) ld_44 = (ld_28 - ld_36) / 0.0001 / gd_536; else ld_44 = 0; if (ai_0 == 1) { if (ld_44 > gd_544) return (1); return (0); } if (ai_0 != 2) return (0); if (ld_44 < -gd_544) return (1); return (0); case 3: return (0); case 4: ld_52 = NormalizeDouble(iRSI(NULL, g_timeframe_572, g_period_564, PRICE_CLOSE, 0), 4); ld_52 /= 100.0; if (ai_0 == 1 && ld_52 > gd_576 + 0.5 && ld_52 < 1 - gd_584) return (1); if (ai_0 == 2 && ld_52 < 0.5 - gd_576 && ld_52 > gd_584) return (1); return (0); case 5: ld_60 = NormalizeDouble(iDeMarker(NULL, g_timeframe_572, g_period_564, 0), 4); if (ai_0 == 1 && ld_60 > gd_576 + 0.5 && ld_60 < 1 - gd_584) return (1); if (ai_0 == 2 && ld_60 < 0.5 - gd_576 && ld_60 > gd_584) return (1); return (0); case 6: ld_68 = (-1.0 * NormalizeDouble(iWPR(NULL, g_timeframe_572, g_period_564, 0), 4)) / 100.0; if (ai_0 == 1 && ld_68 < 0.5 - gd_576 && ld_68 > gd_584) return (1); if (ai_0 == 2 && ld_68 > gd_576 + 0.5 && ld_68 < 1 - gd_584) return (1); return (0); case 7: ld_60 = NormalizeDouble(iDeMarker(NULL, g_timeframe_572, g_period_564, 0), 4); ld_68 = (-1.0 * NormalizeDouble(iWPR(NULL, g_timeframe_572, g_period_564, 0), 4)) / 100.0; if (ai_0 == 1 && ld_60 > gd_576 + 0.5 && ld_68 > gd_584) return (1); if (ai_0 == 2 && ld_60 < 0.5 - gd_576 && ld_68 < 1 - gd_584) return (1); return (0); case 8: ld_60 = NormalizeDouble(iDeMarker(NULL, g_timeframe_572, g_period_564, 0), 4); if (ld_60 > gd_576 + 0.5 && ld_60 < 1 - gd_584) return (1); if (ld_60 < 0.5 - gd_576 && ld_60 > gd_584) return (2); return (0); } return (0); } int CheckForSidewaysMarket(int ai_0, int ai_4) { double ld_8 = NormalizeDouble(iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, ai_0, 0)), 4); double ld_16 = NormalizeDouble(iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, ai_0, 0)), 4); double ld_24 = (ld_8 - ld_16) / 0.0001; if (ld_24 > ai_4) return (1); return (0); } int RecognizeWavesInit() { int li_0; int li_4 = iBars(NULL, g_timeframe_592); if (g_timeframe_592 == PERIOD_M1) li_0 = 43200; else if (g_timeframe_592 == PERIOD_M5) li_0 = 8640; gi_1400 = 0; ArrayResize(gda_1396, 1); ArrayInitialize(gda_1396, 0); gd_752 = gd_1732; if (gi_776 == 1) { gd_1716 = NormalizeDouble(iHigh(NULL, g_timeframe_592, li_0 + 1), 4); gd_1724 = NormalizeDouble(iLow(NULL, g_timeframe_592, li_0 + 1), 4); gd_1616 = 0; gd_1624 = gd_1732; gd_1632 = 0; gd_1640 = gd_1732; gi_1648 = FALSE; gi_1652 = FALSE; g_count_1684 = 0; g_count_1688 = 0; g_count_1692 = 0; g_count_1696 = 0; gd_1708 = 0; gd_1700 = 0; for (int li_8 = li_0; li_8 > 1; li_8--) WaveAlgorithm_1(li_8, 1); } else { gi_1416 = 0; gi_1420 = 0; gd_1432 = NormalizeDouble(iHigh(NULL, g_timeframe_592, li_0 + 1), 4); gd_1440 = NormalizeDouble(iLow(NULL, g_timeframe_592, li_0 + 1), 4); g_count_1424 = li_0 + 1; g_count_1428 = li_0 + 1; g_count_1460 = li_0 + 1; gd_1464 = NormalizeDouble(iClose(NULL, g_timeframe_592, li_0 + 1), 4); for (li_8 = li_0; li_8 > 1; li_8--) WaveAlgorithm_2(li_8, 1); } if (li_0 > li_4) { if (li_4 != 0) gi_1404 = gi_1400 * li_0 / li_4; else gi_1404 = 1000; } else gi_1404 = gi_1400; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); else { gd_752 = gd_680 * NormalizeDouble(iATR(NULL, g_timeframe_696, 1000, 0), 4); if (gd_752 == 0.0) gd_752 = gd_1732; } gi_1412 = FALSE; return (0); } int RecognizeWaves() { g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (g_timeframe_592 == PERIOD_M1 && g_datetime_1332 == iTime(NULL, PERIOD_M1, 0)) return (0); if (g_timeframe_592 == PERIOD_M5 && g_datetime_1336 == iTime(NULL, PERIOD_M5, 0)) return (0); g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (gi_668 != 1) gd_752 = gd_680 * NormalizeDouble(iATR(NULL, g_timeframe_696, 1000, 0), 4); if (gi_776 == 1) WaveAlgorithm_1(1, 0); else WaveAlgorithm_2(1, 0); return (0); } int CheckWaveSignal(int ai_0, int ai_4) { int li_ret_8 = 0; if (gd_1380 == 0.0) return (0); if (gi_1376 == TRUE) { gi_1756 = FALSE; gd_1764 = gd_1380 - gd_1552 * gd_1368; gd_1772 = gd_1380 - gd_1560 * gd_1368; gd_1780 = gd_1380 - gd_1568 * gd_1368; gd_1788 = gd_1380 - gd_1576 * gd_1368; gd_1600 = gd_624 * gd_1368; gd_1608 = gd_632 * gd_1368; if (gi_1204 == TRUE) gi_1204 = FALSE; if (gi_1236 == 1) gi_1236 = 2; } if (gi_640 > 0 && ai_0 == 4 || gi_640 == 2) CheckRetracementChannelWave(gi_1376, gi_1356, ai_0); else gi_1756 = TRUE; if (gi_1412 == TRUE) li_ret_8 = CheckEntryWarningSignalWave(ai_0, ai_4); gi_1376 = FALSE; return (li_ret_8); } int CheckEntryWarningSignalWave(int ai_0, int ai_4) { double ld_8; double ld_16; double ld_24; double ld_32; double ld_40; double ld_48; double ld_56; double ld_64; double ld_72; double ld_80; double ld_88; int li_ret_96 = 0; bool li_100 = TRUE; double ld_104 = 0; if (ai_0 == 4) { ld_24 = gd_1764; ld_32 = gd_1772; ld_40 = gd_1600; } else { ld_24 = gd_1780; ld_32 = gd_1788; ld_40 = gd_1608; } if (gi_1756 == TRUE) { switch (gi_652) { case 0: if (g_timeframe_596 == PERIOD_M1 && g_datetime_1332 == iTime(NULL, PERIOD_M1, 0)) return (0); if (g_timeframe_596 == PERIOD_M5 && g_datetime_1336 == iTime(NULL, PERIOD_M5, 0)) return (0); if (gi_744 == 1 && ai_0 == 4) if (iTime(NULL, g_timeframe_596, 0) - g_datetime_1352 > 3600 * gi_748) return (0); if (gi_724 == 1) { ld_8 = NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4) - NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4); ld_16 = NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_728; if (ld_8 < ld_16 && ld_16 != 0.0) ld_104 = ld_40 * (1 - ld_8 / ld_16); } if (gi_644 == 1 && ai_0 == 4) { ld_48 = NormalizeDouble(iLow(NULL, g_timeframe_596, iLowest(NULL, g_timeframe_596, MODE_LOW, gi_648, 2)), 4); ld_56 = NormalizeDouble(iHigh(NULL, g_timeframe_596, iHighest(NULL, g_timeframe_596, MODE_HIGH, gi_648, 2)), 4); ld_64 = NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4); ld_72 = NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4); ld_88 = NormalizeDouble(iOpen(NULL, g_timeframe_596, 0), 4); if (ld_64 < ld_48 && ld_72 > ld_56) ld_80 = 0; else { if (ld_72 > ld_56 && ld_88 > ld_64) ld_80 = 1; else { if (ld_64 < ld_48 && ld_88 < ld_72) ld_80 = -1; else ld_80 = 0; } } } if (NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4) > ld_24 + ld_104 && gi_712 == 0 || NormalizeDouble(iATR(NULL, g_timeframe_596, 1, 1), 4) > NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_716 && gi_644 == 0 || ai_0 == 5 || ld_80 == 1.0) li_ret_96 = 1; else { if (NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4) < ld_32 - ld_104 && gi_712 == 0 || NormalizeDouble(iATR(NULL, g_timeframe_596, 1, 1), 4) > NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_716 && gi_644 == 0 || ai_0 == 5 || ld_80 == -1.0) li_ret_96 = 2; } break; case 1: if (NormalizeDouble(Close[0], 4) > ld_24) li_ret_96 = 1; else if (NormalizeDouble(Close[0], 4) < ld_32) li_ret_96 = 2; break; case 2: if (g_timeframe_596 == PERIOD_M1 && g_datetime_1332 == iTime(NULL, PERIOD_M1, 0)) li_100 = FALSE; else if (g_timeframe_596 == PERIOD_M5 && g_datetime_1336 == iTime(NULL, PERIOD_M5, 0)) li_100 = FALSE; if (gi_744 == 1 && ai_0 == 4) if (iTime(NULL, g_timeframe_596, 0) - g_datetime_1352 > 3600 * gi_748) return (0); if (li_100 == TRUE && gi_724 == 1) { ld_8 = NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4) - NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4); ld_16 = NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_728; if (ld_8 < ld_16 && ld_16 != 0.0) ld_104 = ld_40 * (1 - ld_8 / ld_16); } if (gi_644 == 1 && ai_0 == 4) { ld_48 = NormalizeDouble(iLow(NULL, g_timeframe_596, iLowest(NULL, g_timeframe_596, MODE_LOW, gi_648, 2)), 4); ld_56 = NormalizeDouble(iHigh(NULL, g_timeframe_596, iHighest(NULL, g_timeframe_596, MODE_HIGH, gi_648, 2)), 4); ld_64 = NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4); ld_72 = NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4); ld_88 = NormalizeDouble(iOpen(NULL, g_timeframe_596, 0), 4); if (ld_64 < ld_48 && ld_72 > ld_56) ld_80 = 0; else { if (ld_72 > ld_56 && ld_88 > ld_64) ld_80 = 1; else { if (ld_64 < ld_48 && ld_88 < ld_72) ld_80 = -1; else ld_80 = 0; } } } if ((li_100 == TRUE && NormalizeDouble(iLow(NULL, g_timeframe_596, 1), 4) > ld_24 + ld_104 && gi_712 == 0 || NormalizeDouble(iATR(NULL, g_timeframe_596, 1, 1), 4) > NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_716 && gi_644 == 0 || ai_0 == 5 || ld_80 == 1.0) || NormalizeDouble(Close[0], 4) > ld_24 + ld_40) li_ret_96 = 1; else { if ((li_100 == TRUE && NormalizeDouble(iHigh(NULL, g_timeframe_596, 1), 4) < ld_32 - ld_104 && gi_712 == 0 || NormalizeDouble(iATR(NULL, g_timeframe_596, 1, 1), 4) > NormalizeDouble(iATR(NULL, g_timeframe_596, 1000, 0), 4) * gd_716 && gi_644 == 0 || ai_0 == 5 || ld_80 == -1.0) || NormalizeDouble(Close[0], 4) < ld_32 - ld_40) li_ret_96 = 2; } if (ai_0 == 5 && ai_4 == 2 && NormalizeDouble(Close[0], 4) > ld_24 + ld_40 && gi_1236 == 1) gi_1236 = 2; else if (ai_0 == 5 && ai_4 == 1 && NormalizeDouble(Close[0], 4) < ld_32 - ld_40 && gi_1236 == 1) gi_1236 = 2; } } return (li_ret_96); } void CheckRetracementChannelWave(int ai_0, int ai_4, int ai_8) { double ld_12; if (ai_8 == 4) { gd_1584 = gd_600 * (gd_1552 - 0.5) + 0.5; gd_1592 = gd_600 * (gd_1560 - 0.5) + 0.5; gd_1740 = gd_1380 - gd_1584 * gd_1368; gd_1748 = gd_1380 - gd_1592 * gd_1368; } else { gd_1584 = gd_600 * (gd_1568 - 0.5) + 0.5; gd_1592 = gd_600 * (gd_1576 - 0.5) + 0.5; gd_1740 = gd_1380 - gd_1584 * gd_1368; gd_1748 = gd_1380 - gd_1592 * gd_1368; } if (ai_0 == 1) { for (int li_20 = gi_1364; li_20 >= 0; li_20--) { ld_12 = NormalizeDouble(iClose(NULL, g_timeframe_596, li_20), 4); if ((ai_4 == 1 && ld_12 < gd_1740) || (ai_4 == 0 && ld_12 > gd_1748)) { gi_1756 = TRUE; return; } } } else { if (g_timeframe_596 == PERIOD_M1 && g_datetime_1332 == iTime(NULL, PERIOD_M1, 0)) return; if (g_timeframe_596 == PERIOD_M5 && g_datetime_1336 == iTime(NULL, PERIOD_M5, 0)) return; if (gi_1756 == FALSE) { ld_12 = NormalizeDouble(iClose(NULL, g_timeframe_596, 1), 4); if ((ai_4 == 1 && ld_12 < gd_1740) || (ai_4 == 0 && ld_12 > gd_1748)) gi_1756 = TRUE; } } } void WaveAlgorithm_1(int ai_0, int ai_4) { double ld_8; double ld_16; double ld_24; double ld_32 = NormalizeDouble(iHigh(NULL, g_timeframe_592, ai_0), 4); double ld_40 = NormalizeDouble(iLow(NULL, g_timeframe_592, ai_0), 4); if (ld_32 > gd_1716 || ld_40 > gd_1724) { if (gi_1648 == FALSE) { g_count_1684 = 0; g_count_1692 = 0; if (gd_1724 < ld_40) { gd_1640 = gd_1724; g_count_1664 = ai_0 + 1; } else { gd_1640 = ld_40; g_count_1664 = ai_0; } } gi_1648 = TRUE; if (ld_32 > gd_1632) { gd_1632 = ld_32; g_count_1668 = ai_0; } if (ld_40 < gd_1640) { gd_1640 = ld_40; g_count_1664 = ai_0; g_count_1684 = 0; g_count_1692 = 0; gd_1632 = ld_32; g_count_1668 = ai_0; } gd_1700 = gd_1632 - gd_1640; if (ld_32 > gd_1716 && ld_40 > gd_1724) g_count_1684++; ld_24 = gd_1632 - ld_40; if (gi_1648 == TRUE && ld_40 < gd_1724 && gd_1700 > gd_752 && ld_24 > gd_768 * gd_1700) gi_1648 = FALSE; } else { ld_24 = gd_1632 - ld_40; if (gi_1648 == TRUE && gd_1700 > gd_752 && ld_24 > gd_768 * gd_1700) gi_1648 = FALSE; else { if (gi_1648 == TRUE && g_count_1692 < gd_760 * g_count_1684) { g_count_1692++; if (ld_40 < gd_1640) { gd_1640 = ld_40; g_count_1664 = ai_0; g_count_1684 = 0; g_count_1692 = 0; gd_1632 = ld_32; g_count_1668 = ai_0; } } else gi_1648 = FALSE; } } if (ld_32 < gd_1716 || ld_40 < gd_1724) { if (gi_1652 == FALSE) { g_count_1688 = 0; g_count_1696 = 0; if (gd_1716 > ld_32) { gd_1616 = gd_1716; g_count_1672 = ai_0 + 1; } else { gd_1616 = ld_32; g_count_1672 = ai_0; } } gi_1652 = TRUE; if (ld_32 > gd_1616) { gd_1616 = ld_32; g_count_1672 = ai_0; g_count_1688 = 0; g_count_1696 = 0; gd_1624 = ld_40; g_count_1676 = ai_0; } if (ld_40 < gd_1624) { gd_1624 = ld_40; g_count_1676 = ai_0; } gd_1708 = gd_1616 - gd_1624; if (ld_32 < gd_1716 && ld_40 < gd_1724) g_count_1688++; ld_24 = gd_1624 - ld_32; if (gi_1652 == TRUE && ld_32 > gd_1716 && gd_1708 > gd_752 && ld_24 > gd_768 * gd_1708) gi_1652 = FALSE; } else { ld_24 = ld_32 - gd_1624; if (gi_1652 == TRUE && gd_1708 > gd_752 && ld_24 > gd_768 * gd_1708) gi_1652 = FALSE; else { if (gi_1652 == TRUE && g_count_1696 < gd_760 * g_count_1688) { g_count_1696++; if (ld_32 > gd_1616) { gd_1616 = ld_32; g_count_1672 = ai_0; g_count_1688 = 0; g_count_1696 = 0; gd_1624 = ld_40; g_count_1676 = ai_0; } } else gi_1652 = FALSE; } } if (gi_1656 == TRUE && gi_1648 == FALSE) { if (ai_4 == 1) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; } else { if (ai_4 == 0) { if (gi_1400 < gi_1404) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } else { for (int l_index_48 = 0; l_index_48 < gi_1400 - 1; l_index_48++) gda_1396[l_index_48] = gda_1396[l_index_48 + 1]; gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } } } if (gd_1700 >= gd_752) { if (gi_656 == 1) { ld_8 = CalculateVolumeMovementStrength(g_count_1664, g_count_1668, g_timeframe_592); ld_16 = gd_660 * g_ima_on_arr_1296 * (g_count_1664 - g_count_1668); } if (CheckNoGap(g_count_1676, g_count_1672, gd_1708, g_timeframe_592, gd_736) == 1 && gi_656 == 0 || ld_8 > ld_16) { gi_1356 = TRUE; gi_unused_1360 = g_count_1664; gi_1364 = g_count_1668; gd_1368 = gd_1700; gd_1380 = gd_1632; gd_unused_1388 = gd_1640; gi_1376 = TRUE; g_datetime_1352 = iTime(NULL, g_timeframe_592, 0); if (gi_1412 == FALSE && ai_4 == 0) gi_1412 = TRUE; } } } if (gi_1648 == FALSE) { gd_1632 = 0; gd_1640 = gd_1732; } if (gi_1660 == TRUE && gi_1652 == FALSE) { if (ai_4 == 1) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; } else { if (ai_4 == 0) { if (gi_1400 < gi_1404) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } else { for (l_index_48 = 0; l_index_48 < gi_1400 - 1; l_index_48++) gda_1396[l_index_48] = gda_1396[l_index_48 + 1]; gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } } } if (gd_1708 >= gd_752) { if (gi_656 == 1) { ld_8 = CalculateVolumeMovementStrength(g_count_1672, g_count_1676, g_timeframe_592); ld_16 = gd_660 * g_ima_on_arr_1296 * (g_count_1672 - g_count_1676); } if (CheckNoGap(g_count_1676, g_count_1672, gd_1708, g_timeframe_592, gd_736) == 1 && gi_656 == 0 || ld_8 > ld_16) { gi_1356 = FALSE; gi_unused_1360 = g_count_1672; gi_1364 = g_count_1676; gd_1368 = gd_1708; gd_1380 = gd_1616; gd_unused_1388 = gd_1624; gi_1376 = TRUE; g_datetime_1352 = iTime(NULL, g_timeframe_592, 0); if (gi_1412 == FALSE && ai_4 == 0) gi_1412 = TRUE; } } } if (gi_1652 == FALSE) { gd_1616 = 0; gd_1624 = gd_1732; } gd_1716 = ld_32; gd_1724 = ld_40; gi_1656 = gi_1648; gi_1660 = gi_1652; g_count_1664++; g_count_1668++; g_count_1672++; g_count_1676++; } void WaveAlgorithm_2(int ai_0, int ai_4) { double ld_8; double ld_16; g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); double ld_24 = NormalizeDouble(iLow(NULL, g_timeframe_592, iLowest(NULL, g_timeframe_592, MODE_LOW, gi_1680, ai_0 + 1)), 4); double ld_32 = NormalizeDouble(iHigh(NULL, g_timeframe_592, iHighest(NULL, g_timeframe_592, MODE_HIGH, gi_1680, ai_0 + 1)), 4); double ld_40 = NormalizeDouble(iLow(NULL, g_timeframe_592, ai_0), 4); double ld_48 = NormalizeDouble(iHigh(NULL, g_timeframe_592, ai_0), 4); g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (ld_40 < ld_24 && ld_48 > ld_32) { gi_1420 = 2; if (gi_1416 == 1) g_count_1424 = ai_0 + 1; if (gi_1416 == -1) g_count_1428 = ai_0 + 1; } else { if (ld_40 < ld_24) gi_1420 = -1; if (ld_48 > ld_32) gi_1420 = 1; } if (gi_1420 != gi_1416 && gi_1416 != 0) { if (gi_1420 == 2) { gi_1420 = -gi_1416; gd_1432 = ld_48; gd_1440 = ld_40; } if (gi_1420 == 1) { gi_1448 = g_count_1460; gd_1452 = gd_1464; g_count_1460 = g_count_1428; gd_1464 = gd_1440; gd_1708 = MathAbs(gd_1464 - gd_1452); g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (ai_4 == 1) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; } else { if (ai_4 == 0) { if (gi_1400 < gi_1404) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } else { for (int l_index_56 = 0; l_index_56 < gi_1400 - 1; l_index_56++) gda_1396[l_index_56] = gda_1396[l_index_56 + 1]; gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } } } if (GetLastError() != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (gi_656 == 1) { ld_8 = CalculateVolumeMovementStrength(gi_1448, g_count_1460, g_timeframe_592); ld_16 = gd_660 * g_ima_on_arr_1296 * (gi_1448 - g_count_1460); } g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (gd_1708 >= gd_752 && gi_656 == 0 || ld_8 > ld_16 && CheckNoGap(g_count_1460, gi_1448, gd_1708, g_timeframe_592, gd_736) == 1) { gi_1356 = FALSE; gi_unused_1360 = gi_1448; gi_1364 = g_count_1460; gd_1368 = gd_1708; gd_1380 = gd_1452; gd_unused_1388 = gd_1464; gi_1376 = TRUE; g_datetime_1352 = iTime(NULL, g_timeframe_592, 0); if (gi_1412 == FALSE && ai_4 == 0) gi_1412 = TRUE; } } if (gi_1420 == -1) { gi_1448 = g_count_1460; gd_1452 = gd_1464; g_count_1460 = g_count_1424; gd_1464 = gd_1432; gd_1708 = MathAbs(gd_1464 - gd_1452); g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (ai_4 == 1) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; } else { if (ai_4 == 0) { if (gi_1400 < gi_1404) { gi_1400++; ArrayResize(gda_1396, gi_1400); gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } else { for (l_index_56 = 0; l_index_56 < gi_1400 - 1; l_index_56++) gda_1396[l_index_56] = gda_1396[l_index_56 + 1]; gda_1396[gi_1400 - 1] = gd_1708; if (gi_668 == 1) gd_752 = CheckHeightOfWave(); } } } g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (gi_656 == 1) { ld_8 = CalculateVolumeMovementStrength(gi_1448, g_count_1460, g_timeframe_592); ld_16 = gd_660 * g_ima_on_arr_1296 * (gi_1448 - g_count_1460); } g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); if (gd_1708 >= gd_752 && gi_656 == 0 || ld_8 > ld_16 && CheckNoGap(g_count_1460, gi_1448, gd_1708, g_timeframe_592, gd_736) == 1) { gi_1356 = TRUE; gi_unused_1360 = gi_1448; gi_1364 = g_count_1460; gd_1368 = gd_1708; gd_1380 = gd_1464; gd_unused_1388 = gd_1452; gi_1376 = TRUE; g_datetime_1352 = iTime(NULL, g_timeframe_592, 0); if (gi_1412 == FALSE && ai_4 == 0) gi_1412 = TRUE; } } gd_1432 = ld_48; gd_1440 = ld_40; } if (gi_1420 == 1) { if (ld_48 >= gd_1432) { gd_1432 = ld_48; g_count_1424 = ai_0; } } if (gi_1420 == -1) { if (ld_40 <= gd_1440) { gd_1440 = ld_40; g_count_1428 = ai_0; } } gi_1416 = gi_1420; g_count_1460++; g_count_1428++; g_count_1424++; } double CheckHeightOfWave() { double lda_0[]; if (gi_1400 <= 0) return (10000); double ld_4 = gi_1400 * gd_704; int li_12 = MathMax(ld_4 - 1.0, 0); ArrayResize(lda_0, gi_1400); ArrayCopy(lda_0, gda_1396, 0, 0, WHOLE_ARRAY); ArraySort(lda_0, WHOLE_ARRAY, 0, MODE_ASCEND); double ld_ret_16 = lda_0[li_12]; return (ld_ret_16); } int CalculateCurrentOrders(string as_unused_0, int a_magic_8) { int l_count_12 = 0; for (int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) { if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_8) l_count_12++; } return (l_count_12); } int CheckNoGap(int ai_0, int ai_4, double ad_8, int a_timeframe_16, double ad_20) { double ld_28; double ld_36; double ld_44; double ld_52; bool li_ret_60; double ld_64 = 0; for (int li_72 = ai_0; li_72 < ai_4; li_72++) { ld_28 = NormalizeDouble(iLow(NULL, a_timeframe_16, li_72), 4); ld_36 = NormalizeDouble(iHigh(NULL, a_timeframe_16, li_72), 4); ld_44 = NormalizeDouble(iLow(NULL, a_timeframe_16, li_72 + 1), 4); ld_52 = NormalizeDouble(iHigh(NULL, a_timeframe_16, li_72 + 1), 4); if (ld_28 > ld_52) ld_64 += ld_28 - ld_52; if (ld_36 < ld_44) ld_64 += ld_44 - ld_36; } if (ad_8 > 0.0) { if (ld_64 / ad_8 > ad_20) li_ret_60 = FALSE; else li_ret_60 = TRUE; } else li_ret_60 = FALSE; return (li_ret_60); } double CalculateVolumeMovementStrength(int ai_0, int ai_4, int a_timeframe_8) { if (ai_0 - ai_4 <= 0) return (0); double ld_ret_12 = 0; for (int li_20 = ai_0; li_20 >= ai_4; li_20--) ld_ret_12 += iVolume(NULL, a_timeframe_8, li_20); return (ld_ret_12); } int CheckMagigNumber(int ai_0) { int li_unused_4 = 0; if (ai_0 == 395790116 || ai_0 == 395790115 || CheckSwingMagigNumber(ai_0) == 1) return (1); return (0); } int CheckSwingMagigNumber(int ai_0) { for (int l_index_4 = 0; l_index_4 < gi_1512; l_index_4++) if (ai_0 == gia_76[l_index_4]) return (1); return (0); } int ReturnSwingMagigNumber(int ai_0) { for (int l_index_4 = 0; l_index_4 < gi_1512; l_index_4++) if (ai_0 == gia_76[l_index_4]) return (l_index_4); return (-1); } void PrintOnChart(int ai_0, int ai_4, int ai_8) { string ls_12; string ls_20 = ""; int li_28 = 4; if (DisplayOnChart != FALSE) { if (ai_4 == 1 || ai_8 == 1) ls_12 = "EA STOPPED --> " + gs_1836; else { if (ai_0 == 0) ls_12 = "RUNNING PROPERLY ..."; else if (ai_0 == 1) ls_12 = "RUNNING PROPERLY ..."; if (ai_0 == 1) { if (g_count_1972 < 6) g_count_1972++; else g_count_1972 = 0; if (g_count_1972 == 0) ls_20 = "."; if (g_count_1972 == 1) ls_20 = ".."; if (g_count_1972 == 2) ls_20 = "..."; if (g_count_1972 == 3) ls_20 = "...."; if (g_count_1972 == 4) ls_20 = "....."; if (g_count_1972 == 5) ls_20 = "......"; if (g_count_1972 == 6) ls_20 = "......."; } ls_20 = ""; } if (li_28 == 1) { Comment("" + "\n" + "FOREX DERIVATIVE 2.0" + "\n" + "\n" + "EA State: " + ls_12 + " " + ls_20 + "\n" + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + "\n" + "________________________________________________" + "\n" + "\n" + "BROKER INFORMATION:" + "\n" + "Broker Company: " + AccountCompany() + "\n" + "________________________________________________" + "\n" + "\n" + "ACCOUNT INFORMATION:" + "\n" + "Account Number: " + AccountNumber() + "\n" + "Account Leverage: " + DoubleToStr(AccountLeverage(), 0) + "\n" + "Account Balance: " + DoubleToStr(AccountBalance(), 2) + "\n" + "Account Currency: " + AccountCurrency() + "\n" + "Account Equity: " + DoubleToStr(AccountEquity(), 2) + "\n" + "________________________________________________" + "\n" + "\n" + "MARGIN INFORMATION:" + "\n" + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2) + "\n"); } else { if (li_28 == 2) { Comment("" + "___________________________________________" + "\n" + "\n" + "FOREX DERIVATIVE 2.0" + "\n" + "\n" + "EA State: " + ls_12 + " " + ls_20 + "\n" + "\n" + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + "\n" + "\n" + "___________________________________________"); } else { if (li_28 == 3) { Comment("" + "\n" + "FOREX DERIVATIVE 2.0" + "\n" + "\n" + "EA State: " + ls_12 + " " + ls_20 + "\n" + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + "\n" + "________________________________________________" + "\n" + "\n" + "TRADING PERFORMANCE:" + "\n" + "Balance: " + DoubleToStr(10000, 0) + " " + AccountCurrency() + "\n" + "Equity: " + DoubleToStr(10000, 0) + " " + AccountCurrency() + "\n" + "Profit Factor: " + DoubleToStr(1.14567, 2) + "\n" + "Accuracy: " + DoubleToStr(97.546, 0) + " %" + "\n" + "________________________________________________" + "\n" + "\n" + "ACCOUNT INFORMATION:" + "\n" + "Broker Company: " + AccountCompany() + "\n" + "Account Number: " + AccountNumber() + "\n" + "Account Leverage: " + DoubleToStr(AccountLeverage(), 0) + "\n" + "Account Currency: " + AccountCurrency() + "\n" + "________________________________________________" + "\n" + "\n" + "MARGIN INFORMATION:" + "\n" + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 0) + " " + AccountCurrency() + "\n"); } else { if (li_28 == 4) { Comment("" + "\n" + "FOREX DERIVATIVE 2.0" + "\n" + "\n" + "EA State: " + ls_12 + " " + ls_20 + "\n" + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + "\n" + "________________________________________________" + "\n" + "\n" + "TRADING PERFORMANCE:" + "\n" + "Balance: " + DoubleToStr(AccountBalance(), 0) + " " + AccountCurrency() + "\n" + "Equity: " + DoubleToStr(AccountEquity(), 0) + " " + AccountCurrency() + "\n" + "________________________________________________" + "\n" + "\n" + "ACCOUNT INFORMATION:" + "\n" + "Broker Company: " + AccountCompany() + "\n" + "Account Number: " + AccountNumber() + "\n" + "Account Leverage: " + DoubleToStr(AccountLeverage(), 0) + "\n" + "Account Currency: " + AccountCurrency() + "\n" + "________________________________________________" + "\n" + "\n" + "MARGIN INFORMATION:" + "\n" + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 0) + " " + AccountCurrency() + "\n"); } } } } } } void DefineParameters() { double lda_0[102]; int l_year_4; string ls_8 = StringSubstr(Symbol(), 0, 6); if (IsTesting() && TimeCurrent() < gi_1856) l_year_4 = TimeYear(TimeCurrent()); else l_year_4 = 9999; lda_0[0] = 5; lda_0[1] = 3; lda_0[2] = 0.5; lda_0[3] = 5; lda_0[4] = 2.2; lda_0[5] = 0.2; lda_0[6] = 20; lda_0[7] = 2; lda_0[8] = 5; lda_0[9] = 2; lda_0[10] = 1; lda_0[11] = 2; lda_0[12] = 0; lda_0[13] = 1; lda_0[14] = 0; lda_0[15] = 10; lda_0[16] = 30; lda_0[17] = 10; lda_0[18] = 5; lda_0[19] = 10; lda_0[20] = 100; lda_0[21] = 1; lda_0[22] = 1; lda_0[23] = 200; lda_0[24] = 0.4; lda_0[25] = 20; lda_0[26] = 30; lda_0[27] = 100; lda_0[28] = 1; lda_0[29] = 0.5; lda_0[30] = 2; lda_0[31] = 10; lda_0[32] = 2; lda_0[33] = 10; lda_0[34] = 2; lda_0[35] = 2; lda_0[36] = 4; lda_0[37] = 2; lda_0[38] = 100; lda_0[39] = 1; lda_0[40] = 12; lda_0[41] = 1; lda_0[42] = 14; lda_0[43] = 2; lda_0[44] = 0.2; lda_0[45] = 0.1; lda_0[45] = 1; lda_0[46] = 15; lda_0[47] = 0.5; lda_0[48] = 0.25; lda_0[49] = 0.25; lda_0[50] = 2; lda_0[51] = 2; lda_0[52] = 1; lda_0[53] = 1; lda_0[54] = 20; lda_0[55] = 2; lda_0[56] = 50; lda_0[57] = 1; lda_0[58] = 225; lda_0[59] = 2; lda_0[60] = 0.1; lda_0[61] = 5; lda_0[62] = 15; lda_0[63] = 5; lda_0[64] = 20; lda_0[65] = 100; lda_0[66] = 3; lda_0[67] = 20; lda_0[68] = 100; lda_0[69] = 24; lda_0[70] = 0; lda_0[71] = 2; lda_0[72] = 1; lda_0[73] = 30; lda_0[74] = 2; lda_0[75] = 0.2; lda_0[76] = 0.3; lda_0[77] = 30; lda_0[78] = 0; lda_0[79] = 1.2; lda_0[80] = 1; lda_0[81] = 2.25; lda_0[82] = 5; lda_0[83] = 21; lda_0[84] = 1; lda_0[85] = 2; lda_0[86] = 30; lda_0[87] = 24; lda_0[88] = 50; lda_0[89] = 0; lda_0[90] = 5; lda_0[91] = 1000; lda_0[92] = 1000; lda_0[93] = 1000; lda_0[94] = 34; lda_0[95] = 123; lda_0[96] = 1; lda_0[97] = 27; lda_0[98] = 4000; if (Hedging == FALSE) lda_0[99] = 1; else lda_0[99] = 0; lda_0[100] = 0; lda_0[101] = 0; Func2(lda_0, l_year_4, ls_8); g_timeframe_96 = lda_0[0]; gi_100 = lda_0[1]; gd_104 = lda_0[2]; gd_112 = lda_0[3]; gd_120 = lda_0[4]; gd_128 = lda_0[5]; gd_136 = lda_0[6]; gd_144 = lda_0[7]; gd_152 = lda_0[8]; gd_160 = lda_0[9]; gi_168 = lda_0[10]; gi_172 = lda_0[11]; gi_176 = lda_0[12]; gi_180 = lda_0[13]; gi_92 = lda_0[14]; gi_188 = lda_0[15]; gi_192 = lda_0[16]; gi_196 = lda_0[17]; gi_200 = lda_0[18]; gi_204 = lda_0[19]; gi_208 = lda_0[20]; g_timeframe_216 = lda_0[21]; gi_220 = lda_0[22]; gi_224 = lda_0[23]; gd_232 = lda_0[24]; gi_240 = lda_0[25]; gi_244 = lda_0[26]; gi_248 = lda_0[27]; gd_256 = lda_0[28]; gd_264 = lda_0[29]; gd_272 = lda_0[30]; gi_280 = lda_0[31]; gi_284 = lda_0[32]; gd_288 = lda_0[33]; gi_296 = lda_0[34]; gi_308 = lda_0[35]; gi_312 = lda_0[36]; g_timeframe_316 = lda_0[37]; g_period_320 = lda_0[38]; g_ma_method_324 = lda_0[39]; gi_328 = lda_0[40]; gd_332 = lda_0[41]; g_period_340 = lda_0[42]; gi_344 = lda_0[43]; gd_352 = lda_0[44]; gd_360 = lda_0[45]; g_timeframe_592 = lda_0[45]; g_timeframe_596 = lda_0[46]; gd_600 = lda_0[47]; gd_608 = lda_0[48]; gd_616 = lda_0[49]; gd_624 = lda_0[50]; gd_632 = lda_0[51]; gi_640 = lda_0[52]; gi_644 = lda_0[53]; gi_648 = lda_0[54]; gi_652 = lda_0[55]; gd_660 = lda_0[56]; gi_668 = lda_0[57]; gd_672 = lda_0[58]; gd_688 = lda_0[59]; gd_704 = lda_0[60]; gd_728 = lda_0[61]; gi_780 = lda_0[62]; gi_480 = lda_0[63]; gd_484 = lda_0[64]; gd_500 = lda_0[65]; gi_516 = lda_0[66]; gi_524 = lda_0[67]; g_period_528 = lda_0[68]; gd_536 = lda_0[69]; gd_544 = lda_0[70]; gi_552 = lda_0[71]; g_ma_method_560 = lda_0[72]; g_period_564 = lda_0[73]; gi_568 = lda_0[74]; gd_576 = lda_0[75]; gd_584 = lda_0[76]; gi_376 = lda_0[77]; gi_380 = lda_0[78]; gd_388 = lda_0[79]; gi_404 = lda_0[80]; gd_412 = lda_0[81]; gi_428 = lda_0[82]; gd_444 = lda_0[83]; gi_468 = lda_0[84]; gi_476 = lda_0[85]; gd_460 = lda_0[98]; gd_784 = lda_0[86]; gd_792 = lda_0[87]; gi_824 = lda_0[88]; gi_828 = lda_0[89]; gi_832 = lda_0[90]; gd_888 = lda_0[91]; gd_896 = lda_0[92]; gd_904 = lda_0[93]; gd_968 = lda_0[94]; gd_976 = lda_0[95]; gd_984 = lda_0[96]; gd_992 = lda_0[97]; gi_88 = lda_0[99]; gi_712 = lda_0[100]; gi_776 = lda_0[101]; } string ErrorDescription(int ai_0) { string ls_ret_4; switch (ai_0) { case 0: case 1: ls_ret_4 = "no error"; break; case 2: ls_ret_4 = "common error"; break; case 3: ls_ret_4 = "invalid trade parameters"; break; case 4: ls_ret_4 = "trade server is busy"; break; case 5: ls_ret_4 = "old version of the client terminal"; break; case 6: ls_ret_4 = "no connection with trade server"; break; case 7: ls_ret_4 = "not enough rights"; break; case 8: ls_ret_4 = "too frequent requests"; break; case 9: ls_ret_4 = "malfunctional trade operation (never returned error)"; break; case 64: ls_ret_4 = "account disabled"; break; case 65: ls_ret_4 = "invalid account"; break; case 128: ls_ret_4 = "trade timeout"; break; case 129: ls_ret_4 = "invalid price"; break; case 130: ls_ret_4 = "invalid stops"; break; case 131: ls_ret_4 = "invalid trade volume"; break; case 132: ls_ret_4 = "market is closed"; break; case 133: ls_ret_4 = "trade is disabled"; break; case 134: ls_ret_4 = "not enough money"; break; case 135: ls_ret_4 = "price changed"; break; case 136: ls_ret_4 = "off quotes"; break; case 137: ls_ret_4 = "broker is busy (never returned error)"; break; case 138: ls_ret_4 = "requote"; break; case 139: ls_ret_4 = "order is locked"; break; case 140: ls_ret_4 = "long positions only allowed"; break; case 141: ls_ret_4 = "too many requests"; break; case 145: ls_ret_4 = "modification denied because order too close to market"; break; case 146: ls_ret_4 = "trade context is busy"; break; case 147: ls_ret_4 = "expirations are denied by broker"; break; case 148: ls_ret_4 = "amount of open and pending orders has reached the limit"; break; case 4000: ls_ret_4 = "no error (never generated code)"; break; case 4001: ls_ret_4 = "wrong function pointer"; break; case 4002: ls_ret_4 = "array index is out of range"; break; case 4003: ls_ret_4 = "no memory for function call stack"; break; case 4004: ls_ret_4 = "recursive stack overflow"; break; case 4005: ls_ret_4 = "not enough stack for parameter"; break; case 4006: ls_ret_4 = "no memory for parameter string"; break; case 4007: ls_ret_4 = "no memory for temp string"; break; case 4008: ls_ret_4 = "not initialized string"; break; case 4009: ls_ret_4 = "not initialized string in array"; break; case 4010: ls_ret_4 = "no memory for array\' string"; break; case 4011: ls_ret_4 = "too long string"; break; case 4012: ls_ret_4 = "remainder from zero divide"; break; case 4013: ls_ret_4 = "zero divide"; break; case 4014: ls_ret_4 = "unknown command"; break; case 4015: ls_ret_4 = "wrong jump (never generated error)"; break; case 4016: ls_ret_4 = "not initialized array"; break; case 4017: ls_ret_4 = "dll calls are not allowed"; break; case 4018: ls_ret_4 = "cannot load library"; break; case 4019: ls_ret_4 = "cannot call function"; break; case 4020: ls_ret_4 = "expert function calls are not allowed"; break; case 4021: ls_ret_4 = "not enough memory for temp string returned from function"; break; case 4022: ls_ret_4 = "system is busy (never generated error)"; break; case 4050: ls_ret_4 = "invalid function parameters count"; break; case 4051: ls_ret_4 = "invalid function parameter value"; break; case 4052: ls_ret_4 = "string function internal error"; break; case 4053: ls_ret_4 = "some array error"; break; case 4054: ls_ret_4 = "incorrect series array using"; break; case 4055: ls_ret_4 = "custom indicator error"; break; case 4056: ls_ret_4 = "arrays are incompatible"; break; case 4057: ls_ret_4 = "global variables processing error"; break; case 4058: ls_ret_4 = "global variable not found"; break; case 4059: ls_ret_4 = "function is not allowed in testing mode"; break; case 4060: ls_ret_4 = "function is not confirmed"; break; case 4061: ls_ret_4 = "send mail error"; break; case 4062: ls_ret_4 = "string parameter expected"; break; case 4063: ls_ret_4 = "integer parameter expected"; break; case 4064: ls_ret_4 = "double parameter expected"; break; case 4065: ls_ret_4 = "array as parameter expected"; break; case 4066: ls_ret_4 = "requested history data in update state"; break; case 4099: ls_ret_4 = "end of file"; break; case 4100: ls_ret_4 = "some file error"; break; case 4101: ls_ret_4 = "wrong file name"; break; case 4102: ls_ret_4 = "too many opened files"; break; case 4103: ls_ret_4 = "cannot open file"; break; case 4104: ls_ret_4 = "incompatible access to a file"; break; case 4105: ls_ret_4 = "no order selected"; break; case 4106: ls_ret_4 = "unknown symbol"; break; case 4107: ls_ret_4 = "invalid price parameter for trade function"; break; case 4108: ls_ret_4 = "invalid ticket"; break; case 4109: ls_ret_4 = "trade is not allowed in the expert properties"; break; case 4110: ls_ret_4 = "longs are not allowed in the expert properties"; break; case 4111: ls_ret_4 = "shorts are not allowed in the expert properties"; break; case 4200: ls_ret_4 = "object is already exist"; break; case 4201: ls_ret_4 = "unknown object property"; break; case 4202: ls_ret_4 = "object is not exist"; break; case 4203: ls_ret_4 = "unknown object type"; break; case 4204: ls_ret_4 = "no object name"; break; case 4205: ls_ret_4 = "object coordinates error"; break; case 4206: ls_ret_4 = "no specified subwindow"; break; default: ls_ret_4 = "unknown error"; } return (ls_ret_4); } void ClosePositions() { int li_0; int l_magic_4; double l_ord_open_price_8; int li_16; int li_20; for (int l_pos_24 = 0; l_pos_24 < OrdersTotal(); l_pos_24++) { if (OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES) == FALSE) break; l_magic_4 = OrderMagicNumber(); if (CheckMagigNumber(l_magic_4) == 0 || OrderSymbol() != Symbol()) continue; l_ord_open_price_8 = OrderOpenPrice(); if (OrderType() == OP_BUY) li_20 = 1; else li_20 = 2; if (l_magic_4 == 395790116) { if (!IsTesting()) RefreshRates(); li_16 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Violet); if (li_16 == 0) { AlertIsError(GetLastError()); return; } InitExit(li_20, gd_1108, 3, l_magic_4); FileWriteTradeOutcome(l_ord_open_price_8, OrderClosePrice(), l_magic_4, OrderType()); } else { if (l_magic_4 == 395790115) { if (!IsTesting()) RefreshRates(); li_16 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Violet); if (li_16 == 0) { AlertIsError(GetLastError()); return; } InitExit(li_20, gd_1168, 3, l_magic_4); FileWriteTradeOutcome(l_ord_open_price_8, OrderClosePrice(), l_magic_4, OrderType()); } else { if (CheckSwingMagigNumber(l_magic_4) == 1) { li_0 = ReturnSwingMagigNumber(l_magic_4); if (!IsTesting()) RefreshRates(); li_16 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Violet); if (li_16 == 0) { AlertIsError(GetLastError()); return; } InitExit(li_20, gda_1128[li_0], 3, l_magic_4); FileWriteTradeOutcome(l_ord_open_price_8, OrderClosePrice(), l_magic_4, OrderType()); } } } } } void InitPhaseCheckOpenPositions() { int li_0; int l_magic_4; double l_ord_open_price_8; for (int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) { if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES) == FALSE) break; l_magic_4 = OrderMagicNumber(); if (CheckMagigNumber(l_magic_4) == 0 || OrderSymbol() != Symbol()) continue; l_ord_open_price_8 = OrderOpenPrice(); if (OrderType() == OP_BUY) { if (l_magic_4 == 395790116) { if (OrderStopLoss() != 0.0) { gi_1116 = TRUE; gd_1108 = OrderStopLoss() + 0.001; } if (OrderTakeProfit() != 0.0) { gi_1096 = TRUE; gd_1100 = OrderTakeProfit() - 0.001; } } else { if (l_magic_4 == 395790115) { if (OrderStopLoss() != 0.0) { gi_1176 = TRUE; gd_1168 = OrderStopLoss() + 0.001; gi_1144 = TRUE; gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gi_1188 = TRUE; gd_1180 = OrderOpenPrice() - gd_160 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); } if (OrderTakeProfit() != 0.0) { gi_1156 = TRUE; gd_1160 = OrderTakeProfit() - 0.001; } } else { if (CheckSwingMagigNumber(l_magic_4) == 1) { li_0 = ReturnSwingMagigNumber(l_magic_4); if (OrderStopLoss() != 0.0) { gba_1132[li_0] = 1; gda_1128[li_0] = OrderStopLoss() + 0.001; gba_1140[li_0] = 1; gda_1136[li_0] = OrderOpenPrice() - gd_272 * gd_288 * gi_252 / 10000.0; } if (OrderTakeProfit() != 0.0) { gba_1120[li_0] = 1; gda_1124[li_0] = OrderTakeProfit() - 0.001; } } } } } else { if (OrderType() == OP_SELL) { if (l_magic_4 == 395790116) { if (OrderStopLoss() != 0.0) { gi_1116 = TRUE; gd_1108 = OrderStopLoss() - 0.001; } if (OrderTakeProfit() != 0.0) { gi_1096 = TRUE; gd_1100 = OrderTakeProfit() + 0.001; } } else { if (l_magic_4 == 395790115) { if (OrderStopLoss() != 0.0) { gi_1176 = TRUE; gd_1168 = OrderStopLoss() - 0.001; gi_1144 = TRUE; gd_1148 = gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); gi_1188 = TRUE; gd_1180 = OrderOpenPrice() + gd_160 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4); } if (OrderTakeProfit() != 0.0) { gi_1156 = TRUE; gd_1160 = OrderTakeProfit() + 0.001; } } else { if (CheckSwingMagigNumber(l_magic_4) == 1) { li_0 = ReturnSwingMagigNumber(l_magic_4); if (OrderStopLoss() != 0.0) { gba_1132[li_0] = 1; gda_1128[li_0] = OrderStopLoss() - 0.001; gba_1140[li_0] = 1; gda_1136[li_0] = OrderOpenPrice() + gd_272 * gd_288 * gi_252 / 10000.0; } if (OrderTakeProfit() != 0.0) { gba_1120[li_0] = 1; gda_1124[li_0] = OrderTakeProfit() + 0.001; } } } } } } } } int CheckForOppositeOpenOrders(string as_unused_0, int a_cmd_8) { int l_count_12 = 0; for (int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) { if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderSymbol() == Symbol() && OrderType() == a_cmd_8) l_count_12++; } return (l_count_12); } void CheckForOpenICWR() { int li_0; int li_4; int li_8; double ld_12; if (gi_1204 == TRUE) { if (gi_1216 == 1 && NormalizeDouble(iClose(NULL, PERIOD_M1, 0), 4) > gd_1208 && gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_SELL) == 0) { if (gi_476 == 0) gd_1108 = gd_1100; else { if (gi_476 == 1) gd_1108 = NormalizeDouble(Bid, 4) - gi_824 / 10000.0; else if (gi_476 == 2) gd_1108 = gd_1192; } gd_1220 = gd_1208; gi_1096 = FALSE; FindLevels(395790116); FindTP_SR(1, 395790116); ld_12 = MoneyManagement(NormalizeDouble(Ask, 4), gd_1108, 395790116, OP_BUY, 0); if (gi_1204 == FALSE && ld_12 != 0.0) { if (gi_1096 == TRUE && gd_1100 - Ask <= 0.001 || NormalizeDouble(Bid, 4) - gd_1108 <= 0.001) return; gi_1116 = TRUE; gi_1236 = 0; if (!IsTesting()) RefreshRates(); if (gi_1096 == TRUE) li_8 = OrderSendReliable(Symbol(), OP_BUY, ld_12, Ask, gi_1868, gd_1108 - 0.001, gd_1100 + 0.001, "", 395790116, 0, Blue); else li_8 = OrderSendReliable(Symbol(), OP_BUY, ld_12, Ask, gi_1868, gd_1108 - 0.001, 0, "", 395790116, 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open buy " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Ask, Digits)); if (li_8 < 0) { AlertIsError(GetLastError()); return; } gi_1200 = TRUE; return; } } else { if (gi_1216 == 2 && NormalizeDouble(iClose(NULL, PERIOD_M1, 0), 4) < gd_1208 && gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_BUY) == 0) { if (gi_476 == 0) gd_1108 = gd_1100; else { if (gi_476 == 1) gd_1108 = NormalizeDouble(Ask, 4) + gi_824 / 10000.0; else if (gi_476 == 2) gd_1108 = gd_1192; } gd_1220 = gd_1208; gi_1096 = FALSE; FindLevels(395790116); FindTP_SR(2, 395790116); ld_12 = MoneyManagement(NormalizeDouble(Bid, 4), gd_1108, 395790116, OP_SELL, 0); if (gi_1204 == FALSE && ld_12 != 0.0) { if (gi_1096 == TRUE && Bid - gd_1100 <= 0.001 || gd_1108 - NormalizeDouble(Ask, 4) <= 0.001) return; gi_1116 = TRUE; gi_1236 = 0; if (!IsTesting()) RefreshRates(); if (gi_1096 == TRUE) li_8 = OrderSendReliable(Symbol(), OP_SELL, ld_12, Bid, gi_1868, gd_1108 + 0.001, gd_1100 - 0.001, "", 395790116, 0, Blue); else li_8 = OrderSendReliable(Symbol(), OP_SELL, ld_12, Bid, gi_1868, gd_1108 + 0.001, 0, "", 395790116, 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open sell " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Bid, Digits)); if (li_8 < 0) { AlertIsError(GetLastError()); return; } gi_1200 = TRUE; return; } } } } int li_20 = CheckWaveSignal(4, 0); if (li_20 == 1 && gi_1204 == FALSE || gi_1216 == 2 && gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_SELL) == 0) { li_0 = CheckForLongTermTrend(1); li_4 = CheckForSidewaysMarket(gd_792, gd_784); if (li_0 == 1 && li_4 == 1) { gi_1096 = FALSE; if (gi_468 == 1) { FindLevels(395790116); FindTP_SR(1, 395790116); } gd_1108 = NormalizeDouble(Bid, 4) - gi_824 / 10000.0; gd_1192 = gd_1108; ld_12 = MoneyManagement(NormalizeDouble(Ask, 4), gd_1108, 395790116, OP_BUY, 0); if (gi_468 == 0 || gi_1204 == FALSE && ld_12 != 0.0) { if (gi_1096 == TRUE && gd_1100 - Ask <= 0.001 || NormalizeDouble(Bid, 4) - gd_1108 <= 0.001) return; gi_1116 = TRUE; gi_1228 = TRUE; gi_1236 = 0; if (!IsTesting()) RefreshRates(); if (gi_1096 == TRUE) li_8 = OrderSendReliable(Symbol(), OP_BUY, ld_12, Ask, gi_1868, gd_1108 - 0.001, gd_1100 + 0.001, "", 395790116, 0, Blue); else li_8 = OrderSendReliable(Symbol(), OP_BUY, ld_12, Ask, gi_1868, gd_1108 - 0.001, 0, "", 395790116, 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open buy " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Ask, Digits)); if (li_8 < 0) AlertIsError(GetLastError()); } } } else { if (li_20 == 2 && gi_1204 == FALSE || gi_1216 == 1 && gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_BUY) == 0) { li_0 = CheckForLongTermTrend(2); li_4 = CheckForSidewaysMarket(gd_792, gd_784); if (li_0 == 1 && li_4 == 1) { gi_1096 = FALSE; if (gi_468 == 1) { FindLevels(395790116); FindTP_SR(2, 395790116); } gd_1108 = NormalizeDouble(Ask, 4) + gi_824 / 10000.0; gd_1192 = gd_1108; ld_12 = MoneyManagement(NormalizeDouble(Bid, 4), gd_1108, 395790116, OP_SELL, 0); if (gi_468 == 0 || gi_1204 == FALSE && ld_12 != 0.0) { if (gi_1096 == TRUE && Bid - gd_1100 <= 0.001 || gd_1108 - NormalizeDouble(Ask, 4) <= 0.001) return; gi_1116 = TRUE; gi_1228 = TRUE; gi_1236 = 0; if (!IsTesting()) RefreshRates(); if (gi_1096 == TRUE) li_8 = OrderSendReliable(Symbol(), OP_SELL, ld_12, Bid, gi_1868, gd_1108 + 0.001, gd_1100 - 0.001, "", 395790116, 0, Blue); else li_8 = OrderSendReliable(Symbol(), OP_SELL, ld_12, Bid, gi_1868, gd_1108 + 0.001, 0, "", 395790116, 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open sell " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Bid, Digits)); if (li_8 < 0) AlertIsError(GetLastError()); } } } } } int RecognizeSwingInit(int ai_0) { int li_4; int li_8 = iBars(NULL, g_timeframe_216); if (g_timeframe_216 == PERIOD_M1) li_4 = 43200; else if (g_timeframe_216 == PERIOD_M5) li_4 = 8640; gia_1520[ai_0] = 0; gia_1524[ai_0] = 0; gda_1536[ai_0] = NormalizeDouble(iHigh(NULL, g_timeframe_216, li_4 + 1), 4); gda_1540[ai_0] = NormalizeDouble(iLow(NULL, g_timeframe_216, li_4 + 1), 4); gia_1528[ai_0] = li_4 + 1; gia_1532[ai_0] = li_4 + 1; gia_1504[ai_0] = 0; gda_228[ai_0] = 5000; for (int li_12 = li_4; li_12 > 1; li_12--) SwingAlgorithm(li_12, ai_0, 1); if (li_4 > li_8) { if (li_8 != 0) gia_1508[ai_0] = gia_1504[ai_0] * li_4 / li_8; else gia_1508[ai_0] = 1000; } else gia_1508[ai_0] = gia_1504[ai_0]; if (gi_220 == 1) gda_228[ai_0] = gi_224 / 10000.0; else gda_228[ai_0] = CheckHeightOfSwing(ai_0); gba_1476[ai_0] = 0; return (0); } void RecognizeSwing(int ai_0) { if (g_timeframe_216 == PERIOD_M1) { if (g_datetime_1332 == iTime(NULL, g_timeframe_216, 0)) return; } else { if (g_timeframe_216 == PERIOD_M5) if (g_datetime_1336 == iTime(NULL, g_timeframe_216, 0)) return; } SwingAlgorithm(1, ai_0, 0); } int CheckForOpenSwing(int ai_0) { double ld_4; double ld_12; double ld_20; int li_28; int li_32; double ld_36; int li_unused_44 = 0; if (gda_1544[ai_0][2][1] == 0.0) return (0); if (gba_1516[ai_0] == 1) { if ((gda_1544[ai_0][0][2] == 1.0 && gda_1544[ai_0][1][2] == -1.0 && gda_1544[ai_0][2][2] == 1.0) || (gda_1544[ai_0][0][2] == -1.0 && gda_1544[ai_0][1][2] == 1.0 && gda_1544[ai_0][2][2] == -1.0)) { ld_20 = MathAbs(gda_1544[ai_0][1][1] - gda_1544[ai_0][0][1]); if (ld_20 > gi_208 / 10000.0) gi_212 = gi_204; else { if (gi_208 / 10000.0 - gda_228[ai_0] != 0.0) gi_212 = gi_200 + (ld_20 - gda_228[ai_0]) / (gi_208 / 10000.0 - gda_228[ai_0]) * (gi_204 - gi_200); else gi_212 = gi_200; } if (MathAbs(gda_1544[ai_0][0][1] - gda_1544[ai_0][2][1]) < gi_212 / 10000.0 && MathAbs(gda_1544[ai_0][0][1] - gda_1544[ai_0][1][1]) > gda_228[ai_0]) { ld_36 = gda_1544[ai_0][0][1] + gd_256 * (gda_1544[ai_0][1][1] - gda_1544[ai_0][0][1]); ld_4 = NormalizeDouble(iClose(NULL, PERIOD_M1, 0), 4); if (gda_1544[ai_0][0][2] == -1.0) ld_12 = (ld_4 - ld_36) / 0.0001; else if (gda_1544[ai_0][0][2] == 1.0) ld_12 = (ld_36 - ld_4) / 0.0001; if (ld_20 > gi_248 / 10000.0) gi_252 = gi_244; else { if (gi_248 / 10000.0 - gda_228[ai_0] != 0.0) gi_252 = gi_240 + (ld_20 - gda_228[ai_0]) / (gi_248 / 10000.0 - gda_228[ai_0]) * (gi_244 - gi_240); else gi_252 = gi_240; } if (ld_12 > gd_264 * gi_252) { if (gda_1544[ai_0][0][2] == -1.0 && gi_300 == 0 || CheckMiniSwing() == -1) { li_32 = ConfirmSwing(2); if (li_32 == 1) if (gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_BUY) == 0) li_28 = Open_SwingOrder(2, ai_0); } else { if (gda_1544[ai_0][0][2] == 1.0 && gi_300 == 0 || CheckMiniSwing() == 1) { li_32 = ConfirmSwing(1); if (li_32 == 1) if (gi_88 == FALSE || CheckForOppositeOpenOrders(Symbol(), OP_SELL) == 0) li_28 = Open_SwingOrder(1, ai_0); } } } } } gba_1516[ai_0] = 0; } return (0); } int Open_SwingOrder(int ai_0, int ai_4) { int li_8; double ld_12; if (ai_0 == 1) { gda_1124[ai_4] = NormalizeDouble(Ask, 4) + gi_252 / 10000.0; gba_1120[ai_4] = 1; if (gi_284 == 1) gda_1128[ai_4] = NormalizeDouble(Bid, 4) - gd_288 * gi_252 / 10000.0; else if (gi_284 == 2) gda_1128[ai_4] = gda_1544[ai_4][0][1] - gi_296 / 10000.0; gda_1136[ai_4] = NormalizeDouble(Bid, 4) - gd_272 * gd_288 * gi_252 / 10000.0; gba_1132[ai_4] = 1; gba_1140[ai_4] = 1; if (gda_1124[ai_4] - NormalizeDouble(Ask, 4) <= 0.001 || NormalizeDouble(Bid, 4) - gda_1128[ai_4] <= 0.001) return (0); ld_12 = MoneyManagement(NormalizeDouble(Ask, 4), gda_1128[ai_4], gia_76[ai_4], OP_BUY, 0); if (!IsTesting()) RefreshRates(); if (ld_12 != 0.0) li_8 = OrderSendReliable(Symbol(), OP_BUY, ld_12, Ask, gi_1868, gda_1128[ai_4] - 0.001, gda_1124[ai_4] + 0.001, "", gia_76[ai_4], 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open buy " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Ask, Digits)); if (li_8 < 0) { AlertIsError(GetLastError()); return (0); } if (li_8 > 0) return (1); return (0); } if (ai_0 == 2) { gda_1124[ai_4] = NormalizeDouble(Bid, 4) - gi_252 / 10000.0; gba_1120[ai_4] = 1; if (gi_284 == 1) gda_1128[ai_4] = NormalizeDouble(Ask, 4) + gd_288 * gi_252 / 10000.0; else if (gi_284 == 2) gda_1128[ai_4] = gda_1544[ai_4][0][1] + gi_296 / 10000.0; gda_1136[ai_4] = NormalizeDouble(Ask, 4) + gd_272 * gd_288 * gi_252 / 10000.0; gba_1132[ai_4] = 1; gba_1140[ai_4] = 1; if (NormalizeDouble(Bid, 4) - gda_1124[ai_4] <= 0.001 || gda_1128[ai_4] - NormalizeDouble(Ask, 4) <= 0.001) return (0); ld_12 = MoneyManagement(NormalizeDouble(Bid, 4), gda_1128[ai_4], gia_76[ai_4], OP_SELL, 0); if (!IsTesting()) RefreshRates(); if (ld_12 != 0.0) li_8 = OrderSendReliable(Symbol(), OP_SELL, ld_12, Bid, gi_1868, gda_1128[ai_4] + 0.001, gda_1124[ai_4] - 0.001, "", gia_76[ai_4], 0, Blue); if (EmailNotification == TRUE && li_8 != -1) SendMail("Forex Derivative 2.0 for " + Symbol(), "Open sell " + DoubleToStr(ld_12, 2) + " " + Symbol() + " at " + DoubleToStr(Bid, Digits)); if (li_8 < 0) { AlertIsError(GetLastError()); return (0); } if (li_8 > 0) return (1); return (0); } return (0); } void SwingAlgorithm(int ai_0, int ai_4, int ai_8) { double ld_12 = NormalizeDouble(iLow(NULL, g_timeframe_216, iLowest(NULL, g_timeframe_216, MODE_LOW, gia_1548[ai_4], ai_0 + 1)), 4); double ld_20 = NormalizeDouble(iHigh(NULL, g_timeframe_216, iHighest(NULL, g_timeframe_216, MODE_HIGH, gia_1548[ai_4], ai_0 + 1)), 4); double ld_28 = NormalizeDouble(iLow(NULL, g_timeframe_216, ai_0), 4); double ld_36 = NormalizeDouble(iHigh(NULL, g_timeframe_216, ai_0), 4); if (ld_28 < ld_12 && ld_36 > ld_20) { gia_1524[ai_4] = 2; if (gia_1520[ai_4] == 1) gia_1528[ai_4] = ai_0 + 1; if (gia_1520[ai_4] == -1) gia_1532[ai_4] = ai_0 + 1; } else { if (ld_28 < ld_12) gia_1524[ai_4] = -1; if (ld_36 > ld_20) gia_1524[ai_4] = 1; } if (gia_1524[ai_4] != gia_1520[ai_4] && gia_1520[ai_4] != 0) { if (gia_1524[ai_4] == 2) { gia_1524[ai_4] = -gia_1520[ai_4]; gda_1536[ai_4] = ld_36; gda_1540[ai_4] = ld_28; } if (gia_1524[ai_4] == 1) { gda_1544[ai_4][2][0] = gda_1544[ai_4][1][0]; gda_1544[ai_4][2][1] = gda_1544[ai_4][1][1]; gda_1544[ai_4][2][2] = gda_1544[ai_4][1][2]; gda_1544[ai_4][1][0] = gda_1544[ai_4][0][0]; gda_1544[ai_4][1][1] = gda_1544[ai_4][0][1]; gda_1544[ai_4][1][2] = gda_1544[ai_4][0][2]; gda_1544[ai_4][0][0] = gia_1532[ai_4]; gda_1544[ai_4][0][1] = gda_1540[ai_4]; gda_1544[ai_4][0][2] = 1; gd_1708 = MathAbs(gda_1544[ai_4][0][1] - gda_1544[ai_4][1][1]); if (ai_8 == 1) { gia_1504[ai_4]++; if (ai_4 == 0) ArrayResize(gda_1480, gia_1504[ai_4]); else { if (ai_4 == 1) ArrayResize(gda_1484, gia_1504[ai_4]); else { if (ai_4 == 2) ArrayResize(gda_1488, gia_1504[ai_4]); else { if (ai_4 == 3) ArrayResize(gda_1492, gia_1504[ai_4]); else { if (ai_4 == 4) ArrayResize(gda_1496, gia_1504[ai_4]); else if (ai_4 == 5) ArrayResize(gda_1500, gia_1504[ai_4]); } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } } else { if (ai_8 == 0) { if (gia_1504[ai_4] < gia_1508[ai_4]) { gia_1504[ai_4]++; if (ai_4 == 0) ArrayResize(gda_1480, gia_1504[ai_4]); else { if (ai_4 == 1) ArrayResize(gda_1484, gia_1504[ai_4]); else { if (ai_4 == 2) ArrayResize(gda_1488, gia_1504[ai_4]); else { if (ai_4 == 3) ArrayResize(gda_1492, gia_1504[ai_4]); else { if (ai_4 == 4) ArrayResize(gda_1496, gia_1504[ai_4]); else if (ai_4 == 5) ArrayResize(gda_1500, gia_1504[ai_4]); } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } if (gi_220 != 1) gda_228[ai_4] = CheckHeightOfSwing(ai_4); } else { for (int l_index_44 = 0; l_index_44 < gia_1504[ai_4] - 1; l_index_44++) { if (ai_4 == 0) gda_1480[l_index_44] = gda_1480[l_index_44 + 1]; else { if (ai_4 == 1) gda_1484[l_index_44] = gda_1484[l_index_44 + 1]; else { if (ai_4 == 2) gda_1488[l_index_44] = gda_1488[l_index_44 + 1]; else { if (ai_4 == 3) gda_1492[l_index_44] = gda_1492[l_index_44 + 1]; else { if (ai_4 == 4) gda_1496[l_index_44] = gda_1496[l_index_44 + 1]; else if (ai_4 == 5) gda_1500[l_index_44] = gda_1500[l_index_44 + 1]; } } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } if (gi_220 != 1) gda_228[ai_4] = CheckHeightOfSwing(ai_4); } } } gba_1516[ai_4] = 1; } if (gia_1524[ai_4] == -1) { gda_1544[ai_4][2][0] = gda_1544[ai_4][1][0]; gda_1544[ai_4][2][1] = gda_1544[ai_4][1][1]; gda_1544[ai_4][2][2] = gda_1544[ai_4][1][2]; gda_1544[ai_4][1][0] = gda_1544[ai_4][0][0]; gda_1544[ai_4][1][1] = gda_1544[ai_4][0][1]; gda_1544[ai_4][1][2] = gda_1544[ai_4][0][2]; gda_1544[ai_4][0][0] = gia_1528[ai_4]; gda_1544[ai_4][0][1] = gda_1536[ai_4]; gda_1544[ai_4][0][2] = -1; gd_1708 = MathAbs(gda_1544[ai_4][0][1] - gda_1544[ai_4][1][1]); if (ai_8 == 1) { gia_1504[ai_4]++; if (ai_4 == 0) ArrayResize(gda_1480, gia_1504[ai_4]); else { if (ai_4 == 1) ArrayResize(gda_1484, gia_1504[ai_4]); else { if (ai_4 == 2) ArrayResize(gda_1488, gia_1504[ai_4]); else { if (ai_4 == 3) ArrayResize(gda_1492, gia_1504[ai_4]); else { if (ai_4 == 4) ArrayResize(gda_1496, gia_1504[ai_4]); else if (ai_4 == 5) ArrayResize(gda_1500, gia_1504[ai_4]); } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } } else { if (ai_8 == 0) { if (gia_1504[ai_4] < gia_1508[ai_4]) { gia_1504[ai_4]++; if (ai_4 == 0) ArrayResize(gda_1480, gia_1504[ai_4]); else { if (ai_4 == 1) ArrayResize(gda_1484, gia_1504[ai_4]); else { if (ai_4 == 2) ArrayResize(gda_1488, gia_1504[ai_4]); else { if (ai_4 == 3) ArrayResize(gda_1492, gia_1504[ai_4]); else { if (ai_4 == 4) ArrayResize(gda_1496, gia_1504[ai_4]); else if (ai_4 == 5) ArrayResize(gda_1500, gia_1504[ai_4]); } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } if (gi_220 != 1) gda_228[ai_4] = CheckHeightOfSwing(ai_4); } else { for (l_index_44 = 0; l_index_44 < gia_1504[ai_4] - 1; l_index_44++) { if (ai_4 == 0) gda_1480[l_index_44] = gda_1480[l_index_44 + 1]; else { if (ai_4 == 1) gda_1484[l_index_44] = gda_1484[l_index_44 + 1]; else { if (ai_4 == 2) gda_1488[l_index_44] = gda_1488[l_index_44 + 1]; else { if (ai_4 == 3) gda_1492[l_index_44] = gda_1492[l_index_44 + 1]; else { if (ai_4 == 4) gda_1496[l_index_44] = gda_1496[l_index_44 + 1]; else if (ai_4 == 5) gda_1500[l_index_44] = gda_1500[l_index_44 + 1]; } } } } } if (ai_4 == 0) gda_1480[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 1) gda_1484[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 2) gda_1488[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 3) gda_1492[gia_1504[ai_4] - 1] = gd_1708; else { if (ai_4 == 4) gda_1496[gia_1504[ai_4] - 1] = gd_1708; else if (ai_4 == 5) gda_1500[gia_1504[ai_4] - 1] = gd_1708; } } } } if (gi_220 != 1) gda_228[ai_4] = CheckHeightOfSwing(ai_4); } } } gba_1516[ai_4] = 1; } gda_1536[ai_4] = ld_36; gda_1540[ai_4] = ld_28; } if (gia_1524[ai_4] == 1) { if (ld_36 >= gda_1536[ai_4]) { gda_1536[ai_4] = ld_36; gia_1528[ai_4] = ai_0; } } if (gia_1524[ai_4] == -1) { if (ld_28 <= gda_1540[ai_4]) { gda_1540[ai_4] = ld_28; gia_1532[ai_4] = ai_0; } } gia_1520[ai_4] = gia_1524[ai_4]; gda_1544[ai_4][2][0]++; gda_1544[ai_4][1][0]++; gda_1544[ai_4][0][0]++; gia_1532[ai_4]++; gia_1528[ai_4]++; } int ConfirmSwing(int ai_0) { double ld_4; double ld_12; double ld_20; double ld_28; double ld_36; switch (gi_308) { case 0: return (1); case 1: ld_20 = NormalizeDouble(iMA(NULL, g_timeframe_316, g_period_320, 0, g_ma_method_324, PRICE_CLOSE, 0), 4); ld_28 = NormalizeDouble(iMA(NULL, g_timeframe_316, g_period_320, 0, g_ma_method_324, PRICE_CLOSE, gi_328), 4); if (gi_328 != 0) ld_36 = MathAbs((ld_20 - ld_28) / 0.0001 / gi_328); else ld_36 = 0; if (ld_36 < gd_332) return (1); return (0); case 2: ld_4 = NormalizeDouble(iDeMarker(NULL, g_timeframe_348, g_period_340, 0), 4); Print("dMarker: ", ld_4); if (ai_0 == 1 && ld_4 < gd_360) return (1); if (ai_0 == 2 && ld_4 > 1 - gd_360) return (1); return (0); case 3: ld_4 = NormalizeDouble(iDeMarker(NULL, g_timeframe_348, g_period_340, 0), 4); Print("dMarker: ", ld_4); if (ai_0 == 1 && ld_4 > gd_352 + 0.5 && ld_4 < 1 - gd_360) return (1); if (ai_0 == 2 && ld_4 < 0.5 - gd_352 && ld_4 > gd_360) return (1); return (0); case 4: ld_4 = NormalizeDouble(iDeMarker(NULL, g_timeframe_348, g_period_340, 0), 4); ld_12 = (-1.0 * NormalizeDouble(iWPR(NULL, g_timeframe_348, g_period_340, 0), 4)) / 100.0; if (ai_0 == 1 && ld_4 > gd_352 + 0.5 && ld_12 > gd_360 && ld_12 < 1 - gd_360) return (1); if (ai_0 == 2 && ld_4 < 0.5 - gd_352 && ld_12 > gd_360 && ld_12 < 1 - gd_360) return (1); return (0); } return (0); } int CheckMiniSwing() { double ld_ret_0; double ld_8 = NormalizeDouble(iLow(NULL, g_timeframe_216, iLowest(NULL, g_timeframe_216, MODE_LOW, gi_304, 2)), 4); double ld_16 = NormalizeDouble(iHigh(NULL, g_timeframe_216, iHighest(NULL, g_timeframe_216, MODE_HIGH, gi_304, 2)), 4); double ld_24 = NormalizeDouble(iLow(NULL, g_timeframe_216, 1), 4); double ld_32 = NormalizeDouble(iHigh(NULL, g_timeframe_216, 1), 4); double ld_40 = NormalizeDouble(iOpen(NULL, g_timeframe_216, 0), 4); if (ld_24 < ld_8 && ld_32 > ld_16) ld_ret_0 = 0; else { if (ld_32 > ld_16 && ld_40 > ld_24) ld_ret_0 = 1; else { if (ld_24 < ld_8 && ld_40 < ld_32) ld_ret_0 = -1; else ld_ret_0 = 0; } } return (ld_ret_0); } double CheckHeightOfSwing(int ai_0) { double lda_4[]; if (gia_1504[ai_0] <= 0) return (10000); double ld_8 = gia_1504[ai_0] * gd_232; int li_16 = MathMax(ld_8 - 1.0, 0); ArrayResize(lda_4, gia_1504[ai_0]); if (ai_0 == 0) ArrayCopy(lda_4, gda_1480, 0, 0, WHOLE_ARRAY); else { if (ai_0 == 1) ArrayCopy(lda_4, gda_1484, 0, 0, WHOLE_ARRAY); else { if (ai_0 == 2) ArrayCopy(lda_4, gda_1488, 0, 0, WHOLE_ARRAY); else { if (ai_0 == 3) ArrayCopy(lda_4, gda_1492, 0, 0, WHOLE_ARRAY); else { if (ai_0 == 4) ArrayCopy(lda_4, gda_1496, 0, 0, WHOLE_ARRAY); else if (ai_0 == 5) ArrayCopy(lda_4, gda_1500, 0, 0, WHOLE_ARRAY); } } } } ArraySort(lda_4, WHOLE_ARRAY, 0, MODE_ASCEND); double ld_ret_20 = lda_4[li_16]; return (ld_ret_20); } double MoneyManagement(double ad_unused_0, double ad_unused_8, int ai_16, int a_cmd_20, int ai_24) { int li_28; double ld_32; double ld_40; double ld_48; double lda_56[3]; double ld_60; double ld_ret_68; double ld_76; double ld_84; double ld_92; double ld_100; if (gi_1048 == TRUE) return (0); if (ai_16 == 395790115) li_28 = 0; else { if (ai_16 == 395790116) li_28 = 1; else { if (CheckSwingMagigNumber(ai_16) == 1) li_28 = 2; else li_28 = -1; } } lda_56[0] = 10.0 * (gd_152 * NormalizeDouble(iATR(NULL, PERIOD_M5, 1000, 0), 4) / 0.0001); lda_56[1] = 10 * gi_824; lda_56[2] = 10.0 * (gd_288 * gi_240); double l_minlot_108 = MarketInfo(Symbol(), MODE_MINLOT); double l_maxlot_116 = MarketInfo(Symbol(), MODE_MAXLOT); double l_lotstep_124 = MarketInfo(Symbol(), MODE_LOTSTEP); double l_lotsize_132 = MarketInfo(Symbol(), MODE_LOTSIZE); if (l_lotsize_132 != 0.0) ld_60 = 100000 / l_lotsize_132; double l_tickvalue_140 = MarketInfo(Symbol(), MODE_TICKVALUE); double l_point_148 = MarketInfo("EURUSD", MODE_POINT); int l_digits_156 = MarketInfo("EURUSD", MODE_DIGITS); double ld_160 = l_tickvalue_140 * MathPow(10, l_digits_156) / MathPow(10, 4); double ld_168 = MarketInfo("EURUSD", MODE_MARGINREQUIRED) * ld_60; double l_lotsize_176 = MarketInfo(Symbol(), MODE_LOTSIZE); double ld_184 = AccountBalance(); if (MoneyManagement == TRUE || MoneyManagement == 2 || MoneyManagement == 3 && 1) { if (MoneyManagement == TRUE) { ld_84 = gd_984 * MathPow(ld_184, gd_992); ld_48 = gd_968 * MathPow(ld_184, gd_976); } else { if (MoneyManagement == 2) { if (MathPow(ld_184, 0.699) != 0.0) ld_92 = ld_184 * gd_960 / 100.0 / MathPow(ld_184, 0.699); else ld_92 = 0; ld_84 = ld_92 * MathPow(ld_184, 0.699); if (MathPow(ld_184, 0.699) != 0.0) ld_100 = ld_184 * gd_952 / 100.0 / MathPow(ld_184, 0.699); else ld_100 = 0; ld_48 = ld_100 * MathPow(ld_184, 0.699); } else { if (MoneyManagement == 3) { if (ld_184 < 1000.0) ld_84 = gd_912; else { if (ld_184 > 1000000.0) ld_84 = gd_936; else { if (ld_184 >= 1000.0 && ld_184 < 10000.0) ld_84 = gd_912 + (ld_184 - 1000.0) / 9000.0 * (gd_920 - gd_912); else { if (ld_184 >= 10000.0 && ld_184 < 100000.0) ld_84 = gd_920 + (ld_184 - 10000.0) / 90000.0 * (gd_928 - gd_920); else if (ld_184 >= 100000.0 && ld_184 < 1000000.0) ld_84 = gd_928 + (ld_184 - 100000.0) / 900000.0 * (gd_936 - gd_928); } } } } } } if (gda_1028[li_28] != 0.0) { if (gda_1028[li_28] * ld_160 / 10.0 != 0.0) ld_32 = ld_84 / (gda_1028[li_28] * ld_160 / 10.0) * ld_60; else ld_32 = l_minlot_108; } else ld_32 = 0.1; if (lda_56[li_28] != 0.0) { if (lda_56[li_28] * ld_160 / 10.0 != 0.0) ld_40 = ld_48 / (lda_56[li_28] * ld_160 / 10.0) * ld_60; else ld_40 = l_minlot_108; } else ld_40 = 0.1; ld_76 = MathMin(ld_32, ld_40); if (ld_76 < l_minlot_108) { if (ai_24 == 0) { ld_ret_68 = 0; return (0); } ld_ret_68 = ld_76; } else { if (ld_76 > l_maxlot_116) { ld_ret_68 = 0; return (0); } if (l_lotstep_124 != 0.0) ld_ret_68 = MathRound(ld_76 / l_lotstep_124) * l_lotstep_124; else ld_ret_68 = ld_76; } if (ai_24 == 0) { if (AccountFreeMarginCheck(Symbol(), a_cmd_20, ld_ret_68) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { ld_ret_68 = 0; return (0); } } } else { if (MoneyManagement == FALSE) { ld_ret_68 = FixLotSize; if (ai_24 != 0) return (ld_ret_68); if (!(AccountFreeMarginCheck(Symbol(), a_cmd_20, ld_ret_68) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */)) return (ld_ret_68); ld_ret_68 = 0; return (0); } if (MoneyManagement == 4) { if (ai_16 == 395790115) ld_ret_68 = gd_856; else { if (ai_16 == 395790116) ld_ret_68 = gd_864; else if (CheckSwingMagigNumber(ai_16) == 1) ld_ret_68 = gd_872; } if (ai_24 == 0) { if (AccountFreeMarginCheck(Symbol(), a_cmd_20, ld_ret_68) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { ld_ret_68 = 0; return (0); } } } } return (ld_ret_68); } void FileWriteTradeOutcome(double ad_unused_0, double ad_unused_8, int ai_unused_16, int ai_unused_20) { double lda_24[1]; double lda_28[]; } void CheckErrorHandlingInit() { string ls_0 = gs_7117870_844; if (!IsDllsAllowed()) { gs_1836 = "Warning: Wrong EA Settings => Please check \" AllowDLL Imports\" under Tools -> Options -> ExpertAdvisors."; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (Func3(354619) == 0) { gs_1836 = "Warning: Wrong dll file => Please download dll file again and read the instructions in our download area"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (IsTesting() && TimeCurrent() < 946681200) { gi_1824 = TRUE; return; } string ls_8 = StringSubstr(Symbol(), 0, 6); if (!(ls_8 == "EURUSD" || ls_8 == "GBPUSD" || ls_8 == "USDCAD" || ls_8 == "AUDUSD")) { gs_1836 = "Warning: Wrong Currency Pair => Use Forex Derivative 2.0 only on EURUSD, GBPUSD, USDCAD or AUDUSD"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (Period() != PERIOD_M1) { gs_1836 = "Warning: Wrong Time Frame => Forex Derivative 2.0 works on M1 chart"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (iBars(Symbol(), PERIOD_M1) < 800) { gs_1836 = "Warning: Amount of Bars should be greater than " + 800 + " => Download historical data under Tools -> History Center"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (iATR(NULL, 0, 5, 0) != 0.0 && iATR(NULL, 0, 500, 0) == 0.0) { gs_1836 = "Warning: Old Metatrader version => Download the newest version of Metatrader"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (!IsTesting()) { if (!IsTradeAllowed()) { gs_1836 = "Warning: Wrong EA Settings => Please check \" Allow Live Trading\" under Tools -> Options -> ExpertAdvisors."; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } } if (MoneyManagement < FALSE || MoneyManagement > TRUE) { gs_1836 = "Warning: Wrong parameter value \"Money Management\" => Please read user manual"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } double l_minlot_16 = MarketInfo(Symbol(), MODE_MINLOT); double l_maxlot_24 = MarketInfo(Symbol(), MODE_MAXLOT); if (MoneyManagement == FALSE && FixLotSize < l_minlot_16) { gs_1836 = "Warning: Wrong parameter value \"FixLotSize\" => FixLotSize must be greater than " + l_minlot_16; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (MoneyManagement == FALSE && FixLotSize > l_maxlot_24) { gs_1836 = "Warning: Wrong parameter value \"FixLotSize\" => FixLotSize must be lower than " + l_maxlot_24; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (!IsConnected() && 1) { if (IsTesting()) gs_1836 = "Warning: No connection available (also in testing mode a requisite)"; else gs_1836 = "Warning: No connection available!"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } string ls_32 = StringTrimLeft(StringTrimRight(KEY)); if (StringLen(ls_32) == 0) { gs_1836 = "Please insert the KEY"; Print(gs_1836); gi_1824 = TRUE; return; } if (StringLen(ls_32) != 8) { gs_1836 = "Warning: Wrong KEY => Please get the right key in our download area"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; return; } if (Func1(ls_32, ls_0) == 0) { if (!IsTesting()) gs_1836 = "Warning: Wrong KEY => Please get the right key in our download area"; else gs_1836 = "Warning: Not Connected OR Wrong KEY => Please log into MT4 account AND check the key in our download area"; Alert(gs_1836); Print(gs_1836); gi_1824 = TRUE; } } void CheckMinLotForMoneyManagement() { double ld_0 = MoneyManagement(1, 1, 395790115, OP_BUY, 1); double ld_8 = MoneyManagement(1, 1, 395790116, OP_BUY, 1); double ld_16 = MoneyManagement(1, 1, 395790117, OP_BUY, 1); double ld_24 = MathMin(ld_0, MathMin(ld_8, ld_16)); double l_minlot_32 = MarketInfo(Symbol(), MODE_MINLOT); if (ld_24 < l_minlot_32) { if (ld_24 >= 0.1 && ld_24 < 1.0) { gs_1836 = "Information: We recommend you to use a brokerage which permits to open mini lots (= 0.1 lot = 10,000 units)"; Print(gs_1836); } else { if (ld_24 >= 0.01 && ld_24 < 0.1) { gs_1836 = "Information: We recommend you to use a brokerage which permits to open micro lots (= 0.01 lot = 1,000 units)"; Print(gs_1836); } } } } void CheckErrorHandling() { string ls_0; int li_8; if (IsStopped()) { ls_0 = "Warning: EA has been commanded to stop its operation!"; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (!IsTesting()) { if (IsTradeContextBusy()) g_count_1852++; else g_count_1852 = 0; if (g_count_1852 >= 100) { ls_0 = "Warning: Thread for trading is occupied by another expert advisor for at least 100 ticks!"; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } } double ld_12 = MarketInfo("EURUSD", MODE_SPREAD); int l_digits_20 = MarketInfo("EURUSD", MODE_DIGITS); ld_12 = ld_12 * MathPow(10, 4) / MathPow(10, l_digits_20); double ld_24 = ld_12 / MathPow(10, 4); string ls_32 = StringSubstr(Symbol(), 0, 6); if (ls_32 == "EURUSD") li_8 = gd_1052; else { if (ls_32 == "GBPUSD") li_8 = gd_1060; else { if (ls_32 == "USDCAD") li_8 = gd_1068; else { if (ls_32 == "AUDUSD") li_8 = gd_1076; else li_8 = 15000; } } } int li_40 = gi_1048; if (ld_12 > li_8) { ls_0 = "Information: Current spread " + DoubleToStr(ld_24, l_digits_20) + " for the currency " + ls_32 + " is too high => no trades will be opened for this currency"; gi_1048 = TRUE; if (li_40 == 0 && gi_1048 == TRUE) Print(ls_0); } else { ls_0 = "Information: Current spread " + DoubleToStr(ld_24, l_digits_20) + " for the currency " + ls_32 + " is again within predefined range => normal trading"; gi_1048 = FALSE; if (li_40 == 1 && gi_1048 == FALSE) Print(ls_0); } g_minlot_1812 = MarketInfo(Symbol(), MODE_MINLOT); if (AccountFreeMarginCheck(Symbol(), OP_BUY, g_minlot_1812) <= 0.0 || g_error_1832 == 134/* NOT_ENOUGH_MONEY */ || g_error_1832 == 131/* INVALID_TRADE_VOLUME */) { ls_0 = "Warning: Not enough money to open new orders!"; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (IsTesting()) { if (iATR(NULL, PERIOD_M5, 5, 0) == 0.0 && iMA(NULL, PERIOD_M5, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 5 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (iATR(NULL, PERIOD_M15, 5, 0) == 0.0 && iMA(NULL, PERIOD_M15, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 15 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (iATR(NULL, PERIOD_M30, 5, 0) == 0.0 && iMA(NULL, PERIOD_M30, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 30 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (iATR(NULL, PERIOD_H1, 5, 0) == 0.0 && iMA(NULL, PERIOD_H1, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 60 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (iATR(NULL, PERIOD_H4, 5, 0) == 0.0 && iMA(NULL, PERIOD_H4, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 240 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } if (iATR(NULL, PERIOD_D1, 5, 0) == 0.0 && iMA(NULL, PERIOD_D1, 5, 0, MODE_EMA, PRICE_CLOSE, 0) == 0.0) { ls_0 = "Warning: Missing historical data for time period " + 1440 + " => Download historical data under Tools -> History Center "; Alert(ls_0); Print(ls_0); gi_1820 = TRUE; return; } } gi_1820 = FALSE; if (g_error_1832 != 0/* NO_ERROR */) AlertIsError(g_error_1832); } void AlertIsError(int ai_0) { string ls_4; if (ai_0 >= 2 && ai_0 <= 148) { ls_4 = ErrorDescription(g_error_1832); Print(ls_4); } } int OrderSendReliable(string a_symbol_0, int a_cmd_8, double a_lots_12, double a_price_20, int a_slippage_28, double a_price_32, double a_price_40, string a_comment_48, int a_magic_56, int a_datetime_60 = 0, color a_color_64 = -1) { double ld_68; gs_unused_2008 = "OrderSendReliable"; OrderReliablePrint(" attempted " + OrderReliable_CommandString(a_cmd_8) + " " + a_lots_12 + " lots @" + a_price_20 + " sl:" + a_price_32 + " tp:" + a_price_40); if (!IsConnected()) { OrderReliablePrint("error: IsConnected() == false"); gi_unused_2016 = 6; return (-1); } if (IsStopped()) { OrderReliablePrint("error: IsStopped() == true"); gi_unused_2016 = 2; return (-1); } for (int l_count_76 = 0; !IsTradeAllowed() && l_count_76 < gi_1988; l_count_76++) OrderReliable_SleepRandomTime(gd_1992, gd_2000); if (!IsTradeAllowed()) { OrderReliablePrint("error: no operation possible because IsTradeAllowed()==false, even after retries."); gi_unused_2016 = 146; return (-1); } int l_digits_80 = MarketInfo(a_symbol_0, MODE_DIGITS); if (l_digits_80 > 0) { a_price_20 = NormalizeDouble(a_price_20, l_digits_80); a_price_32 = NormalizeDouble(a_price_32, l_digits_80); a_price_40 = NormalizeDouble(a_price_40, l_digits_80); } if (a_price_32 != 0.0) OrderReliable_EnsureValidStop(a_symbol_0, a_price_20, a_price_32); int l_error_84 = GetLastError(); l_error_84 = 0; gi_unused_2016 = 0; bool li_88 = FALSE; bool li_92 = FALSE; int l_ticket_96 = -1; if (a_cmd_8 == OP_BUYSTOP || a_cmd_8 == OP_SELLSTOP || a_cmd_8 == OP_BUYLIMIT || a_cmd_8 == OP_SELLLIMIT) { l_count_76 = 0; while (!li_88) { if (IsTradeAllowed()) { l_ticket_96 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, a_price_20, a_slippage_28, a_price_32, a_price_40, a_comment_48, a_magic_56, a_datetime_60, a_color_64); l_error_84 = GetLastError(); gi_unused_2016 = l_error_84; } else l_count_76++; switch (l_error_84) { case 0/* NO_ERROR */: li_88 = TRUE; break; case 4/* SERVER_BUSY */: case 6/* NO_CONNECTION */: case 129/* INVALID_PRICE */: case 136/* OFF_QUOTES */: case 137/* BROKER_BUSY */: case 146/* TRADE_CONTEXT_BUSY */: l_count_76++; break; case 135/* PRICE_CHANGED */: case 138/* REQUOTE */: RefreshRates(); continue; break; case 130/* INVALID_STOPS */: ld_68 = MarketInfo(a_symbol_0, MODE_STOPLEVEL) / MathPow(10, MarketInfo(a_symbol_0, MODE_DIGITS)); if (a_cmd_8 == OP_BUYSTOP) { if (MathAbs(Ask - a_price_20) <= ld_68) li_92 = TRUE; } else { if (a_cmd_8 == OP_SELLSTOP) if (MathAbs(Bid - a_price_20) <= ld_68) li_92 = TRUE; } li_88 = TRUE; break; default: li_88 = TRUE; } if (l_count_76 > gi_1988) li_88 = TRUE; if (li_88) { if (l_error_84 != 0/* NO_ERROR */) OrderReliablePrint("non-retryable error: " + OrderReliableErrTxt(l_error_84)); if (l_count_76 > gi_1988) OrderReliablePrint("retry attempts maxed at " + gi_1988); } if (!li_88) { OrderReliablePrint("retryable error (" + l_count_76 + "/" + gi_1988 + "): " + OrderReliableErrTxt(l_error_84)); OrderReliable_SleepRandomTime(gd_1992, gd_2000); RefreshRates(); } } if (l_error_84 == 0/* NO_ERROR */) { OrderReliablePrint("apparently successful OP_BUYSTOP or OP_SELLSTOP order placed, details follow."); OrderSelect(l_ticket_96, SELECT_BY_TICKET, MODE_TRADES); return (l_ticket_96); } if (!li_92) { OrderReliablePrint("failed to execute stop or limit order after " + l_count_76 + " retries"); OrderReliablePrint("failed trade: " + OrderReliable_CommandString(a_cmd_8) + " " + a_symbol_0 + "@" + a_price_20 + " tp@" + a_price_40 + " sl@" + a_price_32); OrderReliablePrint("last error: " + OrderReliableErrTxt(l_error_84)); return (-1); } } if (li_92) { OrderReliablePrint("going from limit order to market order because market is too close."); if (a_cmd_8 == OP_BUYSTOP || a_cmd_8 == OP_BUYLIMIT) { a_cmd_8 = 0; a_price_20 = Ask; } else { if (a_cmd_8 == OP_SELLSTOP || a_cmd_8 == OP_SELLLIMIT) { a_cmd_8 = 1; a_price_20 = Bid; } } } l_error_84 = GetLastError(); l_error_84 = 0; gi_unused_2016 = 0; l_ticket_96 = -1; if (a_cmd_8 == OP_BUY || a_cmd_8 == OP_SELL) { l_count_76 = 0; while (!li_88) { if (IsTradeAllowed()) { l_ticket_96 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, a_price_20, a_slippage_28, a_price_32, a_price_40, a_comment_48, a_magic_56, a_datetime_60, a_color_64); l_error_84 = GetLastError(); gi_unused_2016 = l_error_84; } else l_count_76++; switch (l_error_84) { case 0/* NO_ERROR */: li_88 = TRUE; break; case 4/* SERVER_BUSY */: case 6/* NO_CONNECTION */: case 129/* INVALID_PRICE */: case 136/* OFF_QUOTES */: case 137/* BROKER_BUSY */: case 146/* TRADE_CONTEXT_BUSY */: l_count_76++; break; case 135/* PRICE_CHANGED */: case 138/* REQUOTE */: RefreshRates(); continue; break; default: li_88 = TRUE; } if (l_count_76 > gi_1988) li_88 = TRUE; if (!li_88) { OrderReliablePrint("retryable error (" + l_count_76 + "/" + gi_1988 + "): " + OrderReliableErrTxt(l_error_84)); OrderReliable_SleepRandomTime(gd_1992, gd_2000); RefreshRates(); } if (li_88) { if (l_error_84 != 0/* NO_ERROR */) OrderReliablePrint("non-retryable error: " + OrderReliableErrTxt(l_error_84)); if (l_count_76 > gi_1988) OrderReliablePrint("retry attempts maxed at " + gi_1988); } } if (l_error_84 == 0/* NO_ERROR */) { OrderReliablePrint("apparently successful OP_BUY or OP_SELL order placed, details follow."); OrderSelect(l_ticket_96, SELECT_BY_TICKET, MODE_TRADES); return (l_ticket_96); } OrderReliablePrint("failed to execute OP_BUY/OP_SELL, after " + l_count_76 + " retries"); OrderReliablePrint("failed trade: " + OrderReliable_CommandString(a_cmd_8) + " " + a_symbol_0 + "@" + a_price_20 + " tp@" + a_price_40 + " sl@" + a_price_32); OrderReliablePrint("last error: " + OrderReliableErrTxt(l_error_84)); return (-1); } return (0); } int OrderCloseReliable(int a_ticket_0, double a_lots_4, double a_price_12, int a_slippage_20, color a_color_24 = -1) { gs_unused_2008 = "OrderCloseReliable"; OrderReliablePrint(" attempted close of #" + a_ticket_0 + " price:" + a_price_12 + " lots:" + a_lots_4 + " slippage:" + a_slippage_20); if (!IsConnected()) { OrderReliablePrint("error: IsConnected() == false"); gi_unused_2016 = 6; return (0); } if (IsStopped()) { OrderReliablePrint("error: IsStopped() == true"); return (0); } for (int l_count_28 = 0; !IsTradeAllowed() && l_count_28 < gi_1988; l_count_28++) OrderReliable_SleepRandomTime(gd_1992, gd_2000); if (!IsTradeAllowed()) { OrderReliablePrint("error: no operation possible because IsTradeAllowed()==false, even after retries."); gi_unused_2016 = 146; return (0); } int l_error_32 = GetLastError(); l_error_32 = 0; gi_unused_2016 = 0; bool li_36 = FALSE; l_count_28 = 0; bool l_ord_close_40 = FALSE; while (!li_36) { if (IsTradeAllowed()) { l_ord_close_40 = OrderClose(a_ticket_0, a_lots_4, a_price_12, a_slippage_20, a_color_24); l_error_32 = GetLastError(); gi_unused_2016 = l_error_32; } else l_count_28++; if (l_ord_close_40 == 1) li_36 = TRUE; switch (l_error_32) { case 0/* NO_ERROR */: li_36 = TRUE; break; case 4/* SERVER_BUSY */: case 6/* NO_CONNECTION */: case 129/* INVALID_PRICE */: case 136/* OFF_QUOTES */: case 137/* BROKER_BUSY */: case 146/* TRADE_CONTEXT_BUSY */: case 128/* TRADE_TIMEOUT */: l_count_28++; break; case 135/* PRICE_CHANGED */: case 138/* REQUOTE */: RefreshRates(); continue; break; default: li_36 = TRUE; } if (l_count_28 > gi_1988) li_36 = TRUE; if (!li_36) { OrderReliablePrint("retryable error (" + l_count_28 + "/" + gi_1988 + "): " + OrderReliableErrTxt(l_error_32)); OrderReliable_SleepRandomTime(gd_1992, gd_2000); RefreshRates(); } if (li_36) { if (l_error_32 != 0/* NO_ERROR */ && l_error_32 != 1/* NO_RESULT */) OrderReliablePrint("non-retryable error: " + OrderReliableErrTxt(l_error_32)); if (l_count_28 > gi_1988) OrderReliablePrint("retry attempts maxed at " + gi_1988); } } if (l_ord_close_40 == 1 || l_error_32 == 0/* NO_ERROR */) { OrderReliablePrint("apparently successful modification order, updated trade details follow."); OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES); return (1); } OrderReliablePrint("failed to execute close after " + l_count_28 + " retries"); OrderReliablePrint("failed close: Ticket #" + a_ticket_0 + ", Price: " + a_price_12 + ", Slippage: " + a_slippage_20); OrderReliablePrint("last error: " + OrderReliableErrTxt(l_error_32)); return (0); } string OrderReliableErrTxt(int ai_0) { return ("" + ai_0 + ":" + ErrorDescription(ai_0)); } void OrderReliablePrint(string as_unused_0) { } string OrderReliable_CommandString(int ai_0) { if (ai_0 == 0) return ("OP_BUY"); if (ai_0 == 1) return ("OP_SELL"); if (ai_0 == 4) return ("OP_BUYSTOP"); if (ai_0 == 5) return ("OP_SELLSTOP"); if (ai_0 == 2) return ("OP_BUYLIMIT"); if (ai_0 == 3) return ("OP_SELLLIMIT"); return ("(CMD==" + ai_0 + ")"); } void OrderReliable_EnsureValidStop(string a_symbol_0, double ad_8, double &ad_16) { double ld_24; if (ad_16 != 0.0) { ld_24 = MarketInfo(a_symbol_0, MODE_STOPLEVEL) / MathPow(10, MarketInfo(a_symbol_0, MODE_DIGITS)); if (MathAbs(ad_8 - ad_16) <= ld_24) { if (ad_8 > ad_16) ad_16 = ad_8 - ld_24; else { if (ad_8 < ad_16) ad_16 = ad_8 + ld_24; else OrderReliablePrint("EnsureValidStop: error, passed in price == sl, cannot adjust"); } ad_16 = NormalizeDouble(ad_16, MarketInfo(a_symbol_0, MODE_DIGITS)); } } } void OrderReliable_SleepRandomTime(double ad_0, double ad_8) { double ld_16; int li_24; double ld_28; if (IsTesting() == FALSE) { ld_16 = MathCeil(ad_0 / 0.1); if (ld_16 > 0.0) { li_24 = MathRound(ad_8 / 0.1); ld_28 = 1.0 - 1.0 / ld_16; Sleep(1000); for (int l_count_36 = 0; l_count_36 < li_24; l_count_36++) { if (MathRand() > 32768.0 * ld_28) break; Sleep(1000); } } } } void CheckForClose() { int li_0; int li_4; int l_magic_8; double l_ord_open_price_12; int l_ticket_20; int li_24 = 1; for (int l_pos_28 = 0; l_pos_28 < OrdersTotal(); l_pos_28++) { if (OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES) == FALSE) break; l_magic_8 = OrderMagicNumber(); l_ticket_20 = OrderTicket(); if (CheckMagigNumber(l_magic_8) == 0 || OrderSymbol() != Symbol()) continue; l_ord_open_price_12 = OrderOpenPrice(); if (OrderType() == OP_BUY) { if (l_magic_8 == 395790116) { if (gi_1116 == TRUE && NormalizeDouble(Bid, 4) <= gd_1108) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1108, 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { li_0 = CheckWaveSignal(5, 1); if (li_0 == 2) { if (gi_828 == 0 || (gi_828 == 2 && gi_1236 == 2) || NormalizeDouble(Close[0], 4) > OrderOpenPrice()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1108, 2, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); continue; } if (gi_828 == 2 && gi_1236 == 0) { gi_1096 = TRUE; gd_1100 = l_ord_open_price_12 + gi_832 / 10000.0; gi_1228 = FALSE; gi_1236 = 1; continue; } } if (gi_1096 == TRUE && NormalizeDouble(Bid, 4) > gd_1100 && OrderTakeProfit() == 0.0 || NormalizeDouble(Bid, 4) < OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1108, 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } } } else { if (l_magic_8 == 395790115) { if (gi_1176 == TRUE && NormalizeDouble(Bid, 4) <= gd_1168) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1168, 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1144 == TRUE && gd_1148 > 0.0 && NormalizeDouble(Bid, 4) - gd_1148 > gd_1168 && gi_820 == 0 || NormalizeDouble(Bid, 4) - gd_1148 > OrderOpenPrice()) { gd_1168 = NormalizeDouble(Bid, 4) - gd_1148; gd_unused_1240 = gd_1168; } if (gi_1084 != TRUE) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1168, 4, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1156 == TRUE && NormalizeDouble(Bid, 4) > gd_1160 && OrderTakeProfit() == 0.0 || NormalizeDouble(Bid, 4) < OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gd_1168, 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1188 == TRUE && NormalizeDouble(Bid, 4) <= gd_1180) { gi_1156 = TRUE; gd_1160 = l_ord_open_price_12 + gd_144 / 10000.0; gi_1232 = FALSE; } } } } } else { if (CheckSwingMagigNumber(l_magic_8) == 1) { li_4 = ReturnSwingMagigNumber(l_magic_8); if (gba_1132[li_4] == 1 && NormalizeDouble(Bid, 4) <= gda_1128[li_4]) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gda_1128[li_4], 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gba_1140[li_4] == 1 && NormalizeDouble(Bid, 4) <= gda_1136[li_4]) { gba_1120[li_4] = 1; gda_1124[li_4] = l_ord_open_price_12 + gi_280 / 10000.0; } else { if (gba_1120[li_4] == 1 && NormalizeDouble(Bid, 4) >= gda_1124[li_4] && OrderTakeProfit() == 0.0 || NormalizeDouble(Bid, 4) < OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(1, gda_1128[li_4], 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } } } } } } } else { if (OrderType() == OP_SELL) { if (l_magic_8 == 395790116) { if (gi_1116 == TRUE && NormalizeDouble(Ask, 4) >= gd_1108) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1108, 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { li_0 = CheckWaveSignal(5, 2); if (li_0 == 1) { if (gi_828 == 0 || (gi_828 == 2 && gi_1236 == 2) || NormalizeDouble(Close[0], 4) < OrderOpenPrice()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1108, 2, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); continue; } if (gi_828 == 2 && gi_1236 == 0) { gi_1096 = TRUE; gd_1100 = l_ord_open_price_12 - gi_832 / 10000.0; gi_1228 = FALSE; gi_1236 = 1; continue; } } if (gi_1096 == TRUE && NormalizeDouble(Ask, 4) < gd_1100 && OrderTakeProfit() == 0.0 || NormalizeDouble(Ask, 4) > OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1108, 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } } } else { if (l_magic_8 == 395790115) { if (gi_1176 == TRUE && NormalizeDouble(Ask, 4) >= gd_1168) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1168, 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1144 == TRUE && gd_1148 > 0.0 && NormalizeDouble(Ask, 4) + gd_1148 < gd_1168 && gi_820 == 0 || NormalizeDouble(Ask, 4) + gd_1148 < OrderOpenPrice()) { gd_1168 = NormalizeDouble(Ask, 4) + gd_1148; gd_unused_1240 = gd_1168; } if (gi_1084 != TRUE) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1168, 4, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1156 == TRUE && NormalizeDouble(Ask, 4) < gd_1160 && OrderTakeProfit() == 0.0 || NormalizeDouble(Ask, 4) > OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gd_1168, 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gi_1188 == TRUE && NormalizeDouble(Ask, 4) > gd_1180) { gi_1156 = TRUE; gd_1160 = l_ord_open_price_12 - gd_144 / 10000.0; gi_1232 = FALSE; } } } } } else { if (CheckSwingMagigNumber(l_magic_8) == 1) { li_4 = ReturnSwingMagigNumber(l_magic_8); if (gba_1132[li_4] == 1 && NormalizeDouble(Ask, 4) >= gda_1128[li_4]) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gda_1128[li_4], 1, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } else { if (gba_1140[li_4] == 1 && NormalizeDouble(Ask, 4) >= gda_1136[li_4]) { gba_1120[li_4] = 1; gda_1124[li_4] = l_ord_open_price_12 - gi_280 / 10000.0; } else { if (gba_1120[li_4] == 1 && NormalizeDouble(Ask, 4) <= gda_1124[li_4] && OrderTakeProfit() == 0.0 || NormalizeDouble(Ask, 4) > OrderTakeProfit()) { if (!IsTesting()) RefreshRates(); if (OrderSelect(l_ticket_20, SELECT_BY_TICKET, MODE_TRADES) == TRUE) li_24 = OrderCloseReliable(OrderTicket(), OrderLots(), OrderClosePrice(), gi_1868, Violet); if (li_24 == 0) { AlertIsError(GetLastError()); return; } InitExit(2, gda_1128[li_4], 0, l_magic_8); FileWriteTradeOutcome(l_ord_open_price_12, OrderClosePrice(), l_magic_8, OrderType()); } } } } } } } } } } void InitExit(int ai_0, double ad_4, int ai_12, int ai_16) { int li_20; if (ai_16 == 395790116) { if (ai_12 == 0 && gi_1228 == TRUE && gi_476 > 0) { gi_1204 = TRUE; gi_1216 = ai_0; } else { if (ai_12 == 1 && gi_1200 == TRUE) { gi_1204 = TRUE; gi_1216 = ai_0; gd_1100 = ad_4; gd_1208 = gd_1220; } } gi_1200 = FALSE; gi_1116 = FALSE; gi_1096 = FALSE; return; } if (ai_16 == 395790115) { if (ai_12 == 0 && gi_1232 == TRUE) { gi_1252 = TRUE; gi_1264 = ai_0; } gi_unused_1248 = 0; gi_1176 = FALSE; gi_1156 = FALSE; gi_1144 = FALSE; return; } if (CheckSwingMagigNumber(ai_16) == 1) { li_20 = ReturnSwingMagigNumber(ai_16); gba_1132[li_20] = 0; gba_1120[li_20] = 0; } } int start() { int li_0; int li_4; int lia_8[]; int li_12; double lda_16[]; int l_arr_size_20; bool li_24 = TRUE; bool li_28 = TRUE; if (gi_1824 == TRUE) { if (!IsTesting()) PrintOnChart(1, gi_1824, gi_1820); } else { g_error_1832 = GetLastError(); CheckErrorHandling(); if (!IsTesting()) PrintOnChart(1, gi_1824, gi_1820); if (gi_1820 != TRUE) { if (g_year_1348 != TimeYear(TimeCurrent()) || (TimeCurrent() > gi_1856 && gi_1860 == FALSE) && 1) { if (TimeCurrent() > gi_1856) gi_1860 = TRUE; DefineParameters(); g_year_1348 = TimeYear(TimeCurrent()); InitPhase(0); } ArrayResize(lia_8, gi_1512); g_error_1832 = GetLastError(); if (g_error_1832 != 0/* NO_ERROR */ && 0) { AlertIsError(g_error_1832); Print("Start, before OpenOrders"); } li_0 = CalculateCurrentOrders(Symbol(), 395790115); li_4 = CalculateCurrentOrders(Symbol(), 395790116); for (int l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) { lia_8[l_index_32] = CalculateCurrentOrders(Symbol(), gia_76[l_index_32]); li_12 += lia_8[l_index_32]; } if (gi_1036 == TRUE && DayOfWeek() == 5 || DayOfWeek() == 6) { li_28 = FALSE; if (li_0 + li_4 + li_12 == 0) return; } if (g_datetime_1344 != iTime(NULL, PERIOD_W1, 0)) { ArrayResize(lda_16, gi_1292); l_arr_size_20 = ArraySize(lda_16); ArraySetAsSeries(lda_16, TRUE); for (int li_36 = 0; li_36 < l_arr_size_20; li_36++) lda_16[li_36] = iVolume(NULL, PERIOD_M1, li_36); g_ima_on_arr_1276 = iMAOnArray(lda_16, l_arr_size_20, 100, 0, MODE_SMA, 0); for (li_36 = 0; li_36 < l_arr_size_20; li_36++) lda_16[li_36] = iVolume(NULL, PERIOD_M5, li_36); g_ima_on_arr_1284 = iMAOnArray(lda_16, l_arr_size_20, 100, 0, MODE_SMA, 0); if (g_timeframe_592 == PERIOD_M1) g_ima_on_arr_1296 = g_ima_on_arr_1276; else if (g_timeframe_592 == PERIOD_M5) g_ima_on_arr_1296 = g_ima_on_arr_1284; } CheckStateSingleShot(); RecognizeWaves(); for (l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) RecognizeSwing(l_index_32); if ((li_24 == TRUE && 0) || 1 && li_28 == TRUE && li_0 == 0) CheckForOpenSingleShot(); if ((li_24 == TRUE && 0) || 1 && li_28 == TRUE && li_4 == 0) CheckForOpenICWR(); for (l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) { if ((li_24 == TRUE && 0) || 1) if (lia_8[l_index_32] == 0 && li_28 == TRUE) CheckForOpenSwing(l_index_32); } if (li_0 + li_4 + li_12 > 0) CheckForClose(); if (gi_1872 == TRUE) { g_datetime_1340 = iTime(NULL, PERIOD_D1, 0); gi_1872 = FALSE; } if (!IsTesting() && g_datetime_1340 != iTime(NULL, PERIOD_D1, 0)) { if (gi_468 == 1 && 1) FindLevels(395790116); if (gi_184 >= 2 && 1) FindLevels(395790115); } g_datetime_1332 = iTime(NULL, PERIOD_M1, 0); g_datetime_1336 = iTime(NULL, PERIOD_M5, 0); g_datetime_1340 = iTime(NULL, PERIOD_D1, 0); g_datetime_1344 = iTime(NULL, PERIOD_W1, 0); gi_1088 = gi_1084; } } return (0); } int deinit() { if (gi_1824 != TRUE) { if (gi_1864 == TRUE) { FileClose(g_file_1796); FileClose(g_file_1808); } return (0); } return (0); } int init() { int l_digits_0; HideTestIndicators(TRUE); g_count_1852 = 0; gi_1824 = FALSE; CheckErrorHandlingInit(); if (!IsTesting()) PrintOnChart(0, gi_1824, gi_1820); if (!IsTesting()) Sleep(1000); if (gi_1824 != TRUE) { if (Hedging == FALSE) gi_88 = TRUE; else gi_88 = FALSE; DefineParameters(); g_year_1348 = TimeYear(TimeCurrent()); if (TimeCurrent() > gi_1856) gi_1860 = TRUE; gda_1028[0] = gd_888; gda_1028[1] = gd_896; gda_1028[2] = gd_904; g_file_1796 = -1; gi_unused_1800 = -1; gi_unused_1804 = -1; g_file_1808 = -1; gi_1864 = FALSE; if (gi_1864 == TRUE) { g_file_1796 = FileOpen("test.txt", FILE_WRITE|FILE_READ, ';'); Print("handlerss: ", g_file_1796); g_file_1808 = FileOpen("singleshot.txt", FILE_CSV|FILE_WRITE, ';'); Print("handlerss4: ", g_file_1808); } gi_unused_1828 = 0; g_minlot_1812 = MarketInfo(Symbol(), MODE_MINLOT); l_digits_0 = MarketInfo("EURUSD", MODE_DIGITS); gi_1868 = 3; if (l_digits_0 > 4) gi_1868 = 10 * (gi_1868 * (l_digits_0 - 4)); gia_1024[0] = 30; gia_1024[1] = 120; gia_1024[2] = 60; gsa_1032[0] = "ForexDerivative_File1.txt"; gsa_1032[1] = "ForexDerivative_File2.txt"; gsa_1032[2] = "ForexDerivative_File3.txt"; gd_unused_1844 = 0; InitPhase(1); if (!IsTesting()) InitPhaseCheckOpenPositions(); CheckMinLotForMoneyManagement(); if (!IsTesting()) PrintOnChart(0, gi_1824, gi_1820); if (!IsTesting()) Sleep(1000); if (gi_1824 != TRUE) { } } return (0); } void InitPhase(int ai_0) { double ld_4; int li_12; int li_16; int lia_20[]; int li_24; double lda_28[]; if (ai_0 == 0) { li_12 = CalculateCurrentOrders(Symbol(), 395790115); li_16 = CalculateCurrentOrders(Symbol(), 395790116); for (int l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) { lia_20[l_index_32] = CalculateCurrentOrders(Symbol(), gia_76[l_index_32]); li_24 += lia_20[l_index_32]; } if (li_12 + li_16 + li_24 > 0) ClosePositions(); } gi_1088 = FALSE; gsa_1092[0] = "FSM_UNDEFINED"; gsa_1092[1] = "FSM_SINGLE_SHOT"; ArrayResize(lda_28, gi_1292); int l_arr_size_36 = ArraySize(lda_28); ArraySetAsSeries(lda_28, TRUE); for (int li_40 = 0; li_40 < l_arr_size_36; li_40++) lda_28[li_40] = iVolume(NULL, PERIOD_M1, li_40); g_ima_on_arr_1276 = iMAOnArray(lda_28, l_arr_size_36, 100, 0, MODE_SMA, 0); for (li_40 = 0; li_40 < l_arr_size_36; li_40++) lda_28[li_40] = iVolume(NULL, PERIOD_M5, li_40); g_ima_on_arr_1284 = iMAOnArray(lda_28, l_arr_size_36, 100, 0, MODE_SMA, 0); if (g_timeframe_592 == PERIOD_M1) g_ima_on_arr_1296 = g_ima_on_arr_1276; else if (g_timeframe_592 == PERIOD_M5) g_ima_on_arr_1296 = g_ima_on_arr_1284; gi_unused_1360 = 0; gi_1364 = FALSE; gd_1368 = 0; gi_1376 = FALSE; gd_1380 = 0; gd_unused_1388 = 0; gi_1404 = 0; gi_1412 = FALSE; gi_1416 = 0; gi_1420 = 0; g_count_1424 = 0; g_count_1428 = 0; gd_1432 = 0; gd_1440 = 0; gi_1448 = 0; gd_1452 = 0; g_count_1460 = 0; gd_1464 = 0; gd_1616 = 0; gd_1624 = 0; gd_1632 = 0; gd_1640 = 0; gi_1648 = FALSE; gi_1652 = FALSE; gi_1656 = FALSE; gi_1660 = FALSE; g_count_1664 = 0; g_count_1668 = 0; g_count_1672 = 0; g_count_1676 = 0; g_count_1684 = 0; g_count_1688 = 0; g_count_1692 = 0; g_count_1696 = 0; gd_1700 = 0; gd_1708 = 0; gd_1716 = 0; gd_1724 = 0; gd_1740 = 0; gd_1748 = 0; gi_1756 = FALSE; gi_unused_1760 = 0; gd_1764 = 0; gd_1772 = 0; gd_1780 = 0; gd_1788 = 0; if (g_timeframe_592 == PERIOD_M1) gi_1680 = gi_780; else if (g_timeframe_592 == PERIOD_M5) gi_1680 = MathRound(gi_780 / 5); gd_1552 = 0.5 - gd_608; gd_1560 = gd_608 + 0.5; gd_1568 = 0.5 - gd_616; gd_1576 = gd_616 + 0.5; gd_1732 = 500000.0; if (gd_688 == 1.0) g_timeframe_696 = 60; else { if (gd_688 == 2.0) g_timeframe_696 = 240; else if (gd_688 == 3.0) g_timeframe_696 = 1440; } if (gd_688 == 1.0) gd_680 = gd_672; else { if (gd_688 == 2.0) gd_680 = 50.0 * gd_672 / 75.0; else if (gd_688 == 3.0) gd_680 = 50.0 * gd_672 / 100.0; } RecognizeWavesInit(); if (gi_196 != 0) gi_1512 = (gi_192 - gi_188) / gi_196 + 1; else gi_1512 = 1; if (gi_1512 > 6) { Print("ERROR"); gi_1820 = TRUE; return; } ArrayResize(gia_76, gi_1512); for (l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) gia_76[l_index_32] = l_index_32 + 395790117; ArrayResize(gba_1516, gi_1512); ArrayResize(gia_1524, gi_1512); ArrayResize(gia_1520, gi_1512); ArrayResize(gia_1528, gi_1512); ArrayResize(gia_1532, gi_1512); ArrayResize(gda_1536, gi_1512); ArrayResize(gda_1540, gi_1512); ArrayResize(gda_1544, gi_1512); ArrayResize(gia_1548, gi_1512); ArrayResize(gba_1120, gi_1512); ArrayResize(gda_1124, gi_1512); ArrayResize(gda_1128, gi_1512); ArrayResize(gba_1132, gi_1512); ArrayResize(gda_1136, gi_1512); ArrayResize(gba_1140, gi_1512); ArrayResize(gia_1504, gi_1512); ArrayResize(gia_1508, gi_1512); ArrayResize(gba_1476, gi_1512); ArrayResize(gda_228, gi_1512); for (l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) { ld_4 = gi_188 + gi_196 * l_index_32; if (g_timeframe_216 == PERIOD_M1) gia_1548[l_index_32] = ld_4; else if (g_timeframe_216 == PERIOD_M5) gia_1548[l_index_32] = MathRound(ld_4 / 5.0); } for (l_index_32 = 0; l_index_32 < gi_1512; l_index_32++) RecognizeSwingInit(l_index_32); if (gi_344 == 1) g_timeframe_348 = 5; else { if (gi_344 == 2) g_timeframe_348 = 60; else { if (gi_344 == 3) g_timeframe_348 = 240; else if (gi_344 == 4) g_timeframe_348 = 1440; } } if (gi_312 == 1) g_timeframe_316 = 5; else { if (gi_312 == 2) g_timeframe_316 = 60; else { if (gi_312 == 3) g_timeframe_316 = 240; else if (gi_312 == 4) g_timeframe_316 = 1440; } } gia_1304[0] = 1; gia_1304[1] = 5; gia_1304[2] = 60; gia_1304[3] = 1440; gia_1324[0] = 0; gia_1324[1] = 0; gia_1324[2] = 0; gia_1324[3] = 0; gia_1328[0] = 0; gia_1328[1] = 0; gia_1328[2] = 0; gia_1328[3] = 0; if (gi_516 == 1) g_timeframe_520 = 5; else { if (gi_516 == 2) g_timeframe_520 = 60; else { if (gi_516 == 3) g_timeframe_520 = 240; else if (gi_516 == 4) g_timeframe_520 = 1440; } } g_period_492 = gd_484; g_period_508 = gd_500 * g_period_492; if (gi_552 == 1) g_timeframe_556 = 5; else { if (gi_552 == 2) g_timeframe_556 = 60; else { if (gi_552 == 3) g_timeframe_556 = 240; else if (gi_552 == 4) g_timeframe_556 = 1440; } } if (gi_568 == 1) { g_timeframe_572 = 5; return; } if (gi_568 == 2) { g_timeframe_572 = 60; return; } if (gi_568 == 3) { g_timeframe_572 = 240; return; } if (gi_568 == 4) g_timeframe_572 = 1440; }