#property copyright "Copyright © forexeasystems" #property link "http://www.forexeasystems.com" #include #import "EA_SHARK5.0_ULTIMATE_Proxy.dll" int Init(string a0, string a1, int a2, double a3, double a4, double a5, double a6, double a7, int a8, int a9, string a10, int a11, double a12, int a13, string a14, double a15, double a16); double GetBid(string a0, double a1); double MoneyManagement(double a0, double a1, double a2); void Deinit(); #import "EA_SHARK5.0_ULTIMATE_Version.dll" string Version(string a0); #import bool gi_76 = TRUE; bool gi_80 = FALSE; bool gi_84 = FALSE; extern int MagicNumber = 996960; extern int MaxSlippage = 2; extern int MaxSpread = 2; extern bool Moneymanagement = TRUE; extern double Lots = 0.1; extern double MaximumRisk = 0.1; extern double MaxLots = 100.0; extern int StopLoss_mode_A = 35; extern int TakeProfit_mode_A = 8; extern int StopLoss_mode_B = 65; extern int TakeProfit_mode_B = 8; string gs_144 = "ExpertAdvisor_S"; string gs_152 = "EA SHARK ULTIMATE 5.0 Build 02"; extern bool FridayMode = FALSE; extern bool FractionalLots = TRUE; bool gi_168 = TRUE; int gi_172 = 40; int gi_176 = 1440; double gd_180 = 0.01239; bool gi_188 = FALSE; int gi_192 = 10; int gi_196 = 30; bool gi_200 = FALSE; int gi_204 = 34; int gi_208 = 1440; bool gi_212 = FALSE; bool gi_216 = TRUE; int gi_220 = 18; int gi_224 = 1; int gi_228 = 1; int gi_232; int gi_236; int gi_240 = 1; bool gi_244 = TRUE; int gi_248 = 0; int gi_252 = 100000; int gi_256 = 1; double gd_260; string g_symbol_268; int init() { double l_lotstep_0; HideTestIndicators(TRUE); if (IsLibrariesAllowed() == FALSE) { Print("EA SHARK 5.0 ULTIMATE >> PLEASE ALLOW EX4 IMPORT"); Alert("EA SHARK 5.0 ULTIMATE >> PLEASE ALLOW EX4 IMPORT"); return (0); } if (IsDllsAllowed() == FALSE) { Print("EA SHARK 5.0 ULTIMATE >> PLEASE ALLOW DLL IMPORT"); Alert("EA SHARK 5.0 ULTIMATE >> PLEASE ALLOW DLL IMPORT"); return (0); } if (FractionalLots == TRUE) { l_lotstep_0 = MarketInfo(Symbol(), MODE_LOTSTEP); if (l_lotstep_0 != 0.01) { Print("EA SHARK 5.0 ULTIMATE >> FRACTIONAL LOTS ARE NOT SUPPORTED"); Alert("EA SHARK 5.0 ULTIMATE >> FRACTIONAL LOTS ARE NOT SUPPORTED"); } } if (IsTradeContextBusy() == TRUE) { Print("EA SHARK 5.0 ULTIMATE >> TRADE CONTEX BUSY"); Alert("EA SHARK 5.0 ULTIMATE >> TRADE CONTEX BUSY"); } if (MaxSlippage > 11) { Print("EA SHARK 5.0 ULTIMATE >> MAX SLIPPAGE TO HIGH"); Alert("EA SHARK 5.0 ULTIMATE >> MAX SLIPPAGE TO HIGH"); } if (MaxSlippage < 2) { Print("EA SHARK 5.0 ULTIMATE >> MAX SLIPPAGE TO LITTLE"); Alert("EA SHARK 5.0 ULTIMATE >> MAX SLIPPAGE TO LITTLE"); } MaxSlippage = MaxSlippage * gd_260; if (IsStopped() == TRUE) { Print("EA SHARK 5.0 ULTIMATE >> AUTO TRADING STOPPED BY BROKERSERVER"); Alert("EA SHARK 5.0 ULTIMATE >> AUTO TRADING STOPPED BY BROKERSERVER"); } if (Period() != PERIOD_M30) { Print("EA SHARK 5.0 ULTIMATE >> PLEASE PLACE THE EA ON THE 30 MIN EURUSD CHART"); Alert("EA SHARK 5.0 ULTIMATE >> PLEASE PLACE THE EA ON THE 30 MIN EURUSD CHART"); } if (Bars < 500) { Print("EA SHARK 5.0 ULTIMATE >> LESS THEN 1000 BARS IN THE CHART - EA CANNOT WORK"); Alert("EA SHARK 5.0 ULTIMATE >> LESS THEN 1000 BARS IN THE CHART - EA CANNOT WORK"); } if (StringSubstr(Symbol(), 0, 6) != "EURUSD") { Print("EA SHARK 5.0 ULTIMATE >> PLEASE PLACE THE EA ON THE 30 MIN EURUSD CHART"); Alert("EA SHARK 5.0 ULTIMATE >> PLEASE PLACE THE EA ON THE 30 MIN EURUSD CHART"); } if (MaximumRisk == 0.0) { Print("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK IS EQUAL NULL"); Alert("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK IS EQUAL NULL"); MaximumRisk = 0.1; } if (MaximumRisk > 100.0) { Print("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK OVER 100"); Alert("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK OVER 100"); MaximumRisk = 100; } if (Moneymanagement == TRUE && gi_76 == TRUE) gi_252 = 100000; if (Moneymanagement == TRUE && gi_80 == TRUE) gi_252 = 10000; if (Moneymanagement == TRUE && gi_84 == TRUE) gi_252 = 1000; CheckVersion(); if (FractionalLots == TRUE && MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) gi_256 = 2; if (Digits == 5) gd_260 = 10.0 * Point; else gd_260 = Point; string ls_8 = StringSubstr(Symbol(), 0, 3); string ls_16 = StringSubstr(Symbol(), 3, 3); string ls_24 = ""; if (StringLen(Symbol()) > 6) ls_24 = StringSubstr(Symbol(), 6, StringLen(Symbol()) - 6); g_symbol_268 = AccountCurrency() + ls_16 + ls_24; double ld_32 = GetBid(g_symbol_268, MarketInfo(g_symbol_268, MODE_BID)); if (ld_32 == 0.0) { g_symbol_268 = ls_16 + AccountCurrency() + ls_24; ld_32 = GetBid(g_symbol_268, MarketInfo(g_symbol_268, MODE_BID)); if (ld_32 == 0.0) g_symbol_268 = ""; } Registered(); Comments(); return (0); } int deinit() { Deinit(); return (0); } void CheckVersion() { string ls_0; string ls_8; if (gi_244 != FALSE) { if (TimeCurrent() > gi_248) { ls_0 = ".........................................................."; ls_0 = Version(gs_144); if (ls_0 != gs_152) { Print("Current System Version: " + gs_152); Print("Actual System Version: " + ls_0); ls_8 = "Please close this application and run EA_SHARK5.0_ULTIMATE_UPDATE.exe for updating the build version"; Print(ls_8); Alert(ls_8); gi_244 = FALSE; } gi_248 = TimeCurrent(); gi_248 += 3600 * gi_240; } } } void Registered() { Print("registering with Advisor:" + gs_144 + " Account:" + AccountName() + "..."); int l_bool_0 = IsTesting(); int l_bool_4 = IsOptimization(); gi_232 = Init(gs_144, AccountName(), Moneymanagement, Lots, MaxLots, MaximumRisk, MarketInfo(Symbol(), MODE_MINLOT), MarketInfo(Symbol(), MODE_MAXLOT), l_bool_0, l_bool_4, AccountCurrency(), AccountLeverage(), gi_252, CheckSL(gi_168, gi_176, gi_172, gd_180, StopLoss_mode_A, StopLoss_mode_B), Symbol(), MarketInfo(Symbol(), MODE_MARGINREQUIRED), MarketInfo(Symbol(), MODE_LOTSTEP)); if (gi_232 == 0) { Print("You have registered"); return; } if (gi_232 == 1) { Print("EA SHARK 5.0 ULTIMATE >> No license for this account. Contact: license@forexeasystems.com"); Alert("EA SHARK 5.0 ULTIMATE >> No license for this account. Contact: license@forexeasystems.com"); return; } if (gi_232 == -1) { Print("Error connect to DB for registrated"); Alert("EA SHARK 5.0 ULTIMATE >> Error connect to DB for registrated"); gi_236 = TimeCurrent(); gi_236 += 3600 * gi_228; return; } Print("Unknown error"); } void Comments() { string ls_0 = "" + "\n" + "SHARK 5.0 Ultimate © Build 02" + "\n" + "------------------------------------------------" + "\n" + "BROKER INFORMATIONS:" + "\n" + "Broker Company: " + AccountCompany() + "\n" + "------------------------------------------------" + "\n" + "ACCOUNT INFORMATIONS:" + "\n" + "Account Name: " + AccountName() + "\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" + "MARGIN INFORMATIONS:" + "\n" + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2) + "\n" + "Used Margin: " + DoubleToStr(AccountMargin(), 2) + "\n" + "------------------------------------------------" + "\n" + "Actual Server Time " + TimeToStr(TimeCurrent(), TIME_SECONDS); Comment(ls_0); } int start() { int li_0; double ld_4; double ld_12; if (gi_232 >= 1) return (0); if (gi_232 == -1) { if (TimeCurrent() > gi_236) { Registered(); if (gi_232 != 0) gi_232 = 1; } } if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) CheckVersion(); if (StringSubstr(Symbol(), 0, 6) == "EURUSD") { if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) Comments(); if (gi_212) TrailingPositions(gi_220, gi_224, MagicNumber, gd_260, gi_216); SL_TP_Corrected(CheckSL(gi_168, gi_176, gi_172, gd_180, StopLoss_mode_A, StopLoss_mode_B), CheckTP(gi_168, gi_176, gi_172, gd_180, TakeProfit_mode_B, TakeProfit_mode_B), MagicNumber, gd_260, MaxSlippage); HandleOpenPositions(MagicNumber, MaxSlippage); li_0 = openPositions(MagicNumber); if (li_0 > 0) return (0); ld_4 = Moneymanagement(); if (ld_4 == 0.0) { Print("EA SHARK 5.0 ULTIMATE >> LOT SIZE == 0!"); Alert("EA SHARK 5.0 ULTIMATE >> LOT SIZE == 0!"); return (0); } if (AccountFreeMargin() < ld_4 * MarketInfo(Symbol(), MODE_LOTSTEP) / AccountLeverage()) { Print("EA SHARK 5.0 ULTIMATE >> NOT ENOUGH MARGIN!", AccountFreeMargin() + "..."); Alert("EA SHARK 5.0 ULTIMATE >> NOT ENOUGH MARGIN!", AccountFreeMargin() + "..."); return (0); } ld_12 = MaxSpread; if (Digits == 5) ld_12 = 10.0 * ld_12; if (ld_12 < MarketInfo(Symbol(), MODE_SPREAD)) { Print("EA SHARK 5.0 ULTIMATE >> SPREAD == ", MarketInfo(Symbol(), MODE_SPREAD) + "...TRADING DISABLE"); Alert("EA SHARK 5.0 ULTIMATE >> SPREAD == ", MarketInfo(Symbol(), MODE_SPREAD) + "...TRADING DISABLE"); return (0); } OpenBuyOrder(ld_4, StopLoss_mode_A, StopLoss_mode_B, TakeProfit_mode_A, TakeProfit_mode_B, MaxSlippage, MagicNumber, gd_260, FridayMode, gi_168, gi_176, gi_172, gd_180, gi_196, gi_192, gi_188, gi_208, gi_204, gi_200); OpenSellOrder(ld_4, StopLoss_mode_A, StopLoss_mode_B, TakeProfit_mode_A, TakeProfit_mode_B, MaxSlippage, MagicNumber, gd_260, FridayMode, gi_168, gi_176, gi_172, gd_180, gi_196, gi_192, gi_188, gi_208, gi_204, gi_200); } return (0); } double Moneymanagement() { double ld_0 = MoneyManagement(AccountFreeMargin(), Bid, MarketInfo(g_symbol_268, MODE_BID)); return (NormalizeDouble(ld_0, gi_256)); }