Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 31
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.11.30 09:48
Памятка
Билд 1940.
В настройках терминала параметр "Макс баров в окне" установлено значение 5000.
Но с каждым новым баром количество баров в окне увеличивается (об этом свидетельствуют rates_total в индикаторе и функция Bars (Symbol (), Period ()) . Так и должно быть? До каких пор будет увеличиваться количество баров в окне с течением времени?
Да, это поведение известно еще со времен появления MetaTrader 4. То ест 12-13 лет уже. Терминал сам не подрезает графики во время работы.
Вопрос то был чуть-чуть про другое (разное значение по сути одних и тех же переменных в зависимости от способа доступа к ним).
А табличка из памятки - это просто засада. ;-)
Вопрос то был чуть-чуть про другое (разное значение по сути одних и тех же переменных в зависимости от способа доступа к ним).
Удивляет, что _Symbol меняется. Так то это просто const-переменные, инициализируемые в конструкторе глобального класса.
Удивляет, что _Symbol меняется. Так то это просто const-переменные, инициализируемые в конструкторе глобального класса.
const - определение для программы на MQL, чтобы мы не могли её изменить. Что и как там терминал внутри присваивает - не имеет ограничений. Про глобальный класс впервые слышу - есть где почитать?
const - определение для программы на MQL, чтобы мы не могли её изменить. Что и как там терминал внутри присваивает - не имеет ограничений. Про глобальный класс впервые слышу - есть где почитать?
Это мое определение.
Ну на мой взгляд, если разработчик заявляет:
В переменной _Digits хранится количество десятичных знаков после запятой, определяющее точность измерения цены символа текущего графика.
Можно также использовать функцию Digits().
В переменной _Point хранится размер пункта текущего инструмента в валюте котировки.
Можно также использовать функцию Point().
то там и должны хранится всегда актуальные данные для текущего инструмента. А то после смены счета получается что там хранятся данные не текущего символа, а предыдущего. И получается что через _Digits, _Point и функции SymbolInfo получаем по одному и тому же инструменту разные данные.
Кстати, функции Digits() и Point() тоже выдают старые значения, что в принципе и не удивительно.
И почему бы вообще при смене счета не производить переинициализацию индикатора?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
fxsaber, 2018.11.16 01:33
Пока не в состоянии что-то серьезное написать, решил сделать замеры.
Тестовый советник
22 млн тиков в режиме по всем тикам. Терминалы запускались с RAMDrive. Только одно ядро задействовано. Выбран лучший результат из Оптимизации в 5 прогонов. Кросс-перерасчет выключен. Время указано в секундах. Hedge, Forex, MaxCustom. Исходный баланс 10 млн. В MT5 кастомный символ (свопы и комиссия отсутствуют).
С увеличением одновременно открытых позиций (Amount) заметно растет время выполнения. MT4 проигрывает MT5 по скорости в режиме Тестера и в режиме Virtual.
Virtual значительно быстрее MT5-тестера и слабо зависит от Amount.
Любители сеточных ТС могут увеличить скорость оптимизации почти на порядок, если будут использовать Virtual.
Virtual не затачивался на большое количество одновременных ордеров, но переваривает их неплохо. Чего не скажешь про MT-тестеры. Там, похоже, отсутствует совсем оптимизация в этом месте.
До теста пришла в голову идея, как ускорить Virtual, чтобы количество ордеров почти не влияло на производительность. Но полученные результаты, честно говоря, удивили. Сложно сказать, стоит ли этим заниматься в Virtual. Но 100% это нужно делать в MT5-Тестере.
ЗЫ После замеров понял, что в MT4 не использовал strict-режим. Перезамерять не стал
Несколько лет назад я заметил это в MT4 и сообщил об этом ServiceDesk. Было сказано, что если бы я это заметил, когда MT5 сообщаю об этом.
Теперь я заметил это поведение и в MT5, и вот мое сообщение вместе с рождественским желанием изменить это :)
Я хочу оптимизировать различные MA. Только стандартная функция iMA () «знает» разные методы (sma, ema, smma, lwma), другие (iDEMA, iTEMA, iAMA) этого не делают.
Поэтому любая настройка с MaMethod! = IMA, которая меняет sma, ema, smma, lwma, бессмысленна:
Теперь, если оптимизатор хочет запустить, например:
Все они будут иметь одинаковый результат оптимизации, и их можно избежать - кроме одного (в моем примере это №3), поэтому OnInit () возвращает INIT_PARAMETERS_INCORRECT, и тестер выполняет эту настройку - пока это так хорошо.
Но StrategyTester по-прежнему считает это действительным пропуском. Здесь это всего лишь небольшое количество пропущенных, но засчитанных проходов, но это только пример. Было бы иначе, если вы хотите оптимизировать различные (пользовательские) индикаторы с несравненной настройкой.
Этот «featrure» заставляет Тестер останавливать генетическую оптимизацию в начале, так как максимальное количество проходов (это один из критериев остановки) достигается быстро.
:(
Наверное, решение может быть легким. Просто введите новую константу: «INIT_PARAMETERS_SKIP_BY_TESTER», чтобы Тестер пропускал оценку и не учитывал и вводил ее как действительный проход.
Пользователь (мы) не вынужден проверять, запускается ли EA тестером (пропустить) или нет (не пропустить), как это было в моем примере.
Некоторые другие пожелания Санта-Клауса Казани: