No buy and sell orders for my trading bot are being filled during backtests, is the buy and sell trade code not correct?

DarthRickSanchez1  

this is the error

2021.02.15 17:43:40.282    Core 1    2021.02.11 05:12:40   failed instant buy 0.1 GBPUSD at 1.38338 sl: 1.38538 tp: 1.38188 [Invalid stops]

Keith Watford  
Please edit your post and use the code button (Alt+S) when pasting code.
EDIT your original post, please do not just post the code correctly in a new post.

Khuman Bakhramirad  
 if(signal == "buy")
  trade.Buy(.10,NULL,Ask,(Ask-200* _Point), (Ask + 150 * _Point), NULL);  

change this line like i wrote and its gonna be fine

William Roeder  
  1. Please edit your (original) post and use the CODE button (Alt-S)! (For large amounts of code, attach it.)
              General rules and best pratices of the Forum. - General - MQL5 programming forum 2019.05.06
              Messages Editor

  2. void OnTick() {
      ⋮
      // Defined sar array
      int SARDefinition = iSAR(_Symbol,_Period, 0.02,0.2);

    Perhaps you should read the manual, especially the examples.
       How To Ask Questions The Smart Way. 2004
          How To Interpret Answers.
             RTFM and STFW: How To Tell You've Seriously Screwed Up.

    They all (including iCustom) return a handle (an int). You get that in OnInit. In OnTick (after the indicator has updated its buffers), you use the handle, shift and count to get the data.
              Technical Indicators - Reference on algorithmic/automated trading language for MetaTrader 5
              Timeseries and Indicators Access / CopyBuffer - Reference on algorithmic/automated trading language for MetaTrader 5
              How to start with MQL5 - General - MQL5 programming forum - Page 3 #22 2020.03.08
              How to start with MQL5 - MetaTrader 5 - General - MQL5 programming forum - Page 7 #61 2020.07.05
              How to call indicators in MQL5 - MQL5 Articles 12 March 2010

  3. trade.Buy(.10,NULL,Ask,(Ask-200* _Point), (Ask + 150 * _Point), NULL);  

    You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit and open at 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 to 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 (OANDA) shows average spread = 26 points, but average maximum spread = 134 (your broker will be similar).

DarthRickSanchez1  
Khuman Bakhramirad:

change this line like i wrote and its gonna be fine

it worked!
Reason: