How to use OrderTotal value as a variable

 

Hi everyone .

I'm quite new to coding and my ea is having sucessive losses in a single minute and I'd like to make him wait until it's a better time to go on. 

I have had a lot of trouble using the OrderTotal to do other things because once I use it outside the order select parenthesis, I get the message Profit - undeclared identifier even thought i've already declared it as a double. And when I use it inside, I can compile the file but the "action" doesn't work. 


Can anyone help me with what I am doing wrong?



if (OrdersTotal() == 0 && iRSIm51 < iRSIm52 && iRSIm51 > 70 && iRSIh41 > 60){
 
  ticket = OrderSend (Symbol() , OP_SELL , 0.5 , Bid , 0 , Bid + 100*Point , Bid - 250*Point , "venda" , 0, 0 , Red ); //ordersend
  
  
    for (int i=0; i<OrdersTotal(); i++)         // For all orders
  {
   if(OrderSelect(i,SELECT_BY_POS)==true)  // If next exists
     {                                     
    
      double Profit = OrderProfit();         // Generate Order profit value
     
      if (Profit < 0) {                      
    
   Sleep (60000 * 60 * 4); // wait 4 hours until working again
   
   }
   }  
   }   
Documentation on MQL5: Trade Functions / OrderSelect
Documentation on MQL5: Trade Functions / OrderSelect
  • www.mql5.com
OrderSelect - Trade Functions - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
  1.   ticket = OrderSend (Symbol() , OP_SELL , 0.5 , Bid , 0 , Bid + 100*Point , Bid - 250*Point , "venda" , 0, 0 , Red ); //ordersend

    Why did you post your MT4 question in the MT5 EA section instead of the MQL4 section, (bottom of the Root page)?
              General rules and best pratices of the Forum. - General - MQL5 programming forum? (2017)
    Next time, post in the correct place. The moderators will likely move this thread there soon.

  2. 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. You check for the count to be zero and then open an order. Only then will your loop be run. The newly opened order will always be in loss (the spread).
 
thank you for the help and advices.
Reason: