Синхронизация локального времени Windows с сервером МТ5 - страница 12

 

Ребята, из БКС, у кого есть реальный счёт,

запустите код пожалуйста на реале и результат выложите здесь.

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MqlTick post_ticks[];
   string symbol = "Si-3.17";
   ulong from = ulong(D'2017.01.20 23:49:00') * 1000;
   int result=CopyTicks(symbol, post_ticks, COPY_TICKS_ALL, from, 2000);
   if(result > 0)
   {
     string str="";
     int f_handle=FileOpen("Si-3.17_ticks.txt",FILE_WRITE|FILE_ANSI|FILE_TXT);
     if (f_handle != INVALID_HANDLE)
     {
       FileWrite(f_handle, "Symbol\tTime\tLast\tFlags");
       for(int i = 0; i< result;i++)
       {
         if(post_ticks[i].flags == 88)
         {
         str=symbol + "\t" + string(post_ticks[i].time) + "." +
             string(post_ticks[i].time_msc%1000) + "\t" + string(post_ticks[i].last) +
             "\tПродажа";
         }
         else
         if(post_ticks[i].flags == 56)
         {
           str=symbol + "\t" + string(post_ticks[i].time) + "." +
             string(post_ticks[i].time_msc%1000) + "\t" + string(post_ticks[i].last) +
             "\tПокупка";
         }
         else
         {
           str=symbol + "\t" + string(post_ticks[i].time) + "." +
             string(post_ticks[i].time_msc%1000) + "\t" + string(post_ticks[i].last) +
             "\t" +  string(post_ticks[i].flags);
         }    
         FileWrite(f_handle, str);    
       }
       FileClose(f_handle);
     }
   }
//---
   return(INIT_SUCCEEDED);
  }


 

 
Синхронизация происходит по первой сделке (пока, до выяснения причин)
Файлы:
 
prostotrader:

Так быстро врятли разберутся :(

Добавлено

Я, кажется догадываюсь, почему так происходит!

Дело в том, что с биржи сделки и котировки (ордера) приходят разными потоками,

и на сервере они обрабатываются разными функциями. Та, что отвечает за сделки

работает правильно и правильно сохраняет информацию в историю

(об этом говорит то, что за 496 357 сделок нет ни одного пропуска), а та, что

отвечает за ордера "хромает"... 

Оставлю здесь для справки выдержку из переписки с СД:

Support Team 2016.12.14 14:17

1. Тики (а также буки, текущие цены из маркет вотча) обновляются/собираются независимо от работы индикаторов/экспертов. Также независимо от экспертов строятся бары.

2. А вот расчет индикаторов происходит в потоке построения баров. То есть после каждого применения тика к бару - вызывается расчет индикатора! При этом ни один тик не пропускается.

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

Это нужно учитывать в расчетах: либо вы анализируете тики, либо бары, либо если нужно и то и другое, то кому то нужно отдать приоритет (для случая последнего бара).

4. Особенно это начинается сильно проявляется если расчет индикатора делается долго.
 
Alexey Kozitsyn:

Оставлю здесь для справки выдержку из переписки с СД:

2. А вот расчет индикаторов происходит в потоке построения баров. То есть после каждого применения тика к бару - вызывается расчет индикатора! При этом ни один тик не пропускается.
Запускаешь медленный индикатор на EURUSD M1. Запускаешь на другом чарте EURUSD M1 советник. И если советник использует историю баров, получаешь постоянные обломы.
 
prostotrader:
Синхронизация происходит по первой сделке (пока, до выяснения причин)

Сработал точно и в 10-00 и в 14-05

2017.01.26 10:00:00.000 Time_sync_forts (URKA-3.17,H1)  Local time sync is done. Symbol = RTS-3.17 Sync hour = 10 Sync min = 0 Sync sec = 0 Sync ms = 0
2017.01.26 14:05:00.005 Time_sync_forts (URKA-3.17,H1)  Local time sync is done. Symbol = RTS-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 5

Добавлено

Пожалуй, уберу BR, чтобы всё происходило автоматичести 3 месяца :) 

Файлы:
 

Из анонса нового билда 1525 пункт 11

MQL5: Исправлена ошибка, в некоторых случаях приводившая к пропуску тиков в тиковой истории.


 Но СД вообще ничего не написал.

Были ранее "дырки"? 

 
prostotrader:

Из анонса нового билда 1525 пункт 11

MQL5: Исправлена ошибка, в некоторых случаях приводившая к пропуску тиков в тиковой истории.


 Но СД вообще ничего не написал.

Были ранее "дырки"? 

Ранее - точно были. В части тиков TRADE - точно. В билде 1495 стало гораздо лучше.
 
Alexey Kozitsyn:
Ранее - точно были. В части тиков TRADE - точно. В билде 1495 стало гораздо лучше.

Я не нашёл пропусков почти на 500 000 сделках.

Видимо не ещё что-то поправили, кроме ИНФО (ордеров)... 

Но, радует, что прогрксс всё-таки есть. 

Добавлено

Жаль, что форумчане (ФОРТС) слабовктиыные в этой важной проблеме.

Никто из БКС так и не выложил тест. 

Чем больше данных, тем быстрее могут поправить. 

 
prostotrader:

Я не нашёл пропусков почти на 500 000 сделках.

Видимо не ещё что-то поправили, кроме ИНФО (ордеров)... 

Но, радует, что прогрксс всё-таки есть. 

Да, прогресс есть - большой. Но, чтобы провести синхронизацию в реальном времени (свести тики в свече с объемом, который можно получить из volume[]) - нужно поставить много костылей. Пока до конца этот вопрос у меня еще не закрыт. СД мне перестали отвечать :)
 
prostotrader:

Я не нашёл пропусков почти на 500 000 сделках.

Видимо не ещё что-то поправили, кроме ИНФО (ордеров)... 

Но, радует, что прогрксс всё-таки есть. 

Добавлено

Жаль, что форумчане (ФОРТС) слабовктиыные в этой важной проблеме.

Никто из БКС так и не выложил тест. 

Чем больше данных, тем быстрее могут поправить. 

На истории из БКС косяков было больше, чем на аналогичном периоде в Открытии. В этом году еще не занимался проверками.