Why the EA is not opening any trade on the strategy tester?

 

hi, I'm new in coding and I was wondering why the ea do not open any trade

thats the code I wrote:

extern int MagicNumber= 104;
//input:
extern int PeriodoRSI= 13;
extern int tp= 100;
extern int stop= 100;
extern double lotti= 0.25;
extern int TF= PERIOD_M5;


void checkaperture()
{


double RSI= iRSI(Symbol(),TF,PeriodoRSI,PRICE_CLOSE,0);

double ipercomprato = 68;

double ipervenduto = 32;

double tplong= Ask+tp*Point;

double sllong= Ask-stop*Point;

double tpshort=Bid-tp*Point;

double slshort=Bid+stop*Point;

bool condition_met = false;


if (RSI > ipercomprato || RSI < ipervenduto) {
        static bool first_touch = false;
        if (RSI > ipercomprato || RSI < ipervenduto) {
            if (first_touch) {
                condition_met = true;
                first_touch = false;
            }
        } else {
            first_touch = true;
        }
}

    if (condition_met && RSI < ipervenduto) {
        static bool first_touch = false;
        if (RSI < ipervenduto || RSI > ipercomprato) {
            if (first_touch) {
                condition_met = true;
                first_touch = false;
            }
        } else {
            first_touch = true;
        }
}


if (condition_met && RSI < ipervenduto) {
        static bool first_touch = false;
        if (RSI < ipervenduto || RSI > ipercomprato) {
            if (first_touch) {
                condition_met = true;
                first_touch = false;
            }
        } else {
            first_touch = true;
        }
}

    if (condition_met) {
        if (RSI < ipervenduto) {
            OrderSend(Symbol(), OP_BUY, lotti, Ask, 0, sllong, tplong, 0, MagicNumber, 0, Blue);
        } else if (RSI > ipercomprato) {
            OrderSend(Symbol(), OP_SELL, lotti, Bid, 0, slshort, tpshort, 0, MagicNumber, 0, Red);
        }
    }
}



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
if(OrdersTotal()==0)
      checkaperture();   
  }

//+------------------------------------------------------------------+
 

Please edit your post (don't create a new post) and replace your code properly (with "</>" or Alt-S), or attach the original file directly with the "+ Attach file" button below the text box.

NB! Very important! DO NOT create a new post. EDIT your original post.

 
  1. Leonardo Falossi: I was wondering why the ea do not open any trade

    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)

  2. double tplong= Ask+tp*Point;
    
    double sllong= Ask-stop*Point;
    
    double tpshort=Bid-tp*Point;
    
    double slshort=Bid+stop*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)

  3. if (RSI > ipercomprato || RSI < ipervenduto) {
            static bool first_touch = false;
            if (RSI > ipercomprato || RSI < ipervenduto) {

    When will that second if condition ever be false?

 
Comments that do not relate to this topic, have been moved to "Off-topic posts".