Jump to content

brokensoul08

Members
  • Posts

    28
  • Joined

  • Last visited

Posts posted by brokensoul08

  1. Re: all coders are invited

     

    ??? ?? ??? ?? ????? ???? ???? ?????? :D

     

    Try this one, maybe it works ...

     

    extern int PercentEquityToClose = 10;
    extern int Dist = 500;
    extern int TP = 500;
    extern int SL = 500;
    extern int kolOrder = 10;
    extern double Lots = 0.1;
    extern int Slippage = 1;
    extern int Magic = 1;
    extern bool TrailingProfit = TRUE;
    extern int prchoose = 0;
    extern int TrailingStop = 0;
    extern string File_Name = "Ask.csv";
    bool gi_unused_132 = FALSE;
    double gd_136;
    double gd_144;
    double gd_152;
    double gd_172;
    
    int init() {
      gd_172 = AccountBalance();
      if (IsTesting() || IsOptimization()) gd_152 = Ask;
      else gd_152 = Fileread();
      return (0);
    }
    
    int start() {
      int li_0 = Dist;
      for (int li_4 = 1; li_4 <= kolOrder; li_4++) {
         if (SL > 0) gd_136 = gd_152 + li_0 * Point - SL * Point;
         else gd_136 = 0;
         if (TP > 0) gd_144 = gd_152 + li_0 * Point + TP * Point;
         else gd_144 = 0;
         if (!ExistOrders("", OP_BUYSTOP, Magic, 0, NormalizeDouble(gd_152 + li_0 * Point, Digits))) SetOrder("", OP_BUYSTOP, Lots, gd_152 + li_0 * Point, gd_136, gd_144, Magic);
         if (SL > 0) gd_136 = gd_152 - li_0 * Point + SL * Point;
         else gd_136 = 0;
         if (TP > 0) gd_144 = gd_152 - li_0 * Point - TP * Point;
         else gd_144 = 0;
         if (!ExistOrders("", OP_SELLSTOP, Magic, 0, NormalizeDouble(gd_152 - li_0 * Point, Digits))) SetOrder("", OP_SELLSTOP, Lots, gd_152 - li_0 * Point, gd_136, gd_144, Magic);
         li_0 += Dist;
      }
      if (gd_152 + Dist * Point < Ask) gd_152 += Dist * Point;
      if (gd_152 - Dist * Point > Ask) gd_152 -= Dist * Point;
      if (TrailingProfit) TProf();
      if (PercentEquityToClose != 0) {
         if (gd_172 / 100.0 * PercentEquityToClose + gd_172 <= AccountEquity()) {
            CPD("", -1, Magic);
            gd_172 = AccountBalance();
         }
      }
      return (0);
    }
    
    void CPBS() {
      bool l_ord_close_0;
      color l_color_4;
      double l_ord_lots_8;
      double l_ask_16;
      double l_bid_24;
      double l_price_32;
      int l_error_40;
      if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
         for (int li_44 = 1; li_44 <= 1; li_44++) {
            if (!IsTesting() && !IsExpertEnabled() || IsStopped()) break;
            while (!IsTradeAllowed()) Sleep(5000);
            RefreshRates();
            l_ask_16 = MarketInfo(OrderSymbol(), MODE_ASK);
            l_bid_24 = MarketInfo(OrderSymbol(), MODE_BID);
            if (OrderType() == OP_BUY) l_price_32 = l_bid_24;
            else l_price_32 = l_ask_16;
            l_ord_lots_8 = OrderLots();
            l_ord_close_0 = OrderClose(OrderTicket(), l_ord_lots_8, l_price_32, Slippage, l_color_4);
            if (l_ord_close_0) break;
            l_error_40 = GetLastError();
            if (l_error_40 == 146/* TRADE_CONTEXT_BUSY */) while (IsTradeContextBusy()) Sleep(11000);
            Sleep(5000);
         }
      }
    }
    
    void CPD(string as_0 = "", int a_cmd_8 = -1, int a_magic_12 = -1) {
      int l_ord_total_20 = OrdersTotal();
      if (as_0 == "0") as_0 = Symbol();
      for (int l_pos_16 = l_ord_total_20 - 1; l_pos_16 >= 0; l_pos_16--) {
         if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == as_0 || as_0 == "" && a_cmd_8 < OP_BUY || OrderType() == a_cmd_8) {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                  if (a_magic_12 < 0 || OrderMagicNumber() == a_magic_12) CPBS();
            }
         }
      }
    }
    
    void TProf() {
      int l_cmd_4;
      double l_price_8;
      double ld_16;
      bool li_24;
      double l_ord_open_price_32;
      int l_ticket_40;
      bool l_bool_44;
      if (prchoose == 0) prchoose = MarketInfo(Symbol(), MODE_STOPLEVEL);
      for (int li_0 = 1; li_0 <= OrdersTotal(); li_0++) {
         if (OrderSelect(li_0 - 1, SELECT_BY_POS) == TRUE) {
            l_cmd_4 = OrderType();
            l_price_8 = OrderStopLoss();
            while (true) {
               if (TrailingStop == 0) TrailingStop = MarketInfo(Symbol(), MODE_STOPLEVEL);
               ld_16 = TrailingStop;
               li_24 = FALSE;
               switch (l_cmd_4) {
               case OP_BUY:
                  if (NormalizeDouble(l_price_8, Digits) < NormalizeDouble(Bid - ld_16 * Point, Digits) && MarketInfo(OrderSymbol(), MODE_BID) - OrderOpenPrice() >= prchoose * Point) {
                     l_price_8 = Bid - ld_16 * Point;
                     li_24 = TRUE;
                  }
                  break;
               case OP_SELL:
                  if (NormalizeDouble(l_price_8, Digits) > NormalizeDouble(Ask + ld_16 * Point, Digits) || NormalizeDouble(l_price_8, Digits) == 0.0 && OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK) >= prchoose * Point) {
                     l_price_8 = Ask + ld_16 * Point;
                     li_24 = TRUE;
                  }
               }
               if (li_24 == FALSE) break;
               l_ord_open_price_32 = OrderOpenPrice();
               l_ticket_40 = OrderTicket();
               l_bool_44 = OrderModify(l_ticket_40, l_ord_open_price_32, l_price_8, OrderTakeProfit(), 0, Green);
               if (l_bool_44 != TRUE) continue;
               break;
            }
         }
      }
    }
    
    int SetOrder(string a_symbol_0, int a_cmd_8, double a_lots_12, double a_price_20, double a_price_28 = 0.0, double a_price_36 = 0.0, int a_magic_44 = 0, int a_datetime_48 = 0, string a_comment_52 = "") {
      color l_color_60;
      int l_datetime_64;
      double l_ask_68;
      double l_bid_76;
      double l_point_84;
      int l_error_92;
      int l_ticket_100;
      if (a_symbol_0 == "" || a_symbol_0 == "0") a_symbol_0 = Symbol();
      int l_stoplevel_104 = MarketInfo(a_symbol_0, MODE_STOPLEVEL);
      if (a_datetime_48 > 0 && a_datetime_48 < TimeCurrent()) a_datetime_48 = 0;
      for (int li_96 = 1; li_96 <= 1; li_96++) {
         if (!IsTesting() && !IsExpertEnabled() || IsStopped()) {
            Print("SetOrder(): ???à?îâêà ?à?î?û ô??ê?èè");
            break;
         }
         while (!IsTradeAllowed()) Sleep(5000);
         RefreshRates();
         l_datetime_64 = TimeCurrent();
         l_ticket_100 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, a_price_20, Slippage, a_price_28, a_price_36, a_comment_52, a_magic_44, a_datetime_48, l_color_60);
         if (l_ticket_100 > 0) return (l_ticket_100);
         l_error_92 = GetLastError();
         if (l_error_92 == 128/* TRADE_TIMEOUT */ || l_error_92 == 142 || l_error_92 == 143) {
            Sleep(66000);
            if (ExistOrders(a_symbol_0, a_cmd_8, a_magic_44, l_datetime_64)) break;
         } else {
            l_point_84 = MarketInfo(a_symbol_0, MODE_POINT);
            l_ask_68 = MarketInfo(a_symbol_0, MODE_ASK);
            l_bid_76 = MarketInfo(a_symbol_0, MODE_BID);
            if (l_ask_68 == 0.0 && l_bid_76 == 0.0) Comment("SetOrder(): ??îâ??ü?? â î?çî?? ?û?êà ?àëè÷è? ?è?âîëà " + a_symbol_0);
            if (l_error_92 == 130/* INVALID_STOPS */) {
               switch (a_cmd_8) {
               case OP_BUYLIMIT:
                  if (a_price_20 > l_ask_68 - l_stoplevel_104 * l_point_84) a_price_20 = l_ask_68 - l_stoplevel_104 * l_point_84;
                  if (a_price_28 > a_price_20 - (l_stoplevel_104 + 1) * l_point_84) a_price_28 = a_price_20 - (l_stoplevel_104 + 1) * l_point_84;
                  if (a_price_36 > 0.0 && a_price_36 < a_price_20 + (l_stoplevel_104 + 1) * l_point_84) a_price_36 = a_price_20 + (l_stoplevel_104 + 1) * l_point_84;
                  break;
               case OP_SELLLIMIT:
                  if (a_price_20 < l_ask_68 + (l_stoplevel_104 + 1) * l_point_84) a_price_20 = l_ask_68 + (l_stoplevel_104 + 1) * l_point_84;
                  if (a_price_28 > a_price_20 - (l_stoplevel_104 + 1) * l_point_84) a_price_28 = a_price_20 - (l_stoplevel_104 + 1) * l_point_84;
                  if (a_price_36 > 0.0 && a_price_36 < a_price_20 + (l_stoplevel_104 + 1) * l_point_84) a_price_36 = a_price_20 + (l_stoplevel_104 + 1) * l_point_84;
                  break;
               case OP_SELLLIMIT:
                  if (a_price_20 < l_bid_76 + l_stoplevel_104 * l_point_84) a_price_20 = l_bid_76 + l_stoplevel_104 * l_point_84;
                  if (a_price_28 > 0.0 && a_price_28 < a_price_20 + (l_stoplevel_104 + 1) * l_point_84) a_price_28 = a_price_20 + (l_stoplevel_104 + 1) * l_point_84;
                  if (a_price_36 > a_price_20 - (l_stoplevel_104 + 1) * l_point_84) a_price_36 = a_price_20 - (l_stoplevel_104 + 1) * l_point_84;
                  break;
               case OP_BUYLIMIT:
                  if (a_price_20 > l_bid_76 - l_stoplevel_104 * l_point_84) a_price_20 = l_bid_76 - l_stoplevel_104 * l_point_84;
                  if (a_price_28 > 0.0 && a_price_28 < a_price_20 + (l_stoplevel_104 + 1) * l_point_84) a_price_28 = a_price_20 + (l_stoplevel_104 + 1) * l_point_84;
                  if (a_price_36 > a_price_20 - (l_stoplevel_104 + 1) * l_point_84) a_price_36 = a_price_20 - (l_stoplevel_104 + 1) * l_point_84;
               }
               Print("SetOrder(): ?êî???ê?è?îâà?û ???îâû? ??îâ?è");
            }
            if (l_error_92 == 2/* COMMON_ERROR */ || l_error_92 == 64/* ACCOUNT_DISABLED */ || l_error_92 == 65/* INVALID_ACCOUNT */ || l_error_92 == 133/* TRADE_DISABLED */) break;
            if (l_error_92 == 4/* SERVER_BUSY */ || l_error_92 == 131/* INVALID_TRADE_VOLUME */ || l_error_92 == 132/* MARKET_CLOSED */) {
               Sleep(300000);
               break;
            }
            if (l_error_92 == 8/* TOO_FREQUENT_REQUESTS */ || l_error_92 == 141/* TOO_MANY_REQUESTS */) Sleep(100000);
            if (l_error_92 == 139/* ORDER_LOCKED */ || l_error_92 == 140/* LONG_POSITIONS_ONLY_ALLOWED */ || l_error_92 == 148/* ERR_TRADE_TOO_MANY_ORDERS */) break;
            if (l_error_92 == 146/* TRADE_CONTEXT_BUSY */) while (IsTradeContextBusy()) Sleep(11000);
            if (l_error_92 == 147/* ERR_TRADE_EXPIRATION_DENIED */) a_datetime_48 = 0;
            else
               if (l_error_92 != 135/* PRICE_CHANGED */ && l_error_92 != 138/* REQUOTE */) Sleep(7700.0);
         }
      }
      return (0);
    }
    
    bool ExistOrders(string as_0 = "", int a_cmd_8 = -1, int a_magic_12 = -1, int ai_16 = 0, double ad_20 = 0.0) {
      int l_cmd_36;
      int l_ord_total_32 = OrdersTotal();
      if (as_0 == "0") as_0 = Symbol();
      for (int l_pos_28 = 0; l_pos_28 < l_ord_total_32; l_pos_28++) {
         if (OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES)) {
            l_cmd_36 = OrderType();
            if (l_cmd_36 > OP_SELL && l_cmd_36 < 6) {
               if (OrderSymbol() == as_0 || as_0 == "" && a_cmd_8 < OP_BUY || l_cmd_36 == a_cmd_8) {
                  if (a_magic_12 < 0 || OrderMagicNumber() == a_magic_12) {
                     if (ai_16 <= OrderOpenTime()) {
                        if (ad_20 != 0.0)
                           if (NormalizeDouble(ad_20, Digits) == NormalizeDouble(OrderOpenPrice(), Digits)) return (TRUE);
                     }
                  }
               }
            }
         }
      }
      return (FALSE);
    }
    
    void Filewrite(double ad_0 = 0.0) {
      int l_file_8 = FileOpen(File_Name, FILE_CSV|FILE_WRITE, ";");
      if (l_file_8 == -1) {
         Print("??è?êà ï?è î?ê?û?èè ôàéëà. ", "?îç?î??î, ôàéë çà??? ????è? ï?èëî???è??");
         return;
      }
      int li_12 = FileWrite(l_file_8, ad_0);
      if (li_12 < 0) {
         Print("??è?êà çàïè?è â ôàéë ", GetLastError());
         FileClose(l_file_8);
         return;
      }
      FileClose(l_file_8);
    }
    
    double Fileread() {
      int l_file_0 = FileOpen(File_Name, FILE_CSV|FILE_READ, ";");
      if (l_file_0 == -1) {
         Print("?àéë ëè?î çà???,ëè?î ??î ?? ??ù???â???, . ", "?îç?à?? ôàéë ?àé???à");
         Filewrite(Ask);
         return (Ask);
      }
      double ld_ret_4 = FileReadDouble(l_file_0);
      if (ld_ret_4 < 0.0) {
         Print("??è?êà ÷???è? èç ôàéëà ", GetLastError());
         return ((l_file_0));
      }
      FileClose(l_file_0);
      return (ld_ret_4);
    }

     

    ? ?? ??? ? ??? ???? ?????? ????

     

    Good luck deadsoul

  2. Re: 4hour MACD

     

    Hi does anyone uses the 4H MACD?

     

    I have used the concept very successfully in the past few weeks... the action in the 1st 4 hr period on the Sunday open (In New York) gives a great indication of the probable direction for the rest of the evening.

    Thank U jnevins look interestin" strategy gonna give it a try

    Best Regards

×
×
  • Create New...