help me to solve implicit enum conversion please

 
now i use this
 

void OpenOrderWithOB(int direction, double obHigh, double obLow)
{
   double sl = StopLossPoints * PointValue;
   double tp = CalculateTakeProfit();

   // ใช้ขนาดล็อตที่กำหนดระหว่าง MinLotSize และ MaxLotSize
   double lotSize = MinLotSize;

   MqlTradeRequest request;
   MqlTradeResult result;
   ZeroMemory(request);
   ZeroMemory(result);

   request.action = TRADE_ACTION_DEAL;
   request.symbol = SymbolName;
   request.volume = lotSize;
   request.type = direction;
   request.deviation = 2;
   request.magic = 0;
   request.type_filling = ORDER_FILLING_IOC;

   if(direction == ORDER_TYPE_BUY)
   {
      request.price = SymbolInfoDouble(SymbolName, SYMBOL_ASK);
      request.sl = request.price - sl;
      request.tp = request.price + tp;
      request.comment = "Buy with OB";
   }
   else if(direction == ORDER_TYPE_SELL)
   {
      request.price = SymbolInfoDouble(SymbolName, SYMBOL_BID);
      request.sl = request.price + sl;
      request.tp = request.price - tp;
      request.comment = "Sell with OB";
   }

   if(!OrderSend(request, result))
   {
      Print("Failed to send order: ", GetLastError());
   }
   else
   {
      Print("Order opened: ", result.order);
   }
}

 
Rattanatam Kitipan #:


Try to modify "int direction" by
 ENUM_ORDER_TYPE direction
 
      request.sl = request.price - sl;
      request.tp = request.price + tp;

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit by the Ask.

  1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

  2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close at a specific Bid price, add the average spread.
              MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

  3. Prices (open, SL, and TP) must be a multiple of ticksize. Using Point means code breaks on 4 digit brokers (if any still exists), exotics (e.g. USDZAR where spread is over 500 points), and metals. Compute what a logical PIP is and use that, not points.
              How to manage JPY pairs with parameters? - MQL4 programming forum (2017)
              Slippage defined in index points - Expert Advisors and Automated Trading - MQL5 programming forum (2018)

  4. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)

    Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes.
    My GBPJPY shows average spread = 26 points, average maximum spread = 134.
    My EURCHF shows average spread = 18 points, average maximum spread = 106.
    (your broker will be similar).
              Is it reasonable to have such a huge spreads (20 PIP spreads) in EURCHF? - General - MQL5 programming forum (2022)