/*
   Generated by EX4-TO-MQ4 decompiler V4.0.427.2 [-]
   Website: https://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2012, Forex Decoder."
#property link      "http://ddsmm.forexdecoder.com"

#include <WinUser32.mqh>
//#include <stdlib.mqh>
#import "stdlib.ex4"
   string ErrorDescription(int a0);
#import "mt4gui.dll"
   int tbPutObject(int a0, string a1, int a2, int a3, int a4, int a5, string a6);
   int tbSetBgColor(int a0, int a1, int a2);
   int tbSetTextColor(int a0, int a1, int a2);
   int tbRemove(int a0, int a1);
   bool tbIsClicked(int a0, int a1);
   bool tbIsChecked(int a0, int a1);
   int tbSetText(int a0, int a1, string a2, int a3, string a4);
   int tbEnable(int a0, int a1, int a2);
   int tbAddListItem(int a0, int a1, string a2);
   int tbGetListSel(int a0, int a1);
   int tbSetListSel(int a0, int a1, int a2);
#import "fxdec.dll"
   string FXDEC_Info_Feed(string a0, int a1);
   string FXDEC_Activate(string a0, string a1, string a2, string a3, int a4);
   int FXDEC_Terminate(int a0, int a1);
   double FXDEC_LotsSwansonDelta(double a0, double a1, double a2, double a3, double a4, double a5, double a6, int a7, double a8, int a9, double a10, double a11, int a12, double& a13[], double a14, int a15);
#import "user32.dll"
   int GetParent(int a0);
   int PostMessageA(int a0, int a1, int a2, int a3);
   int RegisterWindowMessageA(string a0);
#import "shell32.dll"
   int ShellExecuteA(int a0, string a1, string a2, string a3, int a4, int a5);
#import

extern string Account_Settings = "---Parameters for Account Setup---";
extern string Member_Email = "Trial";
extern string Member_Password = "Trial";
extern string Member_Settings = "---Parameters for DDSMM---";
extern double Starting_Point_Account_Balance = 10000.0;
extern double max_drawdown_risk_Percent = 10.0;
extern double max_risk_per_trade_Percent = 2.0;
extern double max_stop_loss_Pips = 30.0;
extern double default_stoploss_Pips = 30.0;
extern double default_takeprofit_Pips = 100.0;
extern int Magic_ID = 15345766;
extern string Trade_Comment = "DDSMM-Instant-v1.38";
extern bool enable_sounds = TRUE;
extern bool IsSpreadBettingAccount = FALSE;
extern string Trail_Stop_Settings = "---Trailing Stop Settings---";
extern int BE_Plus_Pips = 1;
extern int TrailStop_Activate_Pips = 15;
extern int TrailStop_AwayFromPrice_Pips = 10;
extern bool Enable_Stealth_Trailing = TRUE;
extern int Trail_Max_Slippage_Stealth_Pips = 1;
extern double scaletoolsize_Percent = 100.0;
extern string colorsettings = "---Color Settings---";
extern color Pending_Order_Line_color = Yellow;
extern color Stoploss_Line_color = Red;
extern color Target_Line_color = Lime;
string gs_232 = "1.38";
double gd_240 = 0.05;
int gi_248 = 1;
double g_tickvalue_252 = 1.0;
double g_minlot_260 = 0.1;
double gd_276 = 1.0;
double gd_unused_284 = 0.0;
int gi_292;
int gi_296;
int gi_300;
int gi_304;
int gi_308;
int gi_312;
int gi_316;
int gi_320;
int gi_324;
int gi_328;
int gi_332;
int gi_336;
int gi_340;
int gi_344;
int gi_348;
int gi_352;
int gi_356;
int gi_360;
int gi_364;
int gi_368;
int gi_372;
double gd_376 = 0.1;
bool gi_384 = FALSE;
bool gi_388 = FALSE;
bool gi_392 = FALSE;
bool gi_396 = FALSE;
bool gi_400 = FALSE;
bool gi_404 = FALSE;
bool gi_408 = FALSE;
bool gi_412;
bool gi_416 = FALSE;
string gs_unused_420 = "               ";
string gs_unused_428 = "";
int gi_unused_436 = 0;
int gi_unused_440 = 0;
int g_order_total_444 = -1;
int g_hist_total_448 = -1;
double gd_452 = 0.0;
int gi_460 = 0;
int gi_464 = 0;
int g_ticket_468 = 0;
int g_ticket_472 = 0;
int gi_unused_476 = 0;
bool gi_480 = FALSE;
bool gi_484 = FALSE;
double gd_unused_488 = 0.0;
bool gi_496 = FALSE;
bool gi_500 = FALSE;
bool gi_504 = FALSE;
int g_str2int_508 = 0;
int g_day_512 = 0;
int gi_516 = 0;
int gi_520 = 0;
string gs_524 = "";
string gs_532 = "";
string gs_540 = "Waiting For Price. Market open? MT4 Connection Error?";
int gi_548 = 0;
string g_text_552;
string g_text_560;

int init() {
   scaletoolsize_Percent /= 100.0;
   gi_548 = WindowHandle(Symbol(), Period());
   ObjectCreate("DDSMM_init", OBJ_LABEL, 0, 0, 0);
   ObjectSet("DDSMM_init", OBJPROP_XDISTANCE, 15);
   ObjectSet("DDSMM_init", OBJPROP_YDISTANCE, 20);
   f0_7(1, "Initializing...verify the 3 dlls are in correct folders.");
   ObjectCreate("DDSMM_init2", OBJ_LABEL, 0, 0, 0);
   ObjectSet("DDSMM_init2", OBJPROP_XDISTANCE, 15);
   ObjectSet("DDSMM_init2", OBJPROP_YDISTANCE, 45);
   f0_7(2, "Waiting For Price. Market open? MT4 Connection Error?");
   f0_16();
   f0_20();
   f0_4();
   gi_496 = FALSE;
   gi_500 = FALSE;
   g_day_512 = 0;
   f0_13();
   return (0);
}

int f0_18() {
   gi_496 = TRUE;
   gi_412 = TRUE;
   if (f0_20()) {
      gi_516 = -90000;
      gi_412 = FALSE;
   } else {
      f0_4();
      tbSetText(gi_548, gi_296, "Waiting For Price. Market open? MT4 Connection Error?", 16.0 * scaletoolsize_Percent, "Arial");
      tbSetTextColor(gi_548, gi_296, 255);
      gi_516 = NormalizeDouble(MathRound((TimeCurrent() - g_str2int_508) / 3600.0), 0);
   }
   if (Digits == 3 || Digits == 5) gi_248 = 10;
   if (MarketInfo(Symbol(), MODE_LOTSIZE) < 50000.0) gd_276 = 1.0;
   else
      if (MarketInfo(Symbol(), MODE_LOTSIZE) >= 50000.0) gd_276 = 10.0;
   g_tickvalue_252 = MarketInfo(Symbol(), MODE_TICKVALUE);
   g_minlot_260 = MarketInfo(Symbol(), MODE_MINLOT);
   if (gi_412 && gi_416) {
      gd_376 = f0_21();
      f0_19();
   }
   return (0);
}

double f0_11(double ad_0) {
   double lotstep_8 = MarketInfo(Symbol(), MODE_LOTSTEP);
   gd_240 = lotstep_8 / 2.0;
   return (MathFloor(ad_0 / lotstep_8 + 0.5) * lotstep_8);
}

int deinit() {
   ObjectDelete("DDSMM_init");
   ObjectDelete("DDSMM_init2");
   GlobalVariablesDeleteAll("ddsmmtrail_");
   f0_1();
   FXDEC_Terminate(gi_548, 1);
   return (0);
}

int f0_1() {
   f0_14();
   ObjectDelete("DDSMM Pending Order Price");
   ObjectDelete("DDSMM SL Price");
   ObjectDelete("DDSMM TP Price");
   return (0);
}

int f0_14() {
   tbRemove(gi_548, gi_292);
   tbRemove(gi_548, gi_296);
   tbRemove(gi_548, gi_300);
   tbRemove(gi_548, gi_308);
   tbRemove(gi_548, gi_312);
   tbRemove(gi_548, gi_316);
   tbRemove(gi_548, gi_348);
   tbRemove(gi_548, gi_352);
   tbRemove(gi_548, gi_356);
   tbRemove(gi_548, gi_360);
   tbRemove(gi_548, gi_364);
   tbRemove(gi_548, gi_368);
   tbRemove(gi_548, gi_304);
   if (gi_332 > 0) tbRemove(gi_548, gi_332);
   if (gi_336 > 0) tbRemove(gi_548, gi_336);
   if (gi_340 > 0) tbRemove(gi_548, gi_340);
   if (gi_344 > 0) tbRemove(gi_548, gi_344);
   if (gi_320 > 0) tbRemove(gi_548, gi_320);
   if (gi_324 > 0) tbRemove(gi_548, gi_324);
   if (gi_328 > 0) tbRemove(gi_548, gi_328);
   if (gi_372 > 0) tbRemove(gi_548, gi_372);
   return (0);
}

int f0_8() {
   f0_14();
   gi_348 = tbPutObject(gi_548, "checkbox", 15.0 * scaletoolsize_Percent, -190.0 * scaletoolsize_Percent, 70.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_348, "Show", 16.0 * scaletoolsize_Percent, "Arial");
   tbSetBgColor(gi_548, gi_348, 0);
   tbSetTextColor(gi_548, gi_348, 255);
   return (0);
}

void f0_16() {
   gi_332 = tbPutObject(gi_548, "button", 190.0 * scaletoolsize_Percent, -262.0 * scaletoolsize_Percent, 85.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_332, "Live Chat", 18.0 * scaletoolsize_Percent, "Arial Black");
   tbSetBgColor(gi_548, gi_332, 41215);
   tbSetTextColor(gi_548, gi_332, 0);
   if (Member_Email == "Trial") {
      gi_336 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, -295.0 * scaletoolsize_Percent, 140.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent,
         "");
      tbSetText(gi_548, gi_336, "Free Orientation", 18.0 * scaletoolsize_Percent, "Arial Black");
      tbSetBgColor(gi_548, gi_336, 16760992);
      tbSetTextColor(gi_548, gi_336, 0);
   }
}

int f0_19() {
   f0_14();
   gi_292 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -250.0 * scaletoolsize_Percent, 175.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_292, "DDSMM Instant v" + gs_232, 20.0 * scaletoolsize_Percent, "Arial");
   gi_296 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -230.0 * scaletoolsize_Percent, 260.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
   gi_348 = tbPutObject(gi_548, "checkbox", 15.0 * scaletoolsize_Percent, -190.0 * scaletoolsize_Percent, 70.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_348, "Hide", 16.0 * scaletoolsize_Percent, "Arial");
   gi_352 = tbPutObject(gi_548, "checkbox", 85.0 * scaletoolsize_Percent, -190.0 * scaletoolsize_Percent, 65.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_352, "Disable", 16.0 * scaletoolsize_Percent, "Arial");
   gi_368 = tbPutObject(gi_548, "checkbox", 150.0 * scaletoolsize_Percent, -190.0 * scaletoolsize_Percent, 125.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_368, "Enable Trailing", 16.0 * scaletoolsize_Percent, "Arial");
   gi_360 = tbPutObject(gi_548, "checkbox", 15.0 * scaletoolsize_Percent, -170.0 * scaletoolsize_Percent, 70.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_360, "B/E +" + BE_Plus_Pips, 16.0 * scaletoolsize_Percent, "Arial");
   gi_364 = tbPutObject(gi_548, "checkbox", 85.0 * scaletoolsize_Percent, -170.0 * scaletoolsize_Percent, 90.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_364, "Modify Ord", 16.0 * scaletoolsize_Percent, "Arial");
   gi_356 = tbPutObject(gi_548, "checkbox", 175.0 * scaletoolsize_Percent, -170.0 * scaletoolsize_Percent, 100.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_356, "Use Pending", 16.0 * scaletoolsize_Percent, "Arial");
   gd_376 = f0_21();
   gi_308 = tbPutObject(gi_548, "button", 150.0 * scaletoolsize_Percent, -140.0 * scaletoolsize_Percent, 125.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent,
      "");
   tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
   gi_312 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, -140.0 * scaletoolsize_Percent, 125.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent,
      "Sell " + DoubleToStr(gd_376, 2));
   tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
   gi_316 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, -95.0 * scaletoolsize_Percent, 260.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_316, "Close All - Magic #" + Magic_ID, 16.0 * scaletoolsize_Percent, "Arial");
   f0_16();
   tbSetBgColor(gi_548, gi_308, 16760992);
   tbSetBgColor(gi_548, gi_312, 8421631);
   tbSetBgColor(gi_548, gi_316, 10551295);
   tbSetBgColor(gi_548, gi_292, 0);
   tbSetTextColor(gi_548, gi_292, 16777215);
   tbSetBgColor(gi_548, gi_296, 0);
   tbSetTextColor(gi_548, gi_296, 13882323);
   tbSetBgColor(gi_548, gi_364, 0);
   tbSetTextColor(gi_548, gi_364, 55295);
   tbSetBgColor(gi_548, gi_352, 0);
   tbSetTextColor(gi_548, gi_352, 255);
   tbSetBgColor(gi_548, gi_356, 0);
   tbSetTextColor(gi_548, gi_356, 55295);
   tbSetBgColor(gi_548, gi_348, 0);
   tbSetTextColor(gi_548, gi_348, 255);
   tbSetBgColor(gi_548, gi_368, 0);
   tbSetTextColor(gi_548, gi_368, 255);
   tbSetBgColor(gi_548, gi_360, 0);
   tbSetTextColor(gi_548, gi_360, 55295);
   return (0);
}

int f0_3() {
   if (gi_388) {
      tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Ask, Digits), 16.0 * scaletoolsize_Percent, "Arial");
      tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Bid, Digits), 16.0 * scaletoolsize_Percent, "Arial");
      gi_320 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, -55.0 * scaletoolsize_Percent, 260.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
      tbSetText(gi_548, gi_320, "Delete All Pending Magic #" + Magic_ID, 16.0 * scaletoolsize_Percent, "Arial");
      tbSetBgColor(gi_548, gi_320, 16777215);
      ObjectCreate("DDSMM Pending Order Price", OBJ_HLINE, 0, 0, Bid);
      ObjectSet("DDSMM Pending Order Price", OBJPROP_COLOR, Pending_Order_Line_color);
      ObjectSet("DDSMM Pending Order Price", OBJPROP_WIDTH, 2);
   } else {
      tbRemove(gi_548, gi_320);
      ObjectDelete("DDSMM Pending Order Price");
      tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
      tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
   }
   return (0);
}

int f0_15() {
   if (gi_396) f0_0();
   else {
      tbRemove(gi_548, gi_372);
      tbRemove(gi_548, gi_324);
      gi_324 = 0;
      ObjectDelete("DDSMM SL Price");
      ObjectDelete("DDSMM TP Price");
      if (!gi_388) ObjectDelete("DDSMM Pending Order Price");
      gi_460 = FALSE;
   }
   return (0);
}

int f0_9() {
   if (gi_400) f0_0();
   else {
      tbRemove(gi_548, gi_372);
      tbRemove(gi_548, gi_328);
      gi_328 = 0;
      gi_464 = FALSE;
   }
   return (0);
}

int f0_0() {
   tbRemove(gi_548, gi_372);
   gi_372 = tbPutObject(gi_548, "list", 15.0 * scaletoolsize_Percent, 10.0 * scaletoolsize_Percent, 160.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_372, "Modify Order", 16.0 * scaletoolsize_Percent, "Arial");
   tbAddListItem(gi_548, gi_372, "Select An Order");
   tbSetListSel(gi_548, gi_372, 0);
   tbSetBgColor(gi_548, gi_372, 0);
   tbSetTextColor(gi_548, gi_372, 55295);
   for (int pos_0 = 0; pos_0 < OrdersTotal(); pos_0++) {
      if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES))
         if (OrderMagicNumber() == Magic_ID && OrderSymbol() == Symbol()) tbAddListItem(gi_548, gi_372, OrderTicket());
   }
   return (0);
}

int start() {
   string ls_0;
   string ls_8;
   string ls_16;
   int is_closed_28;
   int is_closed_32;
   int ticket_44;
   bool bool_48;
   int error_52;
   int error_56;
   int cmd_60;
   int ticket_64;
   bool bool_68;
   int error_72;
   int error_76;
   int ticket_80;
   bool bool_84;
   int error_88;
   int error_92;
   int cmd_96;
   int ticket_100;
   bool bool_104;
   int error_108;
   int error_112;
   f0_7(2, " ");
   if (!gi_496) f0_18();
   if (IsTesting()) {
      Print("Testing Not Allowed");
      f0_1();
      return (0);
   }
   f0_4();
   if (tbIsClicked(gi_548, gi_340)) ShellExecuteA(0, "open", gs_524, 0, 0, 5);
   if (tbIsClicked(gi_548, gi_344)) {
      if (gi_340 > 0) tbRemove(gi_548, gi_340);
      if (gi_344 > 0) tbRemove(gi_548, gi_344);
      tbRemove(gi_548, gi_304);
   }
   if (tbIsClicked(gi_548, gi_336)) ShellExecuteA(0, "open", "https://ddsmm.forexdecoder.com/orientation/?mt4trial=1", 0, 0, 5);
   if (tbIsClicked(gi_548, gi_332)) {
      ls_0 = "";
      if (Member_Email == "Trial") ls_0 = "info@forexdecoder.com";
      else ls_0 = Member_Email;
      ShellExecuteA(0, "open", "https://members.forexdecoder.com/chat.php?u=" + ls_0 + "&n=DDSMM Instant User", 0, 0, 5);
   }
   if (Member_Email == "Trial" && GetTickCount() - gi_520 > 300000) {
      ls_8 = FXDEC_Info_Feed("3", gi_548);
      ls_16 = StringSubstr(ls_8, 0, StringFind(ls_8, "_", 0));
      gs_524 = StringSubstr(ls_8, StringFind(ls_8, "_", 0) + 1, 0);
      if (ls_8 != gs_532) {
         Alert("DDSMM Instant - New Message: " + ls_16);
         tbRemove(gi_548, gi_304);
         if (gi_340 > 0) tbRemove(gi_548, gi_340);
         if (gi_344 > 0) tbRemove(gi_548, gi_344);
         gi_344 = tbPutObject(gi_548, "button", 550.0 * scaletoolsize_Percent, -270.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent, 20.0 * scaletoolsize_Percent,
            "");
         tbSetText(gi_548, gi_344, "X", 14.0 * scaletoolsize_Percent, "Arial Black");
         tbSetBgColor(gi_548, gi_344, 0);
         tbSetTextColor(gi_548, gi_344, 255);
         gi_304 = tbPutObject(gi_548, "label", 300.0 * scaletoolsize_Percent, -250.0 * scaletoolsize_Percent, 300.0 * scaletoolsize_Percent, 120.0 * scaletoolsize_Percent,
            "");
         tbSetText(gi_548, gi_304, ls_16, 22.0 * scaletoolsize_Percent, "Arial");
         tbSetBgColor(gi_548, gi_304, 0);
         tbSetTextColor(gi_548, gi_304, 16777215);
         gs_532 = ls_8;
         if (gs_524 != "") {
            gi_340 = tbPutObject(gi_548, "button", 405.0 * scaletoolsize_Percent, -170.0 * scaletoolsize_Percent, 90.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent,
               "");
            tbSetText(gi_548, gi_340, "Click Here", 18.0 * scaletoolsize_Percent, "Arial Black");
            tbSetBgColor(gi_548, gi_340, 41215);
            tbSetTextColor(gi_548, gi_340, 0);
         }
         gi_520 = GetTickCount();
      }
   }
   if (gd_376 == 0.0 || OrdersTotal() != g_order_total_444 || OrdersTotal() > 0 || OrdersHistoryTotal() != g_hist_total_448) {
      gd_376 = f0_21();
      if (gi_388) {
         tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(gd_452 + MarketInfo(Symbol(), MODE_SPREAD) * Point, Digits), 16.0 * scaletoolsize_Percent,
            "Arial");
         tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(gd_452, Digits), 16.0 * scaletoolsize_Percent, "Arial");
      } else {
         tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
         tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
      }
      if (gi_396 && OrdersTotal() != g_order_total_444 || OrdersHistoryTotal() != g_hist_total_448) f0_0();
      g_order_total_444 = OrdersTotal();
      g_hist_total_448 = OrdersHistoryTotal();
   }
   if (tbIsChecked(gi_548, gi_368)) {
      if (!gi_404) {
         GlobalVariablesDeleteAll("ddsmmtrail_");
         gi_404 = TRUE;
      }
      for (int pos_24 = 0; pos_24 < OrdersTotal(); pos_24++) {
         OrderSelect(pos_24, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() > OP_SELL || OrderMagicNumber() != Magic_ID || OrderSymbol() != Symbol()) continue;
         if (OrderType() == OP_BUY) {
            if (Bid - OrderOpenPrice() >= TrailStop_Activate_Pips * Point * gi_248 || GlobalVariableGet("ddsmmtrail_" + OrderTicket()) > 0.0 && Bid - TrailStop_AwayFromPrice_Pips * Point * gi_248 > GlobalVariableGet("ddsmmtrail_" +
               OrderTicket())) {
               if (!Enable_Stealth_Trailing) {
                  if (TrailStop_AwayFromPrice_Pips * Point * gi_248 >= MarketInfo(Symbol(), MODE_STOPLEVEL) * Point && TrailStop_AwayFromPrice_Pips * Point * gi_248 > MarketInfo(Symbol(),
                     MODE_FREEZELEVEL) * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailStop_AwayFromPrice_Pips * Point * gi_248, OrderTakeProfit(), 0, Yellow);
               }
               GlobalVariableSet("ddsmmtrail_" + OrderTicket(), MathMax(GlobalVariableGet("ddsmmtrail_" + OrderTicket()), Bid - TrailStop_AwayFromPrice_Pips * Point * gi_248));
            }
            if (GlobalVariableGet("ddsmmtrail_" + OrderTicket()) > 0.0 && Bid <= GlobalVariableGet("ddsmmtrail_" + OrderTicket())) {
               is_closed_28 = OrderClose(OrderTicket(), OrderLots(), Bid, Trail_Max_Slippage_Stealth_Pips, Blue);
               if (is_closed_28 > 0) {
                  Print("Trailing Stop Closed order- ", OrderTicket(), " at Bid: ", Bid);
                  continue;
               }
               Print("Trailing Stop could NOT close order- ", OrderTicket(), " error: ", is_closed_28);
            }
         } else {
            if (OrderType() == OP_SELL) {
               if (OrderOpenPrice() - Ask >= TrailStop_Activate_Pips * Point * gi_248 || GlobalVariableGet("ddsmmtrail_" + OrderTicket()) > 0.0 && Ask + TrailStop_AwayFromPrice_Pips * Point * gi_248 < GlobalVariableGet("ddsmmtrail_" +
                  OrderTicket()) || GlobalVariableGet("ddsmmtrail_" + OrderTicket()) == 0.0) {
                  if (!Enable_Stealth_Trailing) {
                     if (TrailStop_AwayFromPrice_Pips * Point * gi_248 >= MarketInfo(Symbol(), MODE_STOPLEVEL) * Point && TrailStop_AwayFromPrice_Pips * Point * gi_248 > MarketInfo(Symbol(),
                        MODE_FREEZELEVEL) * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TrailStop_AwayFromPrice_Pips * Point * gi_248, OrderTakeProfit(), 0, Yellow);
                  }
                  if (GlobalVariableGet("ddsmmtrail_" + OrderTicket()) == 0.0) GlobalVariableSet("ddsmmtrail_" + OrderTicket(), Ask + TrailStop_AwayFromPrice_Pips * Point * gi_248);
                  else GlobalVariableSet("ddsmmtrail_" + OrderTicket(), MathMin(GlobalVariableGet("ddsmmtrail_" + OrderTicket()), Ask + TrailStop_AwayFromPrice_Pips * Point * gi_248));
               }
               if (GlobalVariableGet("ddsmmtrail_" + OrderTicket()) > 0.0 && Ask >= GlobalVariableGet("ddsmmtrail_" + OrderTicket())) {
                  is_closed_32 = OrderClose(OrderTicket(), OrderLots(), Ask, Trail_Max_Slippage_Stealth_Pips, Blue);
                  if (is_closed_32 > 0) {
                     Print("Trailing Stop Closed order- ", OrderTicket(), " at Ask: ", Ask);
                     continue;
                  }
                  Print("Trailing Stop could NOT close order- ", OrderTicket(), " error: ", is_closed_32);
               }
            }
         }
      }
      for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES);
   } else {
      if (gi_404) {
         GlobalVariablesDeleteAll("ddsmmtrail_");
         gi_404 = FALSE;
         for (int pos_40 = 0; pos_40 < OrdersTotal(); pos_40++) OrderSelect(pos_40, SELECT_BY_POS, MODE_TRADES);
      }
   }
   if (gi_388 && ObjectGet("DDSMM Pending Order Price", OBJPROP_PRICE1) != gd_452) {
      gd_452 = ObjectGet("DDSMM Pending Order Price", OBJPROP_PRICE1);
      tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(gd_452 + MarketInfo(Symbol(), MODE_SPREAD) * Point, Digits), 16.0 * scaletoolsize_Percent,
         "Arial");
      tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(gd_452, Digits), 16.0 * scaletoolsize_Percent, "Arial");
   }
   if (!gi_384) {
      if (tbIsClicked(gi_548, gi_308)) {
         if (enable_sounds) PlaySound("ok.wav");
         gd_376 = f0_21();
         if (!tbIsChecked(gi_548, gi_356)) {
            ticket_44 = OrderSend(Symbol(), OP_BUY, f0_11(gd_376), Ask, 3, 0, 0, Trade_Comment, Magic_ID);
            if (OrderSelect(ticket_44, SELECT_BY_TICKET) && default_stoploss_Pips >= 0.0 && default_takeprofit_Pips >= 0.0) {
               bool_48 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - default_stoploss_Pips * Point * gi_248, OrderOpenPrice() + default_takeprofit_Pips * Point * gi_248,
                  0);
               if (!bool_48) {
                  error_52 = GetLastError();
                  Alert("Error Modifying Trade: error(", error_52, "): ", ErrorDescription(error_52));
                  RefreshRates();
               }
            } else {
               if (GetLastError() > 0/* NO_ERROR */) {
                  error_56 = GetLastError();
                  Alert("Error Opening Buy Trade: error(", error_56, "): ", ErrorDescription(error_56), OrderOpenPrice(), " ", Ask);
                  RefreshRates();
               }
            }
         } else {
            cmd_60 = 0;
            if (gd_452 < Ask) cmd_60 = 2;
            else
               if (gd_452 > Ask) cmd_60 = 4;
            ticket_64 = OrderSend(Symbol(), cmd_60, f0_11(gd_376), NormalizeDouble(gd_452, Digits) + MarketInfo(Symbol(), MODE_SPREAD) * Point, 3, 0, 0, Trade_Comment, Magic_ID);
            if (OrderSelect(ticket_64, SELECT_BY_TICKET) && default_stoploss_Pips >= 0.0 && default_takeprofit_Pips >= 0.0) {
               bool_68 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - default_stoploss_Pips * Point * gi_248, OrderOpenPrice() + default_takeprofit_Pips * Point * gi_248,
                  0);
               if (!bool_68) {
                  error_72 = GetLastError();
                  Alert("Error Modifying Trade: error(", error_72, "): ", ErrorDescription(error_72));
                  RefreshRates();
               }
            } else {
               if (GetLastError() > 0/* NO_ERROR */) {
                  error_76 = GetLastError();
                  Alert("Error Opening Buy Trade: error(", error_76, "): ", ErrorDescription(error_76));
                  RefreshRates();
               }
            }
         }
         RefreshRates();
         gd_376 = f0_21();
         if (gi_388) {
            tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Ask, Digits), 16.0 * scaletoolsize_Percent, "Arial");
            tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Bid, Digits), 16.0 * scaletoolsize_Percent, "Arial");
         } else {
            tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
            tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
         }
      }
      if (tbIsClicked(gi_548, gi_312)) {
         if (enable_sounds) PlaySound("ok.wav");
         gd_376 = f0_21();
         if (!tbIsChecked(gi_548, gi_356)) {
            ticket_80 = OrderSend(Symbol(), OP_SELL, f0_11(gd_376), Bid, 3, 0, 0, Trade_Comment, Magic_ID);
            if (OrderSelect(ticket_80, SELECT_BY_TICKET) && default_stoploss_Pips >= 0.0 && default_takeprofit_Pips >= 0.0) {
               bool_84 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + default_stoploss_Pips * Point * gi_248, OrderOpenPrice() - default_takeprofit_Pips * Point * gi_248,
                  0);
               if (!bool_84) {
                  error_88 = GetLastError();
                  Alert("Error Modifying Trade: error(", error_88, "): ", ErrorDescription(error_88));
                  RefreshRates();
               }
            } else {
               if (GetLastError() > 0/* NO_ERROR */) {
                  error_92 = GetLastError();
                  Alert("Error Opening Sell Trade: error(", error_92, "): ", ErrorDescription(error_92));
                  RefreshRates();
               }
            }
         } else {
            cmd_96 = 0;
            if (gd_452 > Bid) cmd_96 = 3;
            else
               if (gd_452 < Bid) cmd_96 = 5;
            ticket_100 = OrderSend(Symbol(), cmd_96, f0_11(gd_376), NormalizeDouble(gd_452, Digits), 3, 0, 0, Trade_Comment, Magic_ID);
            if (OrderSelect(ticket_100, SELECT_BY_TICKET) && default_stoploss_Pips >= 0.0 && default_takeprofit_Pips >= 0.0) {
               bool_104 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + default_stoploss_Pips * Point * gi_248, OrderOpenPrice() - default_takeprofit_Pips * Point * gi_248,
                  0);
               if (!bool_104) {
                  error_108 = GetLastError();
                  Alert("Error Modifying Trade: error(", error_108, "): ", ErrorDescription(error_108));
                  RefreshRates();
               }
            } else {
               if (GetLastError() > 0/* NO_ERROR */) {
                  error_112 = GetLastError();
                  Alert("Error Opening Sell Trade: error(", error_112, "): ", ErrorDescription(error_112));
                  RefreshRates();
               }
            }
         }
         RefreshRates();
         gd_376 = f0_21();
         if (gi_388) {
            tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Ask, Digits), 16.0 * scaletoolsize_Percent, "Arial");
            tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2) + "  at  " + DoubleToStr(Bid, Digits), 16.0 * scaletoolsize_Percent, "Arial");
         } else {
            tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
            tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
         }
      }
      if (tbIsClicked(gi_548, gi_316)) {
         if (enable_sounds) PlaySound("ok.wav");
         f0_10(3, Magic_ID);
         RefreshRates();
         gd_376 = f0_21();
         tbSetText(gi_548, gi_308, "Buy " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
         tbSetText(gi_548, gi_312, "Sell " + DoubleToStr(gd_376, 2), 16.0 * scaletoolsize_Percent, "Arial");
      }
      if (tbIsClicked(gi_548, gi_320)) {
         if (enable_sounds) PlaySound("ok.wav");
         f0_2(Magic_ID);
      }
   } else
      if (gi_384 && tbIsClicked(gi_548, gi_308) || tbIsClicked(gi_548, gi_312) || tbIsClicked(gi_548, gi_320) || tbIsClicked(gi_548, gi_316) || tbIsClicked(gi_548, gi_324)) Alert("Uncheck the \"Disable Buttons\" box to activate trading buttons");
   if (gi_384 != tbIsChecked(gi_548, gi_352)) {
      if (enable_sounds) PlaySound("news.wav");
      gi_384 = !gi_384;
   }
   if (gi_388 != tbIsChecked(gi_548, gi_356)) {
      gi_388 = !gi_388;
      f0_3();
   }
   if (gi_396 != tbIsChecked(gi_548, gi_364)) {
      gi_408 = FALSE;
      gi_396 = !gi_396;
      f0_15();
      if (gi_396) {
         gi_484 = FALSE;
         f0_6();
      } else gi_484 = TRUE;
   }
   if (gi_400 != tbIsChecked(gi_548, gi_360)) {
      gi_408 = FALSE;
      gi_400 = !gi_400;
      f0_9();
      if (gi_400) {
         gi_480 = FALSE;
         f0_12();
      } else gi_480 = TRUE;
   }
   if (tbIsChecked(gi_548, gi_348)) {
      if (gi_392) {
         f0_19();
         gi_392 = FALSE;
      } else {
         f0_8();
         gi_392 = TRUE;
      }
   }
   return (0);
}

int f0_12() {
   int li_16;
   bool bool_20;
   int error_24;
   int count_28;
   double order_open_price_0 = 0.0;
   double ld_8 = -1;
   while (!gi_480) {
      if (gi_328 > 0 && tbIsClicked(gi_548, gi_328)) {
         if (enable_sounds) PlaySound("ok.wav");
         if (!gi_384) {
            if (OrderSelect(g_ticket_472, SELECT_BY_TICKET, MODE_TRADES)) {
               li_16 = BE_Plus_Pips;
               if (OrderType() == OP_SELL) li_16 = -li_16;
               bool_20 = OrderModify(g_ticket_472, OrderOpenPrice(), OrderOpenPrice() + li_16 * Point * gi_248, OrderTakeProfit(), OrderExpiration(), CLR_NONE);
               if (!bool_20 && GetLastError() != 1/* NO_RESULT */) {
                  error_24 = GetLastError();
                  Alert("Error Modifying B/E Trade: error(", error_24, "): ", ErrorDescription(error_24), " ", OrderOpenPrice() + BE_Plus_Pips * Point * gi_248);
                  RefreshRates();
               } else {
                  tbRemove(gi_548, gi_328);
                  tbSetListSel(gi_548, gi_372, 0);
                  gi_328 = 0;
               }
            }
         } else
            if (gi_384) Alert("Uncheck the \"Disable Buttons\" box to activate trading buttons");
         gi_400 = FALSE;
      }
      if (gi_400 != tbIsChecked(gi_548, gi_360)) {
         gi_400 = tbIsChecked(gi_548, gi_360);
         f0_9();
         if (gi_400) {
            gi_480 = FALSE;
            f0_12();
            gi_464 = FALSE;
         } else {
            gi_480 = TRUE;
            tbRemove(gi_548, gi_328);
            gi_328 = 0;
            break;
         }
      }
      if (gi_400 && gi_464 != tbGetListSel(gi_548, gi_372)) {
         Sleep(500);
         g_ticket_472 = 0;
         count_28 = 0;
         for (int pos_32 = 0; pos_32 < OrdersTotal(); pos_32++) {
            if (OrderSelect(pos_32, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderMagicNumber() == Magic_ID && OrderSymbol() == Symbol()) count_28++;
               if (count_28 == tbGetListSel(gi_548, gi_372)) break;
            }
         }
         if (OrderSelect(pos_32, SELECT_BY_POS, MODE_TRADES)) {
            g_ticket_472 = OrderTicket();
            order_open_price_0 = OrderOpenPrice();
            ld_8 = OrderType();
            if (gi_328 == 0) {
               gi_328 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, 50.0 * scaletoolsize_Percent, 160.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
               tbSetText(gi_548, gi_328, "Move # " + g_ticket_472 + " to B/E +" + DoubleToStr(BE_Plus_Pips, 0), 16.0 * scaletoolsize_Percent, "Arial");
               tbSetBgColor(gi_548, gi_328, 10551295);
               tbSetTextColor(gi_548, gi_328, 0);
            } else tbSetText(gi_548, gi_328, "Move # " + g_ticket_472 + " to B/E +" + DoubleToStr(BE_Plus_Pips, 0), 16.0 * scaletoolsize_Percent, "Arial");
            gi_464 = tbGetListSel(gi_548, gi_372);
         } else {
            tbRemove(gi_548, gi_328);
            gi_328 = 0;
            gi_464 = FALSE;
         }
      }
      if (gi_328 > 0 && order_open_price_0 > 0.0 && ld_8 != -1.0) {
         RefreshRates();
         if (ld_8 == 0.0 && Bid - (order_open_price_0 + BE_Plus_Pips * Point) >= MarketInfo(Symbol(), MODE_STOPLEVEL) * Point || Bid - (order_open_price_0 + BE_Plus_Pips * Point) >= MarketInfo(Symbol(),
            MODE_FREEZELEVEL) * Point) tbEnable(gi_548, gi_328, 1);
         else {
            if (ld_8 == 0.0 && Bid - (order_open_price_0 + BE_Plus_Pips * Point) < MarketInfo(Symbol(), MODE_STOPLEVEL) * Point) tbEnable(gi_548, gi_328, 0);
            else {
               if (ld_8 == 1.0 && order_open_price_0 - BE_Plus_Pips * Point - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL) * Point) tbEnable(gi_548, gi_328, 1);
               else
                  if (ld_8 == 1.0 && order_open_price_0 - BE_Plus_Pips * Point - Ask < MarketInfo(Symbol(), MODE_STOPLEVEL) * Point) tbEnable(gi_548, gi_328, 0);
            }
         }
      }
      if (!gi_408 && tbIsChecked(gi_548, gi_356) || tbIsChecked(gi_548, gi_364) || tbIsChecked(gi_548, gi_368) || tbIsClicked(gi_548, gi_308) || tbIsClicked(gi_548, gi_312) ||
         tbIsClicked(gi_548, gi_320) || tbIsClicked(gi_548, gi_316) || tbIsClicked(gi_548, gi_324)) {
         Alert("Uncheck the B/E + " + BE_Plus_Pips + " checkbox to enable trading buttons!");
         gi_408 = TRUE;
      }
      Sleep(1000);
   }
   return (0);
}

