Библиотеки: MathTicker - генератор тиков в математическом режиме - страница 7

 
fxsaber #:
Не понимаю причины. Альтернативные алгоритмы никак не зависят от размера блока.
Возможно из за множества ArrayResize.
Что-то пока считанный массив не совпадает - разбираюсь...
 

Forester #:Возможно из за множества ArrayResize.

Сделайте ОДИН раз с запасом. Альтернативные варианты ровно так поступают.

 
fxsaber #:

Одинаково

Тогда хорошо бы иметь функции MqlTick[]->uchar[]->MqlTick. Подобие которых здесь. ZIP - сомнительная фича.

Сделал такие вызовы одной строкой. Подробнее на странице класса https://www.mql5.com/ru/code/66201 примеры в самом низу или в коде скрипта.

Обсуждение компрессора лучше продолжать там.

TickCompressor - со сжатием 1 тика до 2-3 байт в среднем
TickCompressor - со сжатием 1 тика до 2-3 байт в среднем
  • 2025.11.19
  • www.mql5.com
Сжатие тиковых данных для хранения в компактном виде до 3,5 раз компактнее, чем .tcs файлы MQ. И для быстрой работы с ними, т.к. на чтение 3 байт тратится меньше времени, чем на 60 байт MqlTick структуры.
 
Обновлен MathTicker.mqh
 

Обновлен MathTicker.mqh
В файл дополнительно сохраняются параметры для расчета свопов.

С Virtual использовать так: (полный код на странице библиотеки)

         #ifdef _MathTick_ // запуск с MathTick - он считат параметры символа из файла с тиками. Для тестов в мат режиме
            if(MathTick.isMath){ VIRTUAL::CalcSwaps( MathTick.swapShort, MathTick.swapLong, 0, MathTick.swap3days ); }//свопы из файла с тиками
            else{VIRTUAL::CalcSwaps( _Symbol, 0 );}
         #else
          VIRTUAL::CalcSwaps( _Symbol, 0 );//расчитать свопы - всем сделкам один своп, т.е. если 2+ разных инструмента, то обоим будет своп основного символа
         #endif

Теперь с учетом свопов и комиссий в валюте депозита (моя доработка Virtual), результаты MQ тестера и виртуального в математическом режиме совпадают с точностью до нескольких центов (разница возможно из за округления)

Тестер MQ:

Виртуальный тестер:

 
Forester # :
Теперь с учетом свопов и комиссий в валюте депозита (моя доработка Virtual)
Вы модифицировали Virtual?
 
hini #:
Вы модифицировали Virtual?

Для себя. Второй раз. Теперь по минимуму. Только для комиссий.

Код тут https://www.mql5.com/ru/forum/356959/page8#comment_58417402

Библиотеки: Virtual
Библиотеки: Virtual
  • 2025.11.02
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: Virtual
 
جميع الحقوق محفوظة. رقم الهاتف 778074976 الواتس رقم الواتس 780305338
 
يحي واصل هبة علي واصل هذا رقم 778074976
 
Запускаю этот советник
#property tester_no_cache

#define EATOMATH_ADVANCED_SETTINGS // Дополнительные настройки EAToMath.
#define EATOMATH_ONLY_SYMBOLINFOTICK       // Не создается виртуальное окружение - только SymbolInfoTick
// #include <fxsaber\EAToMath\EAToMath.mqh> // https://www.mql5.com/ru/code/61283

#ifndef __EATOMATH__
  #include <Forester\MathTicker.mqh> // https://www.mql5.com/ru/code/65821
#endif // #ifndef __EATOMATH__

input group "Strategy"
input int rep=0;//Repeats for optimization

void OnTick(){
   static MqlTick Tick;
   if (SymbolInfoTick(_Symbol, Tick)){
      #ifdef _MathTick_
         if(MathTick.SaveTick(Tick)){ return; }//если сохраняем тики, то выход и не торгуем.
      #endif
      Strategy(Tick);
   }
}
double gSum = 0;int tk=0;
void Strategy(MqlTick& Tick){ // простейшая стратегия - использована для сравнения скорости чтения с EAToMath  
   gSum += Tick.bid+Tick.ask; tk++;
}

ulong gStartTime  = GetMicrosecondCount();
double OnTester(){
   #ifdef _MathTick_ // запуск с MathTick - он считает параметры символа из файла с тиками. Для тестов в мат режиме
      if(MathTick.SaveTicksEnd()){return 0;}//закрыть файл после записи тиков и выйти
      if(MathTick.ReadSymbolVars()){
         MathTick.Ticker();//в режиме мат расчетов подаст все тики в Strategy(MqlTick &Tick).
      }
   #endif
   Print("ticks: ",tk);
   long work_time = (long)(GetMicrosecondCount() - gStartTime)/1000;
   //return(NormalizeDouble(work_time, 1)); // для получения скорости работы и
   return gSum;// для сравнения результатов расчета
}


с такими настройками (из архива символов).


В логе такое.

1970.01.01 00:00:00      >>>>>>>>>   Math mode: Run Strategy   <<<<<<<<
1970.01.01 00:00:00   Year: 2025 - archive not found. Check next!!!!!!!!!!!
1970.01.01 00:00:00   Year: 2026
1970.01.01 00:00:00   ReadVars start
1970.01.01 00:00:00   XAUUSD.pro 10 TickItems:1 Digits:2 Point:0.01 TickSize:0.01 TickValue:1.0 VolumeStep:0.01
1970.01.01 00:00:00    minFreeze:0 minStop:0 swapShort:26.396 swapLong:-91.392 swap3days:3 TicksPerBlock:30000 nextSize:94548
1970.01.01 00:00:00   Ticker start
1970.01.01 00:00:00   ticks: 0
OnTester result 0
0 : mathematical test passed in 0:00:01.032
1274 Mb memory used


Проблема только с символами из архива.