Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Библиотека обновлена, чтобы лучше работать в мат. режиме MT5-тестера.
В частности, были такие проблемы.
Снова столкнулся с несовпадением порядка для мат и виртуал режима для BTC.
Проблема решилась таким образом:
Предложения:
this.Point = _Point;//::SymbolInfoDouble(sSymb, SYMBOL_POINT); this.Digits = _Digits;//(int)::SymbolInfoInteger(sSymb, SYMBOL_DIGITS);1) В математическом режиме в SymbolInfo...() нули (либо остается что-то от предыдущего запуска в обычном режиме). Вы заполняете _Point и_Digits из файла с тиками - надо брать оттуда. В обычном режиме они тоже будут правильными.
2)
this.TickSize = ::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_SIZE);
this.TickValue = ::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_VALUE);
Сохранил их в файле с тиками. В мат режиме заполняю глобальные переменные _TickSize и _TickValue. И в коде выше делал вот так
И в начало файла добавил#define _TickSize 1
#define _TickValue 1
#endif
чтобы при работе без тикового тестера Virtual имел эти переменные.
После этих изменений с моим тиковым тестером стало правильно рассчитывать прибыль во всех режимах при вычислении в валюте. По пипсам по прежнему - отличия.
Так же предлагаю сделать переключатель режима прибыли через переменную или дефайн, чтобы не лезть в код библиотеки.
В математическом режиме в SymbolInfo...() нули (либо остается что-то от предыдущего запуска в обычном режиме).
Вы можете заполнить любыми данными SYMBOL_BASE-структуру и с ней вызвать VIRTUAL::CreateSingle.
Ровно так делается в EAToMath.mqh.
const int VirtualHandle = VIRTUAL::CreateSingle(this.Data_Tester, this.Data_Tester.Deposit, this.Data_Tester.From);
Обновление - добавлен VIRTUAL::GetSymbolBase().
CreateSingle
Спасибо.
Сделал так.
Работает.
Но хотелось бы иметьфункцию для обновления SYMBOL_BASE существующего символа.
Дело в том, что в мат. режиме виртуалки создаются в OnTester(), но для контроля работы без мат. режима нужно создавать виртуалки при первом тике в OnTick(). И при работе без подключенного модуля работы с тиками.
В общем получается создание виртуалок в 3х местах через условные операторы. Хорошо бы 1 раз создать и потом обновить символ при необходимости. Наподобие GetSymbolBase.
Спасибо.
Сделал так.
Работает.
Но хотелось бы иметьфункцию для обновления SYMBOL_BASE существующего символа.
Дело в том, что в мат. режиме виртуалки создаются в OnTester(), но для контроля работы без мат. режима нужно создавать виртуалки при первом тике в OnTick(). И при работе без подключенного модуля работы с тиками.
В общем получается создание виртуалок в 3х местах через условные операторы. Хорошо бы 1 раз создать и потом обновить символ при необходимости. Наподобие GetSymbolBase.
Почему бы не создавать виртуальное окружение в OnInit? Это будет работать в любом режиме.
Все равно будет минимум 2 разных вызова
VIRTUAL::Create
и
VIRTUAL::CreateSingle(...)
Создал требуемую функцию по аналогии с Get:
в Virtual.mqh
в Orders.mqh
Работает правильно. Для этого в OnInit() создаю виртуалки
Потом перед подачей тиков из файла использую эту новую функцию:
Добавьте пожалуйста в основную версию Virtual.
ПС: Есть еще одна проблема в мат режиме. Поисследую и позже напишу.
Но хотелось бы иметь функцию для обновления SYMBOL_BASE существующего символа.
Наверное, это полезно даже во время прогона, когда нужно пересчитать, например, TickValue.
Дело в том, что в мат. режиме виртуалки создаются в OnTester(), но для контроля работы без мат. режима нужно создавать виртуалки при первом тике в OnTick(). И при работе без подключенного модуля работы с тиками.
В EAToMath это решено. В частности, можно вызывать OnTick из OnTester... Но я понял, что там свой "велосипед".
В общем получается создание виртуалок в 3х местах через условные операторы. Хорошо бы 1 раз создать и потом обновить символ при необходимости. Наподобие GetSymbolBase.
Надо будет сделать.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
Forester, 2025.11.07 10:08
Все равно будет минимум 2 разных вызова
VIRTUAL::Create
и
VIRTUAL::CreateSingle(...)
ПС: Есть еще одна проблема в мат режиме. Поисследую и позже напишу.