как зациклить расчеты по датам

 

Добрый день я новичок в программировании на MQL.

3 дня не додумаюсь как зациклить расчеты по датам

чтобы не заводить вручную каждый день.

OP, ZAKR ;
double NZ1, NZ2;

extern datetime DT1=D'17.06.2010 23:59';
extern datetime DT2=D'18.06.2010 00:00';

NZ1=iBarShift("EURUSD",0,DT1); //Определяем номер бара по времени

ZAKR=iClose("EURUSD",0,NZ1);

NZ2=iBarShift("EURUSD",0,DT2);

OP=iOpen("EURUSD",0,NZ2);

Буду признателен за подсказку. Дмитрий

 

а смысл? Судя по датам, которые вы вынесли в настройки, могу предположить, что хотите высчитывать индикатор(или запускать советник) только один раз в сутки. Если это так, то можно сделать так:

datetime bar;
int init()
{
...
   bar=0;
...
}

int start()
{
...
   if(bar<iTime(Symbol(),Period(),0))
   {
      //новый бар - делаем что нужно
      //...
   }
   bar=iTime(Symbol(),Period(),0);
}

Если ошибаюсь, то поясните.

 

советник я хочу запустить "полном автомате" (запустить один раз и токо корректировать коэффициенты при необходимости) те я хочу создать робот, а смысл в том что для расчета нужна цена опена И (ИЛИ) клоза (таковы формулы для расчетов они взяты из торговли на фондовых рынках ...( ВОЗМОЖЕН просто вариант с выборкой цены по времени допустим каждый день в 00 часов тк гепа нет . Спасибо за отклик утром сяду изучать вашу подсказку.

Дмитрий

 

ВСЕ СПРАВИЛСЯ!


double MIN, MAX, LAST, OP, ZAKR ;

double NZ1, NZ2;
datetime d1; // 17.06.2010 23:59
datetime d2; // 18.06.2010 00:00

// ************************************************
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

MIN=MarketInfo("EURUSD",1);
MAX=MarketInfo("EURUSD",2);
LAST=MarketInfo("EURUSD",10);

d1=StrToTime("17.06.2010 23:59");
d2=StrToTime("18.06.2010 00:00");

int d3; // последнее время сервера в секундах
int R1; // разница в днях
int R2; // разница в днях
d3 = TimeCurrent();
R1 = (d3-d1)/86400;
R2 = (d3-d2)/86400;

d1 = d1 + 86400 * R1;
d2 = d2 + 86400 * R2;

NZ1=iBarShift("EURUSD",0,d1); //Определяем номер бара по времени
ZAKR=iClose("EURUSD",0,NZ1);

NZ2=iBarShift("EURUSD",0,d2); //Определяем номер бара по времени
OP=iOpen("EURUSD",0,NZ2);


Comment(ZAKR,OP,MAX,MIN); //Проверка

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