Открытый Интерес на истории - страница 2

 

Ром:

Может фейк гонит? Закажу историю всех заявок у биржи, чтобы решить загадку. 

Хотя, я привык, что когда я нахожу косяк в чем-то - то оказывается, что это он мой, а подозрения -чушь моей фантазии.

Не, не фэйк - я проверял прохождение своих заявок в пиковое время. Все времена соответствуют с погрешностью 1мс. Но, вы все равно проверьте.
 
Dmitriy Skub:

Хотите, чтобы МКЛ выступили конкурентом для биржи, которая торгует данными?)) Мысль хорошая, но вряд ли осуществимая.ИМХО.

Квик располагает за последние сутки и не более. Думаю, по той же причине.

Квик показывает всю историю ОИ действующего на данный момент контракт фьючерса 
 
Sergey Mylnikov:
Квик показывает всю историю ОИ действующего на данный момент контракт фьючерса 
Квик показывает то, что брокер разрешает показывать. В Открытии показывают за текущие сутки.
 
Dmitriy Skub:
Квик показывает то, что брокер разрешает показывать. В Открытии показывают за текущие сутки.
Нет, показывает все, или почти все, несколько недель точно, скрин надо, или на слово поверите.
 
anatolev:
Нет, показывает все, или почти все, несколько недель точно, скрин надо, или на слово поверите.
Надо сразу такие посты скринами подтверждать. Для достоверности.
 
anatolev:
Нет, показывает все, или почти все, несколько недель точно, скрин надо, или на слово поверите.
Да, действительно - появилось и ордера и ОИ за неделю примерно, подтверждаю. Правда, почему-то в СИ отсутствуют объемы ордеров (как и раньше - есть за сутки только). Речь про М1, конечно же, идет.
 
Ром:

На МТ снапшот стаканов примерно  втрое быстрей чем при получении  через коннектор смартком .Мои советники по стратегиям арбитража, написанные на сишарпе, работающие через смартком в 6 раз прибыльнее аналогичнычных, написанных на MQL, работающих в "открытии".

Ну и как такое может быть?

Сколько примеров уже было логов, где показано, что даже выставление заявки может длиться секунды. Разрабы стрелки переводят на биржу. Биржа - у нас все OK.

На смарткоме бывают такие тормоза? Если не бывают и еще и прибыльней, значит, однозначно, MT кривой в части исполнения. 

 

В частности для чего бы еще пригодилось добавление ОИ к данным по тикам: сейчас не представляется возможным провести синхронизацию ОИ с временем прихода торговых тиков. Тики приходят с точностью до мс, а время прихода нового значения ОИ можно вычислить только приближенно.

Либо, как вариант, хотя бы добавить в свойства SymbolInfoInteger() флаг, показывающий время прихода последнего значения ОИ (с точностью до мс).

Уважаемые разработчики (@Renat Fatkhullin, @Slawa), скажите пожалуйста, есть ли возможность реализовать:

1. Возможность доступа к истории ОИ (квик же может!);

2. Возможность получать значения ОИ с точностью до мс?

 

Вообще, функция получения ОИ, насколько я понимаю, асинхронная? Т.е., чтобы как можно быстрее получить актуальный ОИ из индикатора, нужно пользоваться таймером?

Для сравнения времени получения ОИ из таймера и OnCalculate() набросал тестовый индикатор:

#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Включаем таймер
   EventSetMillisecondTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   const datetime oiTime= TimeCurrent();
   static double oiPrev = 0;
//---
   const double oi=SymbolInfoDouble(_Symbol,SYMBOL_SESSION_INTEREST);
   if(oiPrev!=oi)
     {
      oiPrev=oi;
      Print(__FUNCTION__,": ("+TimeToString(oiTime,TIME_SECONDS)+"): oi = ",DoubleToString(oi,0));
     }
   else
      Print(__FUNCTION__,": ПОВТОР! "+TimeToString(oiTime,TIME_SECONDS)+" oi = "+DoubleToString(oi,0));
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   const datetime oiTime= TimeCurrent();
   static double oiPrev = 0;
//---
   const double oi=SymbolInfoDouble(_Symbol,SYMBOL_SESSION_INTEREST);
   if(oiPrev!=oi)
     {
      oiPrev=oi;
      Print(__FUNCTION__,": ("+TimeToString(oiTime,TIME_SECONDS)+"): oi = ",DoubleToString(oi,0));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
//+------------------------------------------------------------------+

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

2017.01.11 16:31:21.904 test_SpeedOI (RTS-3.17,M1)      OnTimer: (14:31:21): oi = 570212
2017.01.11 16:31:25.146 test_SpeedOI (RTS-3.17,M1)      OnCalculate: (14:31:24): oi = 570212
2017.01.11 16:31:25.155 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.156 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.157 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.157 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.158 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.159 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.160 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.161 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.161 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.162 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:24 oi = 570212
2017.01.11 16:31:25.365 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:25 oi = 570212
2017.01.11 16:31:25.376 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:25 oi = 570212
2017.01.11 16:31:25.874 test_SpeedOI (RTS-3.17,M1)      OnTimer: (14:31:25): oi = 570234
2017.01.11 16:31:30.035 test_SpeedOI (RTS-3.17,M1)      OnTimer: (14:31:29): oi = 570236
2017.01.11 16:31:30.036 test_SpeedOI (RTS-3.17,M1)      OnCalculate: (14:31:29): oi = 570236
2017.01.11 16:31:30.815 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:30 oi = 570236
2017.01.11 16:31:31.212 test_SpeedOI (RTS-3.17,M1)      OnCalculate: ПОВТОР! 14:31:30 oi = 570236

Причем, похоже, что OnCalculate() еще и пропустить может обновление ОИ.
 

 
Ром:

На МТ снапшот стаканов примерно  втрое быстрей чем при получении  через коннектор смартком .Мои советники по стратегиям арбитража, написанные на сишарпе, работающие через смартком в 6 раз прибыльнее аналогичнычных, написанных на MQL, работающих в "открытии".   И снапшот (sleep) уменьшал в функции  EventSetMillisecondTimer(sleep);  Но нет..  Тут загадка.  Может, "так получилось" . Может особенности исполнения? итп

Тогда логично предположить что если забирать стакан в МТ а торговать через коннектор будет еще лучше.
Причина обращения: