Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если параллельно используются несколько виртуальных окружений, то можно существенно экономить на выборе окружения, если вместо SelectByHandle использовать SelectByIndex.
SelectByHandle:
SelectByIndex:
Код к скрину из параллельной ветки. В fn0() торговая система и вывод баланса в виде индикатора. Как мне объединить это и это? Торговая система будет в отдельном файле. То есть нужно что то вроде AccountInfoDouble(ACCOUNT_BALANCE).
Нужно торговую систему переписать в классический вид: OnTick в стиле MT4. Тогда легко Vitual подключить и получить величину баланса на любой момент.
Однако, библиотека не отвечает за работу с таймсериями. На вход подаются только тики.
Вот этим действием Вы пробросили в виртуальное окружение 9000 сгенерированных тиков.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
Rorschach, 2023.01.17 21:17
На каждом проброшеном тике внутри сформированного виртуального окружения был вызван OnTick.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
Rorschach, 2023.01.17 21:17
Мы видим, что ma[0] (и PositionsTotal) ни разу за 9000 вызовов не изменилось, т.к. бралось из реального окружения - каждый раз изнутри одного вызова fn0(). Т.е. формировалось до 9000 открытых позиций, когда количество одновременно открытых ордеров ограничено (можете поменять).
Далее в каждом вызове OnTimer создаете новое виртуальное торговое окружение.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
Rorschach, 2023.01.17 21:17
Все виртуальные окружения до этого остаются! Вы просто все новые и новые создаете, пока не закончится под них память. Если виртуальное окружение больше не нужно - удаляйте его.
Напишите советник без использования таймсерий.
Спасибо, немного накостылил и заработало
Если параллельно используются несколько виртуальных окружений, то можно существенно экономить на выборе окружения, если вместо SelectByHandle использовать SelectByIndex.
Добавлены указатели на виртуальные окружения. Это предоставляет наибольшую гибкость/удобство использования при работе одновременно с несколькими торговыми окружениями. И скорость переключения.
Производительность.
Замер производился таким скриптом.
Результаты замеров на обеих платформах.
97326 mcs
77569 mcs
869 mcs
525 mcs
36 mcs
8 mcs
13 mcs
Полностью перешел на указатели.
Добавлены указатели на виртуальные окружения. Это предоставляет наибольшую гибкость/удобство использования при работе одновременно с несколькими торговыми окружениями.
Пример работы с несколькими виртуальными окружениями.
В примере было создано девять виртуальных окружений. Показано, как одновременно в двух из них соответственно открывается позиция и выставляется лимитник, а из третьего берутся данные.
В итоге выводится информация из этих трех окружений, сколько всего виртуальных окружения и в каком находимся.
Пример работы с несколькими виртуальными окружениями.
Одно из боевых применений.
Итого активны 15 виртуальных окружений в советнике. Поэтому максимально быстрая и удобная работа необходима.
В некоторых сценариях использования в Терминале могут постоянно работать несколько сотен виртуальных окружений, временно - тысячи.
Сама библиотека не была обновлена?
Сама библиотека не была обновлена?
Обновлены Orders.mqh и Virtual.mqh.
Пояснение по сохранению OrderSelect-выбора окружением.
Пример, показывающий такое поведение.
Результат.
Видим, что в каждом окружении выбор соответствует последнему OrderSelect, сделанному в соответствующем окружении.
Грубо говоря, OrderSelect одного окружения не влияет на ранее выбранный ордер из другого окружения.
Если совсем кратко, все работает правильно.