Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Форматируй текст в редакторе сообщений. Это удобно!
Aleksandr Stetsenko
65
Aleksandr Stetsenko 2011.12.20 14:54 

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

Aleksandr Stetsenko
65
Aleksandr Stetsenko 2011.12.21 08:36  

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

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

Alexander Bereznyak
19946
Alexander Bereznyak 2011.12.21 09:53  
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
65
Aleksandr Stetsenko 2011.12.21 13:53  
Это хорошо, но если этот код запустить в середине дня, первый тик будет отработан неправильно и поэтому нужно все равно проверять время между 00:00 и 00:01. Тем более что время берется не локальное, а по Meta Trader.
Alexander Bereznyak
19946
Alexander Bereznyak 2011.12.21 17:00  
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);
    }
//+------------------------------------------------------------------+
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий