Скачать MetaTrader 5

обработать данные за предыдущий день сразу после закрытия дня

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aleksandr Stetsenko
66
Aleksandr Stetsenko  

Только начинаю осваивать MQL4. Мне нужно обработать данные за предыдущий день сразу после закрытия дня - дневную свечу. Как определить что день закончен и начат новый?
В хелпе пока ничего не нашел.
Или просто проверять время между 00:00 и 00:01 минутами ? Только это надо время сервера а не локальное.

Aleksandr Stetsenko
66
Aleksandr Stetsenko  

Похоже получилось:

double Price ; // цена закрытия бара
// определяем время.
if (Hour()<1 && Minute()<2){
// начало нового дня, анализируем предыдущий вар дня
Price= iClose("EURUSD",PERIOD_D1,1);
Comment("Время : ",TimeToStr(TimeCurrent()),"\n Цена предыдущего дня=", Price);
}
else{ Comment(" Время анализа прошло" ); }

Alexander Bereznyak
22579
Alexander Bereznyak  
worldmen:

Похоже получилось:

double Price ; // цена закрытия бара
// определяем время.
if (Hour()<1 && Minute()<2){
// начало нового дня, анализируем предыдущий вар дня
Price= iClose("EURUSD",PERIOD_D1,1);
Comment("Время : ",TimeToStr(TimeCurrent()),"\n Цена предыдущего дня=", Price);
}
else{ Comment(" Время анализа прошло" ); }

Это не надежно. Лучше так:

//+------------------------------------------------------------------+
//|                                                    start_day.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
//----
datetime new_time;
datetime old_time;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
    {
    new_time=iTime(Symbol(), PERIOD_D1, 0);
//----
    return(0);
    }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
    {return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
    {
    new_time=iTime(Symbol(), PERIOD_D1, 0);
    if(new_time!=old_time)
      {
//Исполняется при формировании новаго бара
      old_time=new_time;
      }
//Исполняется на каждом тике
//----
    return(0);
    }
//+------------------------------------------------------------------+
Aleksandr Stetsenko
66
Aleksandr Stetsenko  
Это хорошо, но если этот код запустить в середине дня, первый тик будет отработан неправильно и поэтому нужно все равно проверять время между 00:00 и 00:01. Тем более что время берется не локальное, а по Meta Trader.
Alexander Bereznyak
22579
Alexander Bereznyak  
worldmen:
Это хорошо, но если этот код запустить в середине дня, первый тик будет отработан неправильно и поэтому нужно все равно проверять время между 00:00 и 00:01. Тем более что время берется не локальное, а по Meta Trader.
Подправил:
//+------------------------------------------------------------------+
//|                                                    start_day.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
//----
datetime new_time;
datetime old_time;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
    {
    old_time=iTime(Symbol(), PERIOD_D1, 0);
//----
    return(0);
    }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
    {return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
    {
    new_time=iTime(Symbol(), PERIOD_D1, 0);
    if(new_time!=old_time)
      {
//Исполняется при формировании новаго бара
      old_time=new_time;
      }
//Исполняется на каждом тике
//----
    return(0);
    }
//+------------------------------------------------------------------+
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий