Расписание Торгов и SymbolInfoSessionTrade(.....)

 

1. имеем расписание торгов на московской бирже

 http://moex.com/s96

Продолжительность торговой сессии на рынке фьючерсов и опционов  с 10:00-18:45, 19:00-23:50 МСК.

Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

2. имеем такую функцию в МТ5
   datetime from;
   datetime to;
   ENUM_DAY_OF_WEEK day_of_week = THURSDAY;
   uint session_index = 0;
   bool b_Result;
   ResetLastError();
   b_Result = SymbolInfoSessionTrade(_Symbol,day_of_week,session_index,from,to);
   if (b_Result)
   {
      Print("from=",from);
      Print("to=",to);
   }
   else
   {
      int i_Error = GetLastError();
      Print("Error =",i_Error);
   }

 3. имеем спецификацию контракта

 

 SymbolInfoSessionTrade(.....) выдает 

для 

 session_index = 0 получаю левый  интервал

 session_index = 1 получаю правый интервал

Вопрос: 

как соотносится расписание торговых сесий московской биржи и полученные программно

временные интервалы торговых сессий ?

когда мне разрешено открывать позиции ?  в правом и левом интервалах или согласно расписанию торгов биржи ?

Московская Биржа - Рынки - О рынке
  • www.moex.com
Рынок фьючерсов и опционов – ведущая площадка по торговле производными финансовыми инструментами в России и странах Восточной Европы. Срочный рынок сочетает в себе развитую инфраструктуру, надежность и гарантии ПАО Московская Биржа, а также самые современные технологии торговли фьючерсами и опционами, проверенные в течение более чем десяти лет...
 
Denis Sartakov:

1. имеем расписание торгов на московской бирже

 http://moex.com/s96

Продолжительность торговой сессии на рынке фьючерсов и опционов  с 10:00-18:45, 19:00-23:50 МСК.

Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

2. имеем такую функцию в МТ5

 3. имеем спецификацию контракта

 

 SymbolInfoSessionTrade(.....) выдает 

для 

 session_index = 0 получаю левый  интервал

 session_index = 1 получаю правый интервал

Вопрос: 

как соотносится расписание торговых сесий московской биржи и полученные программно

временные интервалы торговых сессий ?

когда мне разрешено открывать позиции ?  в правом и левом интервалах или согласно расписанию торгов биржи ?

Ордера (простым смертным) можно выставлять только в указанное в рассписании время.

 Использовать функцию SymbolInfoSessionTrade нет никакого смысла (расписание и так известно)

Я торговое время определяю по таймеру, который работает с периодом 0,5 с 

void OnTimer()
{
  MqlDateTime tick_time;
//---  
  if(CheckTradingTime(tick_time))
  {
  } 
}
 
prostotrader:

Ордера (простым смертным) можно выставлять только в указанное в рассписании время.

 Использовать функцию SymbolInfoSessionTrade нет никакого смысла (расписание и так известно)

Я торговое время определяю по таймеру, который работает с периодом 0,5 с 

т.е. выставлять ордера, открывать позиции, модифицировать ордера и позиции

можно только по этому расписанию:

 Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

Само собой, это расписание "и так известно",

 но SymbolInfoSessionTrade (....)   выдает другое расписание, как это понимать ? функция не работает или еще что ?

 
Denis Sartakov:

т.е. выставлять ордера, открывать позиции, модифицировать ордера и позиции

можно только по этому расписанию:

 Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

Само собой, это расписание "и так известно",

 но SymbolInfoSessionTrade (....)   выдает другое расписание, как это понимать ? функция не работает или еще что ?

Я так и не разобрался с этим, когда мне тоже нужно было знать торговое время

bool CheckTradingTime(MqlDateTime &tick_time)
  {
   datetime lk_time=TimeTradeServer(tick_time);
   if(( tick_time.day_of_week==int(SATURDAY)) || 
      (tick_time.day_of_week==int(SUNDAY)))
     {
      return( false );
     }
#ifdef DEBUG
   if(( tick_time.hour>=0) && (tick_time.hour<6))   // DEBUG 6-00
     {
      return( false );
     }
#else
   if(( tick_time.hour>=0) && (tick_time.hour<10))
     {
      return( false );
     }
#endif
// 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=tick_time.hour*3600+tick_time.min*60+tick_time.sec;
//--- PUT YOU CODE HERE   
   return(true);
  }
 
