Как определить время начала дня на FORTS ? - страница 3

 
Roman:

Покажите скрин времени сессий фортс, из спецификации инструмента.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как определить время начала дня на FORTS ?

Alexey Viktorov, 2020.12.05 18:32

Ну получите вот эти часы


и что будете с этим делать?¿? Как принимать решение торговать или наблюдать?


 
Alexey Viktorov:

Жесть. Я думал это был пример из форекса.
А брокеру не писали что за хня?

 
Roman:

Жесть. Я думал это был пример из форекса.
А брокеру не писали что за хня?

На форексе от 00:00 до 24:00, хотя-бы это надо знать. Написать оставляю возможность вам.

 
Alexey Viktorov:

На форексе от 00:00 до 24:00, хотя-бы это надо знать. Написать оставляю возможность вам.

Да хрен его знает, какой часовой пояс может быть или инструмент ))
В общем действительно хрень какая то. Брокеру бы это предъявить.

Тогда да, только явное обозначение времени использовать.
Накидал вариант на коленке, может будет идея для развития.


bool IsTradingTime(string hourStart, string minuteStart, string hourStop, string minuteStop)
{
   MqlDateTime dt;
   TimeToStruct(TimeCurrent(), dt);   
   
   int startTime = int(hourStart + minuteStart);
   int stopTime  = int(hourStop + minuteStop);
   int currTime  = int((string)dt.hour + (string)dt.min); 
       
   return((currTime >= startTime) && (currTime <= stopTime) && (dt.day_of_week != 6) && (dt.day_of_week != 0));
}


IsTradingTime("19", "00", "23", "50"); 
IsTradingTime("10", "00", "14", "00"); 
IsTradingTime("14", "05", "18", "45");
 
Roman:

Да хрен его знает, какой часовой пояс может быть или инструмент ))
В общем действительно хрень какая то. Брокеру бы это предъявить.

Тогда да, только явное обозначение времени использовать.
Накидал вариант на коленке, может будет идея для развития.


Всё что надо для развития уже давно написано и проверено

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как определить время начала дня на FORTS ?

prostotrader, 2020.12.05 00:09

Начало дня, на ФОРТС, всегда начинается в 19-00 или 19-05 (при экспирации) и делится на сессии

Вечерняя сессия: Начало 19-00 (19-05) конец 23-50

Утренняя сессия: Начало 10-00 конец 14-00

Дневная сессия:  Начало 14-05 конец 18-45  

input string          TimeStMon    = "10:00:00";               //Время начала утренней сессии
input string          TimeStDay    = "14:05:00";               //Время начала дневной сессии
input string          TimeStEvn    = "19:05:00";               //Время начала вечерней сессии

ulong         time_st_mon;
ulong         time_st_day;
ulong         time_st_evn;

time_st_mon = GetStringTime(TimeStMon);
time_st_day = GetStringTime(TimeStDay);
time_st_evn = GetStringTime(TimeStEvn);

//+------------------------------------------------------------------+
//| Expert Get string time function                                  |
//+------------------------------------------------------------------+
ulong GetStringTime(const string a_string)
{
  int str_size = StringLen(a_string);
  if(str_size == 8)
  {
    int k = StringFind(a_string, ":", 2);
    if(k == 2)
    {
      string s_hour = StringSubstr(a_string, 0, k);
      k = StringFind(a_string, ":", 5);
      if(k == 5)
      {
        string s_min = StringSubstr(a_string, 3, k-3);
        string s_sec = StringSubstr(a_string, 6, str_size - k - 1);
        ulong t_sec = ulong(StringToInteger(s_sec));
        ulong t_min = ulong(StringToInteger(s_min)) * 60;
        ulong t_hour = ulong(StringToInteger(s_hour)) * 3600;
        return(t_hour + t_min + t_sec);
      }
    }
  }
  return(0);
}
//+------------------------------------------------------------------+
//| Expert Check traiding time function                              |
//+------------------------------------------------------------------+
bool CheckTradingTime(MqlDateTime &t_time)
{
  t_time.year = 0;
  TimeTradeServer(t_time);
  if(t_time.year > 0)
  {
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600                = 50400 - 14:00:00
// 14 * 3600 + 30           = 50430 - 14:00:30
// 14 * 3600 + 60           = 50460 - 14:01:00

// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60      = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60      = 67560 - 18:46:00

// 19 * 3600                = 68400 - 19:00:00
// 19 * 3600 + 60           = 68460 - 19:01:00   

// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60      = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60      = 85860 - 23:51:00
//---
    ulong trade_time = t_time.hour * 3600 + t_time.min * 60 + t_time.sec;  
    if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
       ((trade_time >= time_st_day) && (trade_time < 67470)) ||
       ((trade_time >= time_st_evn) && (trade_time < 85770)))
    {
      return(true);
    }
  } else Print(__FUNCTION__, ": Ошибка! Не получено время торгового сервера!"); 
  return(false);
}  

 
Варианты то разные.
Ну да ладно.
 

Просьба дать инвест от MOEX.

SymbolInfoSession* использовал во многих местах до сих пор корректно.

Возможно, не совсем понимаете, как это работает. С инвестом смогу показать.

 
fxsaber:

Просьба дать инвест от MOEX.

SymbolInfoSession* использовал во многих местах до сих пор корректно.

Возможно, не совсем понимаете, как это работает. С инвестом смогу показать.

Пожалуйста:

//+------------------------------------------------------------------+
//|                                                 Test_session.mq5 |
//|                                     Copyright 2020, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  ENUM_ACCOUNT_TRADE_MODE acc_mode = ENUM_ACCOUNT_TRADE_MODE(AccountInfoInteger(ACCOUNT_TRADE_MODE));
  Print(__FUNCTION__, "Accaunt mode: ", EnumToString(acc_mode));
  Print("Symbol: ", Symbol());
  datetime from, to;
  for(ENUM_DAY_OF_WEEK i = SUNDAY; i <= SATURDAY; i++)
  {
    for(int j = 0; j<=2;j++)
    {
      if(SymbolInfoSessionTrade(Symbol(), i, uint(j), from, to) == true)
      {
        Print("Day of week: ", EnumToString(i), "; Session num: ", j, "; from: ", from, "; to: ", to);
      }
      else
      {
        Print("Day of week: ", EnumToString(i), "; Session num: ", j, "; No session time!");
      }  
    }
  }
  return(INIT_SUCCEEDED);
}

Результат:

2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      OnInit Accaunt mode: ACCOUNT_TRADE_MODE_REAL
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Symbol: Si-12.20
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SUNDAY; Session num: 0; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SUNDAY; Session num: 1; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SUNDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 0; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 1; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SATURDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SATURDAY; Session num: 1; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SATURDAY; Session num: 2; No session time!


А должно быть так (шлюз ФОРТС, Plaza II)


 
prostotrader:

Пожалуйста:

Результат:


А должно быть так (шлюз ФОРТС, Plaza II)


Я не знаю точно время работы, но вопрос - а что это время не корректное что-ли выдаёт?

2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 0; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 1; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: MONDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: TUESDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: WEDNESDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: THURSDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 1; from: 1970.01.01 09:45:00; to: 1970.01.02 00:00:00
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: FRIDAY; Session num: 2; No session time!
2020.12.08 01:13:16.630 Test_session (Si-12.20,M1)      Day of week: SATURDAY; Session num: 0; from: 1970.01.01 00:00:00; to: 1970.01.01 00:05:00
 
Aleksey Mavrin:

Я не знаю точно время работы, но вопрос - а что это время не корректное что-ли выдаёт?

Выдает - полный бред!

Должно быть

Вечерняя сессия: Начало 19-00 (19-05) конец 23-50

Утренняя сессия: Начало 10-00 конец 14-00

Дневная сессия:  Начало 14-05 конец 18-45 

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