Adding TrailingStop to My EA

David Udoh  
Hello guys, I need help adding trailingstop into my EA. Please assist me in identifying the issue so that I can fix it and update my code.👇.
if(PositionSelect(_Symbol) == false){
 
   if(StdDevVal>StdDevAVGVal&& Ask > MaValine && MaValine > MAValue && MAValue > MAAvalue)
     {
     int ticket;
     double new_stoploss;
     double trailing_distance;
     double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
     double buy_tp = price+150*_Point;
      ticket=trade.Buy(0.03, _Symbol,price,price-50*_Point,buy_tp);
      if(ticket>0)
{ 
        //get the current market price
        trailing_distance = 50.0;
        new_stoploss = price - trailing_distance*_Point;

        //modify the order with new stop loss
        trade.OrderModify(ticket, ORDER_PRICE_OPEN, new_stoploss,buy_tp , 0, Green);
    }
      posTicket = trade.ResultOrder();
      
      Comment("Buy signal","\n");
      /*"Current Std Dev value is ",StdDevVal,"\n",
      "Std Dev Avg value is ",StdDevAVGVal,"\n",
      "Ask value is ",Ask,"\n",
      "MA value is ",MAValue);*/
     }
}
William Roeder  
David Udoh: Please assist me in identifying the issue so that I can fix it and update my code.👇.
  1. If you have no positions, you open one. If you do, then trail. You can't trail in the code where you open.

  2.      double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
            new_stoploss = price - trailing_distance*_Point;

    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. 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)