prostotrader:

Я так и не разобрался с этим, когда мне тоже нужно было знать торговое время

TimeTradeServer == TimeLocal 

Время сервера зависит от времени на вашем компьютере. Время вашего компьютера может отличаться от времени биржи и тем более от времени сервера.

Реальное время можно узнать только из котировок, а если котировок нет - то никак.  

 
Sergey Chalyshev:

TimeTradeServer == TimeLocal 

Время сервера зависит от времени на вашем компьютере. Время вашего компьютера может отличаться от времени биржи и тем более от времени сервера.

Реальное время можно узнать из котировок, а если котировок нет - то никак.  

Да, это так, но почему-то работает. 

 
Denis Sartakov:

т.е. выставлять ордера, открывать позиции, модифицировать ордера и позиции

можно только по этому расписанию:

 Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

Само собой, это расписание "и так известно",

 но SymbolInfoSessionTrade (....)   выдает другое расписание, как это понимать ? функция не работает или еще что ?

покажите какое расписание выдает и код как вы его получаете
 
Alexander Bereznyak:
покажите какое расписание выдает и код как вы его получаете

получаю вот так:

/*
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
*/ 
   datetime from;
   datetime to;
   ENUM_DAY_OF_WEEK day_of_week = THURSDAY;
   uint session_index = 0;
   bool b_Result;
//+------------------------------------------------------------------+
   session_index = 0;
//+------------------------------------------------------------------+
   ResetLastError();
   b_Result = SymbolInfoSessionTrade(_Symbol,day_of_week,session_index,from,to);
   if (b_Result)
   {
      Print("from=",from);
      Print("to=",to);
   }
   else
   {
      int i_Error = GetLastError();
      Print("Error =",i_Error);
   }
//+------------------------------------------------------------------+
   session_index = 1;
//+------------------------------------------------------------------+
   ResetLastError();
   b_Result = SymbolInfoSessionTrade(_Symbol,day_of_week,session_index,from,to);
   if (b_Result)
   {
      Print("from=",from);
      Print("to=",to);
   }
   else
   {
      int i_Error = GetLastError();
      Print("Error =",i_Error);
   }   
//+------------------------------------------------------------------+

Для брокер - "Открытие", демо счет,

для RTS-9.16 на четверг получаю такое расписание,

для сессии 0:

from 05:45 to 09:10

Для сессии 1:

from 08:45 to 16:00

в соответствии  со спецификацией контракта "сессии...                 торговые"

посмотрите картинку в первом посте...

******************************* 

 Для брокер - "Открытие", реальный счет,

для RTS-9.16 на четверг получаю такое расписание,

для сессии 0:

from 00:00 to 00:05

Для сессии 1:

from 08:45 to 19:00

 
Denis Sartakov:

получаю вот так:

Для брокер - "Открытие", демо счет,

для RTS-9.16 на четверг получаю такое расписание,

для сессии 0:

from 05:45 to 09:10

Для сессии 1:

from 08:45 to 16:00

в соответствии  со спецификацией контракта "сессии...                 торговые"

посмотрите картинку в первом посте...

******************************* 

 Для брокер - "Открытие", реальный счет,

для RTS-9.16 на четверг получаю такое расписание,

для сессии 0:

from 00:00 to 00:05

Для сессии 1:

from 08:45 to 19:00

Чем не нравится мой вариант?
 

посмотрел спецификацию инструмента

 

соответствуют результату работы функции 

 
prostotrader:
Чем не нравится мой вариант?

нормальный у вас вариант, но он строго заточен на расписание московской биржи:

 Расписание работы:

10.00 - 14.00 Основная торговая сессия (дневной Расчетный период)

14.00 - 14.05 Дневная клиринговая сессия (промежуточный клиринг)

14.05 - 18.45 Основная торговая сессия (вечерний Расчетный период)

18.45 - 19.00 Вечерняя клиринговая сессия (основной клиринг)

19.00 - 23.50 Вечерняя дополнительная торговая сессия

вопрос ведь в том, какой смысл в спецификации контракта имеют поля  

"сессии                                    торговые"

которые выдает функция  

 SymbolInfoSessionTrade(...)

она выдает другое расписание, вот в чем вопрос...