+DI и -DI (при Price_Open для АДХ) должны расчитываться при начале каждого бара?

 
Здравствуйте!

Помогите пожалуйста разобраться с АДХ.

Есть самый элементарный код, который открывает и закрывает позиции на пересечении +DI и -DI (но при Price_Open для АДХ).

Я хотел, что бы ордер открывался при открытии нового бара H1.. Но код выдает открытие на часовике через 20-30 минут..

Правильно ли поянимаю, что +DI и -DI (при Price_Open для АДХ) должны расчитываться при начале каждого бара Н1?

Почему эксперт не открывает позиции в 00 а дает такую задержку...

С уважением,
Сергей
 

Почему эксперт не открывает позиции в 00 а дает такую задержку...


Как вот узнать-то не видя кода
 
"Что же ты Олег, да что же ты Олег
Да как то так, как то так" :)
 
Все просто... думал, что выйдет а он расчитывает + и - на каждый тик..


//+------------------------------------------------------------------+
//|                                             ADXcross             |
//|                                                     serggry      |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "sg@yahoo.com                                    "
#property link      "http://first.in.ua                              "        
//+--------------------------------------------------------------------------------------------------+
//|  Alerts in hand with ADXcrosses Indicator they dont need to be run together                       |
//+--------------------------------------------------------------------------------------------------+
// Alerts on cross of + and - DI lines
// I use it on 15 min charts
// though looks good on any time frame
// use other indicators to confirm this trigger tho

//---- input parameters


extern double    Lots=0.1;
extern int       ADXperiod=14;
extern int       TimeFrame=60;
extern int       Stoploss=150;
extern int       TakeProfit=999;
//extern double    TrailingStop = 15;
extern int       Slip=5;
extern double    Magic;
extern string    Comment_;



//----
double b4plusdi,b4minusdi,nowplusdi,nowminusdi,i;
string Com="";
double nowhour, b4hour;
//---- indicators




//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//| Setting internal variables for quick access to data              |
//+------------------------------------------------------------------+
int start()
  {

//Com=Comment_+Symbol()+Period();
//Comment(Com);

nowhour=Hour();


b4plusdi=iADX(NULL,TimeFrame,ADXperiod,PRICE_OPEN,MODE_PLUSDI,1);
nowplusdi=iADX(NULL,TimeFrame,ADXperiod,PRICE_OPEN,MODE_PLUSDI,0);
   
b4minusdi=iADX(NULL,TimeFrame,ADXperiod,PRICE_OPEN,MODE_MINUSDI,1);
nowminusdi=iADX(NULL,TimeFrame,ADXperiod,PRICE_OPEN,MODE_MINUSDI,0);

Comment("  +DI: ",nowplusdi, "  -DI: ", nowminusdi);

//Print(Symbol(), "   +DI:  ", nowplusdi, "  b4+DI:  ", b4plusdi, "- DI:  ", nowminusdi, "  b4-DI:  ", b4minusdi);
   
//Open sell position

if(b4plusdi>b4minusdi && nowplusdi<nowminusdi) 
{
            //Alert(Symbol()," ",Period()," ADX SELLING");
            for(i=0;i<OrdersTotal();i++) 
               {
	              OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
		           if (OrderSymbol()==Symbol() && (OrderType()==OP_SELL) && (OrderComment()==Com))
		             {
			            return;
		             }
               }
 
            OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+Stoploss*Point,Bid-TakeProfit*Point,Com,Magic,0,Red);
            //Print(Symbol(), "   +DI:  ", nowplusdi, "  b4+DI:  ", b4plusdi, "- DI:  ", nowminusdi, "  b4-DI:  ", b4minusdi);
            //close previous last buy position
            
            for(i=0;i<OrdersTotal();i++) 
               {
	              OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
		           if (OrderSymbol()==Symbol() && (OrderType()==OP_BUY) && (OrderMagicNumber()==Magic) && (OrderComment()==Com))
		             {
			            OrderClose(OrderTicket(),Lots, Bid, 3, Blue);
			            return;
		             }
               }
            
}   
            
// Open long positions
            
if(b4plusdi<b4minusdi && nowplusdi>nowminusdi)
{
            //Alert(Symbol()," ",Period()," ADX BUYING");
            for(i=0;i<OrdersTotal();i++) 
               {
	              OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
		           if (OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
		             {
			            return;
		             }
               }
            
            OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-Stoploss*Point,Ask+TakeProfit*Point,Com,Magic,0,Blue);
            //Print(Symbol(), "   +DI:  ", nowplusdi, "  b4+DI:  ", b4plusdi, "- DI:  ", nowminusdi, "  b4-DI:  ", b4minusdi);
            //close last sell position
            
            for(i=0;i<OrdersTotal();i++) 
               {
	              OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
		           if (OrderSymbol()==Symbol() && (OrderType()==OP_SELL) && (OrderMagicNumber()==Magic))
		             {
			            OrderClose(OrderTicket(),Lots, Ask, 3, Red);
			            return;
		             }
               }
            
            
}
        
     
  }
   
   return(0);
  // }
   
  
 

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