int f0_6() {
   double price_0;
   double price_8;
   double price_16;
   bool bool_24;
   int error_28;
   int count_32;
   double price_40;
   double price_48;
   while (!gi_484) {
      if (tbIsClicked(gi_548, gi_324)) {
         if (enable_sounds) PlaySound("ok.wav");
         if (!gi_384) {
            price_0 = ObjectGet("DDSMM SL Price", OBJPROP_PRICE1);
            price_8 = ObjectGet("DDSMM TP Price", OBJPROP_PRICE1);
            price_16 = ObjectGet("DDSMM Pending Order Price", OBJPROP_PRICE1);
            bool_24 = OrderModify(g_ticket_468, price_16, price_0, price_8, OrderExpiration(), CLR_NONE);
            if (!bool_24 && GetLastError() != 1/* NO_RESULT */) {
               error_28 = GetLastError();
               Alert("Error Modifying Trade: error(", error_28, "): ", ErrorDescription(error_28), " ", price_16, " ", price_0, " ", price_8);
               RefreshRates();
            } else {
               tbRemove(gi_548, gi_324);
               gi_324 = 0;
               tbSetListSel(gi_548, gi_372, 0);
               ObjectDelete("DDSMM SL Price");
               ObjectDelete("DDSMM TP Price");
               if (!gi_388) ObjectDelete("DDSMM Pending Order Price");
            }
         } else
            if (gi_384) Alert("Uncheck the \"Disable Buttons\" box to activate trading buttons");
      }
      if (gi_396 != tbIsChecked(gi_548, gi_364)) {
         gi_396 = tbIsChecked(gi_548, gi_364);
         f0_15();
         if (gi_396) {
            gi_484 = FALSE;
            f0_6();
            gi_460 = FALSE;
         } else {
            gi_484 = TRUE;
            tbRemove(gi_548, gi_324);
            gi_324 = 0;
            ObjectDelete("DDSMM SL Price");
            ObjectDelete("DDSMM TP Price");
            if (!(!gi_388)) break;
            ObjectDelete("DDSMM Pending Order Price");
            break;
         }
      }
      if (gi_396 && gi_460 != tbGetListSel(gi_548, gi_372)) {
         Sleep(500);
         g_ticket_468 = 0;
         count_32 = 0;
         for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) {
            if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderMagicNumber() == Magic_ID && OrderSymbol() == Symbol()) count_32++;
               if (count_32 == tbGetListSel(gi_548, gi_372)) break;
            }
         }
         if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
            g_ticket_468 = OrderTicket();
            price_40 = 0.0;
            price_48 = 0.0;
            if (OrderStopLoss() != 0.0) price_40 = OrderStopLoss();
            else {
               if (OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP) price_40 = WindowPriceMin(0) + 1.0 * Point * gi_248;
               else price_40 = WindowPriceMax(0) - 1.0 * Point * gi_248;
            }
            if (OrderTakeProfit() != 0.0) price_48 = OrderTakeProfit();
            else {
               if (OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP) price_48 = WindowPriceMax(0) - 1.0 * Point * gi_248;
               else price_48 = WindowPriceMin(0) + 1.0 * Point * gi_248;
            }
            if (gi_324 == 0) {
               gi_324 = tbPutObject(gi_548, "button", 15.0 * scaletoolsize_Percent, 50.0 * scaletoolsize_Percent, 160.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
               tbSetText(gi_548, gi_324, "Modify order #" + g_ticket_468, 16.0 * scaletoolsize_Percent, "Arial");
               tbSetBgColor(gi_548, gi_324, 10551295);
               tbSetTextColor(gi_548, gi_324, 0);
            } else tbSetText(gi_548, gi_324, "Modify order #" + g_ticket_468, 16.0 * scaletoolsize_Percent, "Arial");
            if (OrderType() > OP_SELL && OrderOpenPrice() != 0.0) {
               ObjectDelete("DDSMM Pending Order Price");
               ObjectCreate("DDSMM Pending Order Price", OBJ_HLINE, 0, 0, OrderOpenPrice());
               ObjectSet("DDSMM Pending Order Price", OBJPROP_COLOR, Pending_Order_Line_color);
               ObjectSet("DDSMM Pending Order Price", OBJPROP_WIDTH, 2);
            }
            ObjectDelete("DDSMM SL Price");
            ObjectCreate("DDSMM SL Price", OBJ_HLINE, 0, 0, price_40);
            ObjectSet("DDSMM SL Price", OBJPROP_COLOR, Stoploss_Line_color);
            ObjectSet("DDSMM SL Price", OBJPROP_WIDTH, 2);
            ObjectDelete("DDSMM TP Price");
            ObjectCreate("DDSMM TP Price", OBJ_HLINE, 0, 0, price_48);
            ObjectSet("DDSMM TP Price", OBJPROP_COLOR, Target_Line_color);
            ObjectSet("DDSMM TP Price", OBJPROP_WIDTH, 2);
            f0_13();
            gi_460 = tbGetListSel(gi_548, gi_372);
         } else {
            tbRemove(gi_548, gi_324);
            gi_324 = 0;
            ObjectDelete("DDSMM SL Price");
            ObjectDelete("DDSMM TP Price");
            if (!gi_388) ObjectDelete("DDSMM Pending Order Price");
            gi_460 = FALSE;
            f0_13();
         }
      }
      if (!gi_408 && tbIsChecked(gi_548, gi_356) || tbIsChecked(gi_548, gi_360) || tbIsChecked(gi_548, gi_368) || tbIsClicked(gi_548, gi_308) || tbIsClicked(gi_548, gi_312) ||
         tbIsClicked(gi_548, gi_320) || tbIsClicked(gi_548, gi_316) || tbIsClicked(gi_548, gi_328)) {
         Alert("Uncheck the Modify an order checkbox to enable trading buttons!");
         gi_408 = TRUE;
      }
      Sleep(1000);
   }
   return (0);
}

