Библиотеки: TickCompressor - со сжатием 1 тика до 2-3 байт в срднем

 

TickCompressor - со сжатием 1 тика до 2-3 байт в срднем:

Сжатие тиковых данных для хранения в компактном виде до 3,5 раз компактнее, чем .tcs файлы MQ. И для быстрой работы с ними, т.к. на чтение 3 байт тратится меньше времени, чем на 60 байт MqlTick структуры.

TickCompressor - со сжатием 1 тика до 2-3 байт в срднем

Автор: Forester

 

Библиотека обновлена. Изменился порядок чтения тиков в цикле. Размер следующего блока надо определять в цикле.

Дополнено описание.

 

Еще +10%.

//               T[tick].ask = ToPrice(this.ap); T[tick].bid = ToPrice(this.bp); T[tick].time_msc = this.tp; T[tick].time=(datetime)(this.tp / 1000);
//               tick++;
               this.SetTick(T[tick++]);
   void SetTick( MqlTick &Tick ) /*const*/ // const, если ToPrice сделать const.
   {
     Tick.ask = ToPrice(this.ap); Tick.bid = ToPrice(this.bp); Tick.time_msc = this.tp; Tick.time=(datetime)(this.tp / 1000); 
   }
 
fxsaber #:

Еще +10%.

Спасибо. Увеличило с

Decompress performance: 64.0 Ticks (millions)/sec.

до

Decompress performance: 68.0 Ticks (millions)/sec.

Код обновил.

В скрипте, в цикле распаковки, вместо

nextSize=Compressor3.ArrToInt2(Ticks2,ZIPpos);//размер следущего блока
ZIPpos+=4

можно использовать более короткий вариант

nextSize=Compressor3.ArrToInt(Ticks2,ZIPpos);//размер следущего блока, увеличит ZIPpos на 4

Но и старый вариант рабочий.