fxDreema

    • Register
    • Login
    • Search
    • Back to the main page
    • Categories
    • Recent
    • Tags
    • Popular
    • Search
    1. Home
    2. azazelio
    3. Best
    A
    • Profile
    • Following 1
    • Followers 0
    • Topics 2
    • Posts 14
    • Best 1
    • Controversial 0
    • Groups 0

    Best posts made by azazelio

    • RE: 'attrTicketChild' - function not defined; Check profit (money) doesn't work as intended

      Hi there

      I got the same error attrTicketChild.

      I fixed changing these 2 lines:
      || (ClosePartialMode == 1 /*&& e_attrTicket() == attrTicketParent(e_attrTicket()) /&& e_attrTicket() == attrTicketChild(e_attrTicket())) // fully closed
      || (ClosePartialMode == 2 /
      && e_attrTicket() == attrTicketParent(e_attrTicket()) */&& e_attrTicket() != attrTicketChild(e_attrTicket())) // partially closed

      to these 2:
      || (ClosePartialMode == 1 && e_attrTicket() == attrTicketParent(e_attrTicket()) && e_attrTicket() == attrTicketChild(e_attrTicket())) // fully closed
      || (ClosePartialMode == 2 && e_attrTicket() == attrTicketParent(e_attrTicket()) && e_attrTicket() != attrTicketChild(e_attrTicket())) // partially closed

      And adding the function between attrTicket() and attrTicketParent()

      int attrTicketChild(int ticket)
      {
      int pos, total, retval=0;

      if (!OrderSelect(ticket,SELECT_BY_TICKET)) {retval=ticket;}

      /*
      //-- check if trade is added to volume ----------------------------
      if (retval==0) {
      int p_pos=StringFind(attrComment(), "[p=");
      if (p_pos >= 0) {
      string ptag=StringSubstr(attrComment(),p_pos);
      ptag=StringSubstr(ptag,0,StringFind(ptag,"]")+1);
      retval=StrToInteger(StringSubstr(ptag,3,-1));
      }
      }
      */
      double OP = 0;
      datetime OT = 0;
      string S = "";
      int M = 0;
      int T = 0;
      double L = 0;
      int D = 0;

      //-- check if trade is partially closed (in trades) ---------------
      if (retval==0) {
      OP = OrderOpenPrice();
      OT = OrderOpenTime();
      S = OrderSymbol();
      M = OrderMagicNumber();
      T = OrderType();
      L = OrderLots();
      D = (int)MarketInfo(S,MODE_DIGITS);

      total=OrdersTotal();
      for (pos=total-1; pos>=0; pos--) {
      if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
      {
      if (OrderOpenTime()<OT) {
      break;
      }
      if (
      OrderTicket()!=ticket
      && (OrderSymbol()==S)
      && (OrderMagicNumber()==M)
      && (OrderType()==T)
      && (NormalizeDouble(OrderOpenPrice(),D)==NormalizeDouble(OP,D))
      && (OrderOpenTime()==OT)
      )
      {
      retval=OrderTicket();
      break;
      }
      }
      }
      }
      //-- still nothing found - search in history trades now -----------
      if (retval==0) {
      total=OrdersHistoryTotal();
      for (pos=total-1; pos>=0; pos--) {
      if (OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY))
      {
      if (OrderOpenTime()<OT) {
      break;
      }
      if (
      OrderTicket()!=ticket
      && (OrderSymbol()==S)
      && (OrderMagicNumber()==M)
      && (OrderType()==T)
      && (NormalizeDouble(OrderOpenPrice(),D)==NormalizeDouble(OP,D))
      && (OrderOpenTime()==OT)
      )
      {
      retval=OrderTicket();
      break;
      }
      }
      }
      }

      if (retval<ticket) {retval=0;}

      if (!OrderSelect(ticket,SELECT_BY_TICKET)) {return ticket;}
      if (retval>0) {
      return(retval);
      }
      else {
      return(ticket);
      }
      }

      After that, you can compile with no problems.
      Hope that helps

      Thanks

      posted in Bug Reports
      A
      azazelio
    • 1 / 1