double f0_17() {
   double lda_4[25];
   int count_0 = 0;
   PostMessageA(GetParent(gi_548), WM_COMMAND, 33058, 0);
   for (int pos_8 = OrdersHistoryTotal() - 1; 5 * count_0 < 25; pos_8--) {
      if (pos_8 <= 0) break;
      if (OrderSelect(pos_8, SELECT_BY_POS, MODE_HISTORY)) {
         if ((!(OrderType() == OP_BUY)) && !(OrderType() == OP_SELL) || OrderMagicNumber() < Magic_ID) continue;
         lda_4[5 * count_0] = OrderType();
         lda_4[5 * count_0 + 1] = OrderMagicNumber();
         lda_4[5 * count_0 + 2] = OrderCloseTime();
         lda_4[5 * count_0 + 3] = OrderProfit();
         lda_4[5 * count_0 + 4] = OrderLots();
         count_0++;
      }
   }
   double tickvalue_12 = MarketInfo(Symbol(), MODE_TICKVALUE);
   double ld_20 = 1.0 * AccountLeverage();
   int marginrequired_28 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   if (IsSpreadBettingAccount) ld_20 = 100.0 * (1000 / marginrequired_28);
   return (FXDEC_LotsSwansonDelta(AccountBalance(), Starting_Point_Account_Balance, AccountFreeMargin(), ld_20, max_drawdown_risk_Percent, max_risk_per_trade_Percent,
      max_stop_loss_Pips, count_0, g_minlot_260, 2, gd_240, tickvalue_12, gi_248, lda_4, gd_276, gi_548));
}

double f0_21() {
   double minlot_0 = MarketInfo(Symbol(), MODE_MINLOT);
   double minlot_8 = f0_17();
   if (minlot_8 < minlot_0) minlot_8 = minlot_0;
   return (f0_11(minlot_8));
}

int f0_10(int a_slippage_0, int a_magic_4) {
   int order_total_8 = OrdersTotal();
   while (f0_5(a_magic_4, MODE_TRADES, 0) > 0) {
      Sleep(300);
      for (int pos_12 = 0; pos_12 < order_total_8; pos_12++) {
         if (OrderSelect(pos_12, SELECT_BY_POS)) {
            if (OrderMagicNumber() == a_magic_4) {
               RefreshRates();
               Print("DDSMM Instant - Closing trade #", OrderTicket());
               if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), a_slippage_0);
               RefreshRates();
               if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), a_slippage_0);
            }
         }
      }
   }
   return (0);
}

int f0_2(int a_magic_0) {
   int order_total_4 = OrdersTotal();
   while (f0_5(a_magic_0, MODE_TRADES, 1) > 0) {
      Sleep(300);
      for (int pos_8 = 0; pos_8 < order_total_4; pos_8++) {
         if (OrderSelect(pos_8, SELECT_BY_POS)) {
            if (OrderMagicNumber() == a_magic_0) {
               RefreshRates();
               Print("DDSMM Instant - Deleting trade #", OrderTicket());
               OrderDelete(OrderTicket());
            }
         }
      }
   }
   return (0);
}

