OrderClose() error 4108, unknown ticket 1 for OrderClose function

 

I'm getting this error when I backtest. I think there's a problem handing off the ticket to OrderClose() (obviously). I've just been throwing everything I can at it, but can't figure it out.

 

Any ideas? Here's (part of) my code:

 

if (!ExistPositions())
   {

      if (tenkanSen > kijunSen && openSen > senkouA && openSen > senkouB && RSIsen > 50 && adx_signal > 25 && adx_plusdi > adx_minusdi && TimeCondition())
      {
         OpenBuy();
         return(0);
      }

      if (tenkanSen < kijunSen && openSen < senkouA && openSen < senkouB && RSIsen < 50 && adx_signal > 25 && adx_plusdi < adx_minusdi && TimeCondition())
      {
         OpenSell();       
         return(0);
      }
   }
   if(ExistPositions())
      {
         if(OrderSelect(1, SELECT_BY_TICKET, MODE_TRADES)==True) type=OrderType();
         if(type==OP_SELL)
         {
           MarketInfo(Symbol(),MODE_ASK);
           if(tenkanSen > kijunSen || openSen > kijunSen) 
              {
              closesell = true;
              OrderCloseSell(closesell);
              return(0);
              
              } 
          }
          else if(type==OP_BUY)
          {
            MarketInfo(Symbol(),MODE_BID);
            if(tenkanSen < kijunSen || openSen < kijunSen) 
              {
              closebuy = true;
              OrderCloseBuy(closebuy);
              return(0);
              
              } 
           }
           else
           {
            Print("Error closing position: ",GetLastError());
           }
         }


///////////////////////////////////////////////////////


void OrderCloseBuy(bool closebuy)
{
   
   int ticket = 0;
   
   
   if(closebuy==true)
   {
   MarketInfo(Symbol(),MODE_BID);
   if(OrderSelect(1, SELECT_BY_TICKET, MODE_TRADES)==True) ticket=OrderTicket();
   if(OrderClose(ticket,OrderLots(),Bid,3,Red)==True) Print("Buy closed at: ",OrderClosePrice());
   }
   else{
   Print("Error closing position: ",GetLastError());
   }
}

void OrderCloseSell(bool closesell)
{
   
   int ticket = 0;
  
   
   if(closesell==true)
   {
     MarketInfo(Symbol(),MODE_ASK);
       if(OrderSelect(1, SELECT_BY_TICKET, MODE_TRADES)==True) ticket=OrderTicket();
      if(OrderClose(ticket,OrderLots(),Ask,3,Red)==True) Print("Sell closed at: ",OrderClosePrice());
   }
   else
   {
   Print("Error closing position: ",GetLastError());
   }
}
 
OrderSelect(1, SELECT_BY_TICKET

means select ticket no. 1 what of course i assume it doesn't exist

 
listep:

I'm getting this error when I backtest. I think there's a problem handing off the ticket to OrderClose() (obviously). I've just been throwing everything I can at it, but can't figure it out.

 

Any ideas? Here's (part of) my code:

In the Strategy Tester . . . .  NOT Live or Demo,  the ticket number for the first Order is 1,  after that is closed the next ticket number is 2, then 3, 4 etc.   Don't mix up  SELECT_BY_TICKET with SELECT_BY_POS
Reason: