Советник не реагирует в реале

 
Подскажите, пожалуйста, почему если пропустить этого советника в тестере то он выполняет команды, а в реале делает все не так?

============================================
int cmd;
double Lots = 0.1;
double price,point;
void deinit() {
Comment("");
}

int start()
{
// 1. Если (AccountProfit > 50) надо просто закрыть ордер и выти
if(AccountProfit()>50){
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
cmd=OrderType();
if(cmd==OP_BUY || cmd==OP_SELL)
if(cmd==OP_BUY) price=Bid;
else price=Ask;
OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
return(0);
}}
// 2. Если (AccountProfit <-10) надо просто закрыть ордер и выти
if(AccountProfit()<-10){
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
cmd=OrderType();
if(cmd==OP_BUY || cmd==OP_SELL)
if(cmd==OP_BUY) price=Bid;
else price=Ask;
OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
return(0);
}}

// 3. Если (уже есть открытый ордер) надо просто выти
if(OrdersTotal()>0) return(0);

// 4. здесь не трогаем вообще
if (Period() < 30) {Comment("NO"); return(0); }
if (MathMod(Minute(),Period()) >= 0.5*Period()) return(0);

if ((High[0]-Low[0])>10*Point && Open[0]<(High[0]+Low[0])/2 && Ask < Open[0])
OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Ask-30*Point,Ask+200*Point,"OR:",0,0,Blue);
if ((High[0]-Low[0])>10*Point && Open[0]>(High[0]+Low[0])/2 && Bid > Open[0])
OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Bid+30*Point,Bid-200*Point,"OR:",0,0,Red);
return(0);
}