int f0_5(int a_magic_0, int ai_4, int ai_8) {
   int li_12 = 0;
   int count_16 = 0;
   if (ai_4 == MODE_TRADES) li_12 = OrdersTotal();
   if (ai_4 == MODE_HISTORY) li_12 = OrdersHistoryTotal();
   for (int pos_20 = 0; pos_20 < li_12; pos_20++) {
      if (OrderSelect(pos_20, SELECT_BY_POS, ai_4)) {
         if (!ai_8 && OrderType() > OP_SELL && OrderType() < 6) continue;
         if (ai_8 && OrderType() < OP_BUYLIMIT || OrderType() > OP_SELLSTOP) continue;
         if (OrderMagicNumber() == a_magic_0) count_16++;
      }
   }
   return (count_16);
}

int f0_20() {
   if (!IsDllsAllowed()) {
      gs_540 = "\'Allow DLL imports\' must be checked! Press F7, click common tab, make sure it\'s checked.";
      Alert(gs_540);
      f0_7(1, "\'Allow DLL imports\' must be checked! Press F7 to check.");
   } else {
      if ((!IsConnected()) || IsStopped()) {
         gs_540 = "No Price Feed! Check if market is closed, or error on bottom right of MT4.";
         f0_7(1, gs_540);
         tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
         tbSetTextColor(gi_548, gi_296, 255);
      } else {
         if (IsTesting()) {
            gs_540 = "EA Cannot Be Backtested! For backtesting use the DDSMM Spreadsheet.";
            tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
            tbSetTextColor(gi_548, gi_296, 255);
         } else {
            if (!IsExpertEnabled()) {
               gs_540 = "Click red \'Expert Advisors\' button at top of platform, turns green to enable EAs.";
               tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
               tbSetTextColor(gi_548, gi_296, 255);
               while (!IsExpertEnabled()) Sleep(1000);
            } else {
               if (StringFind(Member_Email, " ", 0) > -1) {
                  gs_540 = "Enter a valid email address! Press F7, check the email you enter has no spaces.";
                  tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                  tbSetTextColor(gi_548, gi_296, 255);
               } else {
                  if (StringFind(Member_Password, " ", 0) > -1) {
                     gs_540 = "Enter a valid password! Press F7 and double check the password you enter has no spaces.";
                     tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                     tbSetTextColor(gi_548, gi_296, 255);
                  } else {
                     if (Starting_Point_Account_Balance == 0.0) {
                        gs_540 = "Enter a valid Starting Point Account Balance! Press F7, enter current account balance.";
                        tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                        tbSetTextColor(gi_548, gi_296, 255);
                     } else {
                        if (max_drawdown_risk_Percent > 50.0 || max_risk_per_trade_Percent > max_drawdown_risk_Percent) {
                           gs_540 = "Change max drawdown risk and max risk per trade values! Press F7, enter > 0 and < 50.";
                           tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                           tbSetTextColor(gi_548, gi_296, 255);
                        } else {
                           if (max_stop_loss_Pips <= 0.0 || max_stop_loss_Pips > 1000.0) {
                              gs_540 = "Enter a valid max stop loss in pips 0 to 1000, helps ddsmm determine lots to trade.";
                              tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                              tbSetTextColor(gi_548, gi_296, 255);
                           } else {
                              if (default_stoploss_Pips < 0.0 || default_stoploss_Pips > 1000.0 || default_takeprofit_Pips < 0.0 || default_takeprofit_Pips > 1000.0) {
                                 gs_540 = "Enter a valid default stoploss and default target in pips between 0 and 1000.";
                                 tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                 tbSetTextColor(gi_548, gi_296, 255);
                              } else {
                                 if (StringLen(Trade_Comment) >= 30) {
                                    gs_540 = "Enter a valid Trade Comment value less than 30 characters.";
                                    tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                    tbSetTextColor(gi_548, gi_296, 255);
                                 } else {
                                    if (BE_Plus_Pips < -1000 || BE_Plus_Pips > 1000) {
                                       gs_540 = "Enter a valid BE Plus Pips value between -1000 and 1000.";
                                       tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                       tbSetTextColor(gi_548, gi_296, 255);
                                    } else {
                                       if (Magic_ID < 0 || Magic_ID >= D'09.09.2001 05:46:40') {
                                          gs_540 = "Enter a valid Magic ID. Any whole number between 0 and 999999999.";
                                          tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                          tbSetTextColor(gi_548, gi_296, 255);
                                       } else {
                                          if (g_str2int_508 < -1 || g_str2int_508 > EMPTY_VALUE) {
                                             gs_540 = "Authentication Failed! Check your login details.";
                                             tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                             tbSetTextColor(gi_548, gi_296, 255);
                                          } else {
                                             if ((!gi_500) && !Enable_Stealth_Trailing && TrailStop_AwayFromPrice_Pips * Point * gi_248 < MarketInfo(Symbol(), MODE_STOPLEVEL) * Point || TrailStop_AwayFromPrice_Pips * Point * gi_248 <= MarketInfo(Symbol(),
                                                MODE_FREEZELEVEL) * Point) {
                                                Alert("Broker\'s minimum stop distance is " + DoubleToStr(MathMax(MarketInfo(Symbol(), MODE_STOPLEVEL), MarketInfo(Symbol(), MODE_FREEZELEVEL)) * gi_248, 1) + " pips. Using stealth mode instead.");
                                                gi_500 = TRUE;
                                             }
                                             if ((!gi_504) && !IsTradeAllowed()) {
                                                Alert("Live trading is not allowed! Press F7, click common tab, and make sure it is checked.");
                                                gi_504 = TRUE;
                                             }
                                             if (gs_540 == "") {
                                                tbSetText(gi_548, gi_296, "________________________", 16.0 * scaletoolsize_Percent, "Arial");
                                                tbSetTextColor(gi_548, gi_296, 13882323);
                                                f0_7(1, " ");
                                             } else {
                                                tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
                                                tbSetTextColor(gi_548, gi_296, 255);
                                                f0_7(1, StringSubstr(gs_540, 0, 60) + "...");
                                             }
                                             return (0);
                                          }
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
   f0_1();
   f0_16();
   gi_292 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -250.0 * scaletoolsize_Percent, 175.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_292, "DDSMM Instant v" + gs_232, 20.0 * scaletoolsize_Percent, "Arial");
   gi_296 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -230.0 * scaletoolsize_Percent, 260.0 * scaletoolsize_Percent, 40.0 * scaletoolsize_Percent, "");
   tbSetText(gi_548, gi_296, gs_540, 16.0 * scaletoolsize_Percent, "Arial");
   tbSetBgColor(gi_548, gi_292, 0);
   tbSetTextColor(gi_548, gi_292, 16777215);
   tbSetBgColor(gi_548, gi_296, 0);
   tbSetTextColor(gi_548, gi_296, 255);
   f0_13();
   return (1);
}

void f0_13() {
   int li_0 = RegisterWindowMessageA("MetaTrader4_Internal_Message");
   PostMessageA(gi_548, li_0, 2, 1);
}

void f0_4() {
   int count_0;
   string ls_4;
   string ls_12;
   int str2int_20;
   if (TimeDay(TimeCurrent()) != g_day_512 || gi_516 == -90000) {
      g_str2int_508 = 0;
      count_0 = 0;
      while (g_str2int_508 <= 0 || g_str2int_508 > EMPTY_VALUE || gi_516 == -90000 && count_0 < 10) {
         ls_4 = "";
         if (Member_Email == "Trial") ls_4 = "_5823423279";
         ls_12 = FXDEC_Activate(Member_Email + ls_4, Member_Password, "3", gs_232, gi_548);
         g_str2int_508 = StrToInteger(StringSubstr(ls_12, 0, 10));
         str2int_20 = StrToInteger(StringSubstr(ls_12, 11, 1));
         g_day_512 = TimeDay(TimeCurrent());
         if (str2int_20 == 0) {
            tbSetText(gi_548, gi_296, "________________________", 16.0 * scaletoolsize_Percent, "Arial");
            tbSetTextColor(gi_548, gi_296, 13882323);
            gs_540 = "";
            gi_416 = TRUE;
         } else {
            if (str2int_20 == 1) {
               f0_1();
               f0_16();
               gi_292 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -250.0 * scaletoolsize_Percent, 175.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
               tbSetText(gi_548, gi_292, "DDSMM Instant v" + gs_232, 20.0 * scaletoolsize_Percent, "Arial");
               gi_296 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -230.0 * scaletoolsize_Percent, 260.0 * scaletoolsize_Percent, 40.0 * scaletoolsize_Percent, "");
               tbSetText(gi_548, gi_296, "Update Required! Check the member\'s area.", 16.0 * scaletoolsize_Percent, "Arial");
               tbSetBgColor(gi_548, gi_292, 0);
               tbSetTextColor(gi_548, gi_292, 16777215);
               tbSetBgColor(gi_548, gi_296, 0);
               tbSetTextColor(gi_548, gi_296, 255);
               gs_540 = "Update Required! Check the member\'s area.";
               gi_416 = FALSE;
               if (Member_Email != "Trial") return;
               Alert("Your Trial Has Expired, upgrade now!");
               return;
            }
            if (str2int_20 == 2) {
               tbSetText(gi_548, gi_296, "Update Available! Check the member\'s area.", 16.0 * scaletoolsize_Percent, "Arial");
               tbSetTextColor(gi_548, gi_296, 255);
               gs_540 = "Update Available! Check the member\'s area.";
               gi_416 = TRUE;
            } else {
               if (str2int_20 == 3) {
                  f0_1();
                  f0_16();
                  gi_292 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -280.0 * scaletoolsize_Percent, 175.0 * scaletoolsize_Percent, 30.0 * scaletoolsize_Percent, "");
                  tbSetText(gi_548, gi_292, "DDSMM Instant v" + gs_232, 20.0 * scaletoolsize_Percent, "Arial");
                  gi_296 = tbPutObject(gi_548, "label", 15.0 * scaletoolsize_Percent, -250.0 * scaletoolsize_Percent, 230.0 * scaletoolsize_Percent, 40.0 * scaletoolsize_Percent, "");
                  tbSetText(gi_548, gi_296, "Authentication Failed! Check your login details by pressing F7.", 16.0 * scaletoolsize_Percent, "Arial");
                  tbSetBgColor(gi_548, gi_292, 0);
                  tbSetTextColor(gi_548, gi_292, 16777215);
                  tbSetBgColor(gi_548, gi_296, 0);
                  tbSetTextColor(gi_548, gi_296, 255);
                  gs_540 = "Authentication Failed! Check your login details by pressing F7.";
                  gi_416 = FALSE;
                  return;
               }
               if (str2int_20 == 4) {
                  tbSetText(gi_548, gi_296, "Update check unavailable.", 16.0 * scaletoolsize_Percent, "Arial");
                  tbSetTextColor(gi_548, gi_296, 255);
                  gs_540 = "Update check unavailable.";
                  gi_416 = TRUE;
               }
            }
         }
         if (g_str2int_508 > 0) gi_516 = NormalizeDouble(MathRound((TimeCurrent() - g_str2int_508) / 3600.0), 0);
         count_0++;
         Sleep(1000);
      }
      if (f0_20()) {
         f0_1();
         f0_16();
         f0_13();
      }
   } else f0_20();
}

void f0_7(int ai_0, string a_text_4) {
   switch (ai_0) {
   case 1:
      if (g_text_552 == a_text_4) break;
      ObjectSetText("DDSMM_init", a_text_4, 16.0 * scaletoolsize_Percent, "Times New Roman", Red);
      ObjectsRedraw();
      g_text_552 = a_text_4;
      break;
   case 2:
      if (g_text_560 == a_text_4) break;
      ObjectSetText("DDSMM_init2", a_text_4, 16.0 * scaletoolsize_Percent, "Times New Roman", Red);
      ObjectsRedraw();
      g_text_560 = a_text_4;
      return;
   }
}
