Библиотеки: Virtual - страница 74

 
hini #:

Я проверил код, и, похоже, уже нет места для улучшений. Обработка 10 миллионов тиков за 0,5 секунды — это предел.

Получилась хорошая демонстрация, как за короткий промежуток времени получилось ускорить советник в ~50 раз!

Всего в шесть раз медленнее теоретического предела - отличный результат.


Если запустить не в Терминале (CopyTicks + Virtual), а в MT5-Тестере (OnTick + Virtual), то замедлится дополнительно где-то в пять раз.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2025.01.10 16:50

Итоговый результат.


MT5-Tester MT5-Tester + Virtual Virtual-Tester
Длительность 0:00:05.057 0:00:01.546 0:00:00.287


ЗЫ Возможно, ускорение дадут эти режимы компиляции.


 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2025.03.04 12:27

VIRTUAL::IsChanged(); // Возвращает true только в том случае, если что-то произошло с ордерами с предыдущего вызова этой функции в том же виртуальном окружении.

Другими словами, это Trade-событие.

Событие Trade генерируется при завершении торговой операции на торговом сервере. Обработка события Trade производится функцией OnTrade() для следующих торговых операций:

  • установка, модификация или удаление отложенного ордера;
  • отмена отложенного ордера при нехватке средств либо по истечении срока действия;
  • срабатывание отложенного ордера;
  • открытие, добавление или закрытие позиции (или части позиции);
  • модификация открытой позиции (изменение стопов).


Как следствие, для ускорения в MT5-Тестере в реальном окружении мартинов/гридеров требуется использовать OnTrade-функцию.

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации...
 
fxsaber #:
ЗЫ Возможно, ускорение дадут эти режимы компиляции.

AVX2 ускорит работу примерно на 0,03 секунды, но это не так существенно. Гораздо эффективнее будет ускорить саму логику стратегии.

 
fxsaber #:
Как следствие, для ускорения в MT5-Тестере в реальном окружении мартинов/гридеров требуется использовать OnTrade-функцию.

Это решение не может определить изменения свопа, необходимо специально рассчитать изменения стоимости свопа.

 
hini #:

Это решение не может определить изменения свопа, необходимо специально рассчитать изменения стоимости свопа.

Вы процитировали текст про реальное окружение. Там своп всегда вычисляется со стороны MQ.

 
fxsaber #:

Вы процитировали текст про реальное окружение. Там своп всегда вычисляется со стороны MQ.

Да, я знаю, что это реальное окружение, поэтому нужно самостоятельно рассчитывать своп. MQ рассчитывает изменения свопа, и, похоже, нет никакого способа получать уведомления об этих изменениях.

 
hini #:

похоже, нет никакого способа получать уведомления об этих изменениях.

  • Сделайте EventSetTimer с шагом 24 часа в OnInit. И сбрасывайте флаг полного расчета в OnTimer.
  • Проверяйте изменение свопа только ОДНОЙ позиции. Если изменился, сбрасывайте флаг.
Оба варианта дешевые, но с OnTimer - бесплатно совсем.
 
fxsaber #:

  • Сделайте EventSetTimer с шагом 24 часа в OnInit. И сбрасывайте флаг полного расчета в OnTimer.
  • Проверяйте изменение свопа только ОДНОЙ позиции. Если изменился, сбрасывайте флаг.
Оба варианта дешевые, но с OnTimer - бесплатно совсем.
Хорошо, спасибо. Я попробую эти два метода. В настоящее время я вручную рассчитываю изменения даты свопа
 
Привет, fxsaber! Вопрос: возможно ли в MQL при компиляции интегрировать внешнюю DLL внутрь EA (экспертного советника), чтобы она работала как встроенная, без необходимости отдельного файла DLL?
 
hini #:
Привет, fxsaber! Вопрос: возможно ли в MQL при компиляции интегрировать внешнюю DLL внутрь EA (экспертного советника), чтобы она работала как встроенная, без необходимости отдельного файла DLL?

Данная ветка касается только Virtual. Задавайте, пожалуйста, вопросы по другим темам в ином месте.