isBuySignal: false macdBuySignal: false isSellSignal: false macdSellSignal: false

 
 if (isBuySignal && macdBuySignal && !LastTradeWasBuy)
{
    double sl = ask - SLPoints * _Point;
    double tp = ask + TPPoints * _Point;

    Print("Attempting Buy Order: ", " Lots: ", Lots, " Symbol: ", Symbol(), " Ask: ", ask, " SL: ", sl, " TP: ", tp);
    
    if (trade.Buy(Lots, Symbol(), ask, sl, tp, "EMA+MACD Crossover Buy"))
    {
        LastTradeTime = TimeCurrent();
        LastTradeWasBuy = true;
        Print("Buy Order placed at: ", ask, " SL: ", sl, " TP: ", tp);
    }
    else
    {
        Print("Error opening Buy Order: ", GetLastError());
    }
}
else if (isSellSignal && macdSellSignal && LastTradeWasBuy)
{
    double sl = bid + SLPoints * _Point;
    double tp = bid - TPPoints * _Point;

    Print("Attempting Sell Order: ", " Lots: ", Lots, " Symbol: ", Symbol(), " Bid: ", bid, " SL: ", sl, " TP: ", tp);
    
    if (trade.Sell(Lots, Symbol(), bid, sl, tp, "EMA+MACD Crossover Sell"))
    {
        LastTradeTime = TimeCurrent();
        LastTradeWasBuy = false;
        Print("Sell Order placed at: ", bid, " SL: ", sl, " TP: ", tp);
    }
    else
    {
        Print("Error opening Sell Order: ", GetLastError());
    }
}

Can someone explain why i get this error and it doesnt open any trades?

 
  1.     double sl = ask - SLPoints * _Point;
        double tp = ask + TPPoints * _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. 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)

  2. manosgk: Can someone explain why i get this error and it doesnt open any trades?
    What error? You posted none. Use the debugger or print out your variables, including _LastError and prices and find out why. Do you really expect us to debug your code for you?
              Code debugging - Developing programs - MetaEditor Help
              Error Handling and Logging in MQL5 - MQL5 Articles (2015)
              Tracing, Debugging and Structural Analysis of Source Code - MQL5 Articles (2011)
              Introduction to MQL5: How to write simple Expert Advisor and Custom Indicator - MQL5 Articles (2010)