#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, int a5, double a6, double a7, int a8, int a9, string a10, int a11, double a12, int a13, string a14); 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 extern bool Standard = TRUE; extern bool Mini = FALSE; extern bool Micro = FALSE; extern int MagicNumber = 996960; extern int MaxSlippage = 3; extern bool Moneymanagement = TRUE; extern double Lots = 0.1; extern int MaximumRisk = 1; extern double MaxLots = 100.0; extern int StopLoss_mode_A = 35; extern int TakeProfit_mode_A = 8; extern int StopLoss_mode_B = 70; extern int TakeProfit_mode_B = 16; string gs_136 = "ExpertAdvisor_S"; string gs_144 = "EA SHARK ULTIMATE 5.0 Build 01"; extern bool ST_TP_Pending_Mode = FALSE; extern bool FridayMode = FALSE; extern bool FractionalLots = FALSE; bool gi_164 = TRUE; extern int ATR_Period = 40; extern int ATR_Timeframe = 1440; extern double ATR_border = 0.01239; bool gi_184 = FALSE; extern int CCI_Period = 34; extern int CCI_Timeframe = 1440; bool gi_196 = FALSE; bool gi_200 = TRUE; int gi_204 = 18; int gi_208 = 1; int gi_212 = 1; int gi_216; int gi_220; int gi_224 = 1; bool gi_228 = TRUE; int gi_232 = 0; int gi_236 = 100000; int gi_240 = 1; double gd_244; string g_symbol_252; 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"); } 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) { Print("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK IS EQUAL NULL"); Alert("EA SHARK 5.0 ULTIMATE >> MAXIMUM RISK IS EQUAL NULL"); MaximumRisk = 1; } if (MaximumRisk > 100) { 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 && Standard == TRUE) gi_236 = 100000; if (Moneymanagement == TRUE && Mini == TRUE) gi_236 = 10000; if (Moneymanagement == TRUE && Micro == TRUE) gi_236 = 1000; CheckVersion(); if (FractionalLots == TRUE && MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) gi_240 = 2; if (Digits == 5) gd_244 = 10.0 * Point; else gd_244 = 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_252 = AccountCurrency() + ls_16 + ls_24; double ld_32 = GetBid(g_symbol_252, MarketInfo(g_symbol_252, MODE_BID)); if (ld_32 == 0.0) { g_symbol_252 = ls_16 + AccountCurrency() + ls_24; ld_32 = GetBid(g_symbol_252, MarketInfo(g_symbol_252, MODE_BID)); if (ld_32 == 0.0) g_symbol_252 = ""; } Registered(); Comments(); return (0); } int deinit() { Deinit(); return (0); } void CheckVersion() { string ls_0; string ls_8; if (gi_228 != FALSE) { if (TimeCurrent() > gi_232) { ls_0 = ".........................................................."; ls_0 = Version(gs_136); if (ls_0 != gs_144) { Print("Current System Version: " + gs_144); 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_228 = FALSE; } gi_232 = TimeCurrent(); gi_232 += 3600 * gi_224; } } } void Registered() { Print("registering with Advisor:" + gs_136 + " Account:" + AccountName() + "..."); int l_bool_0 = IsTesting(); int l_bool_4 = IsOptimization(); gi_216 = Init(gs_136, AccountName(), Moneymanagement, Lots, MaxLots, MaximumRisk, MarketInfo(Symbol(), MODE_MINLOT), MarketInfo(Symbol(), MODE_MAXLOT), l_bool_0, l_bool_4, AccountCurrency(), AccountLeverage(), gi_236, CheckSL(gi_164, ATR_Timeframe, ATR_Period, ATR_border, StopLoss_mode_A, StopLoss_mode_B), Symbol()); if (gi_216 == 0) { Print("You have registered"); return; } if (gi_216 == 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_216 == -1) { Print("Error connect to DB for registrated"); Alert("EA SHARK 5.0 ULTIMATE >> Error connect to DB for registrated"); gi_220 = TimeCurrent(); gi_220 += 3600 * gi_212; return; } Print("Unknown error"); } void Comments() { string ls_0 = "" + "\n" + "SHARK 5.0 Ultimate © Build 01" + "\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; if (gi_216 >= 1) return (0); if (gi_216 == -1) { if (TimeCurrent() > gi_220) { Registered(); if (gi_216 != 0) gi_216 = 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_196) TrailingPositions(gi_204, gi_208, MagicNumber, gd_244, gi_200); if (ST_TP_Pending_Mode == TRUE) SL_TP_Corrected(CheckSL(gi_164, ATR_Timeframe, ATR_Period, ATR_border, StopLoss_mode_A, StopLoss_mode_B), CheckTP(gi_164, ATR_Timeframe, ATR_Period, ATR_border, TakeProfit_mode_B, TakeProfit_mode_B), MagicNumber, gd_244); 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); } OpenBuyOrder(ld_4, StopLoss_mode_A, StopLoss_mode_B, TakeProfit_mode_A, TakeProfit_mode_B, MaxSlippage, MagicNumber, gd_244, ST_TP_Pending_Mode, FridayMode, gi_164, ATR_Timeframe, ATR_Period, ATR_border, CCI_Timeframe, CCI_Period, gi_184); OpenSellOrder(ld_4, StopLoss_mode_A, StopLoss_mode_B, TakeProfit_mode_A, TakeProfit_mode_B, MaxSlippage, MagicNumber, gd_244, ST_TP_Pending_Mode, FridayMode, gi_164, ATR_Timeframe, ATR_Period, ATR_border, CCI_Timeframe, CCI_Period, gi_184); } return (0); } double Moneymanagement() { double ld_0 = MoneyManagement(AccountFreeMargin(), Bid, MarketInfo(g_symbol_252, MODE_BID)); return (NormalizeDouble(ld_0, gi_240)); }