Советник не открывает ордера ???

 

Вот код открытия ордера что не так не пойму ордера не открываются.
На тестере всё хорошо ордера открываются без ошибок но на демо счёте нет никаких ошибок и ордера не открываются тишина. Прошу помочь.


input int      Magik=1461919;
extern double LotSize=0.1;             
extern double StopLoss=20;            
extern double TakeProfit=30;          
extern int Slippage=5;  

double pips;
int OnInit()
  {
    
    double ticksize=MarketInfo(Symbol(),MODE_TICKSIZE);
   if(ticksize==0.00001 || ticksize==0.001)
      pips=ticksize*10;
   else pips=ticksize;  

   return(INIT_SUCCEEDED);
  }

double LotsOptimized()
  {
   double lot=LotSize;
   int    orders=OrdersHistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//--- select lot size
   if(MaximumRisk>0)
     {
      lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
     }
//--- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() /*|| OrderType()>OP_SELL*/)
            continue;
         //---
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- minimal allowed volume for trade operations
   double minlot=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(lot<minlot)
     { lot=minlot; }
// Print("Volume is less than the minimal allowed ,we use",minlot);}
// lot=minlot;

//--- maximal allowed volume of trade operations
   double maxlot=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(lot>maxlot)
     { lot=maxlot;  }
//  Print("Volume is greater than the maximal allowed,we use",maxlot);}
// lot=maxlot;

//--- get minimal step of volume changing
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(lot/volume_step);
   if(MathAbs(ratio*volume_step-lot)>0.0000001)
     {  lot=ratio*volume_step;}
   return(lot);
/* else  Print("StopOut level  Not enough money for ",OP_SELL," ",lot," ",Symbol());
   return(0);*/
  }

double NDTP(double val)
  {
 //  RefreshRates();
   double SPREAD=MarketInfo(Symbol(),MODE_SPREAD);
   double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   if(val<StopLevel*pips+SPREAD*pips) val=StopLevel*pips+SPREAD*pips;
// double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);
//int Stops_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

//if (Stops_level*pips<val-Bid)
//val=Ask+Stops_level*pips;
   return(NormalizeDouble(val, Digits));
// return(val);
  }
OnTick() 
{
////Условия входа не написал не хочу делится
if (Buy)
{
 RefreshRates();
double  ticketBuyStop= OrderSend(NULL,OP_BUYSTOP,LotsOptimized(),NDTP(Ask+StopLoss*pips),Slippage,0,NDTP(Ask+TakeProfit*pips),NULL,Magik,0,clrBlue);
}
if (Sell)
{
 RefreshRates();
double  ticketSellStop=OrderSend(NULL,OP_SELLSTOP,LotsOptimized(),NDTP(Bid-StopLoss*pips),Slippage,0,NDTP(Bid-TakeProfit*pips),NULL,Magik,0,clrRed);
}
}
 
SolomonAbundand:

Вот код открытия ордера что не так не пойму ордера не открываются.
На тестере всё хорошо ордера открываются без ошибок но на демо счёте нет никаких ошибок и ордера не открываются тишина. Прошу помочь.


В выходные рынок не работает.

Причина обращения: