Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как-то режет глаз, когда для получения данных одного бара приходится считывать целый массив. Не разумно с точки зрения производительности и потребления ресурсов.
Лучше уж как-то так:
не проверял
Можно также вместо CopyRates использовать iOpen(), iClose(), iLow() ... по индексу бара, если не нужна полная заполненная структура MqlRates, т.к. она избыточнаНет Николай. Для CopyRates без разницы сколько баров считывать, один или сто. Выигрыш в том, что после получения массива не будет никаких затрат на получение данных другого бара. А что касается iOpen(), iClose(), iLow()…… так это самый плохой вариант. И по скорости однозначно будет медленнее чем считывание массива структур для ста баров.
Потом, в вашем коде для чего вычислять номер бара по времени, если в CopyRates можно поставить время и количество баров для получения данных…
Как-то режет глаз, когда для получения данных одного бара приходится считывать целый массив. Не разумно с точки зрения производительности и потребления ресурсов.
Лучше уж как-то так:
не проверял
Можно также вместо CopyRates использовать iOpen(), iClose(), iLow() ... по индексу бара, если не нужна полная заполненная структура MqlRates, т.к. она избыточнаiBarShift() внутри сводит в ноль все потуги ускорить и упростить.
не проверял
на границе дней будет чудить
Нет Николай. Для CopyRates без разницы сколько баров считывать, один или сто. Выигрыш в том, что после получения массива не будет никаких затрат на получение данных другого бара. А что касается iOpen(), iClose(), iLow()…… так это самый плохой вариант. И по скорости однозначно будет медленнее чем считывание массива структур для ста баров.
Потом, в вашем коде для чего вычислять номер бара по времени, если в CopyRates можно поставить время и количество баров для получения данных…
iBarShift() внутри сводит в ноль все потуги ускорить и упростить.
на границе дней будет чудить
Лучше уж как-то так:
Неординарная реализация, которая заставила меня призадуматься..
Особенно, строка:
TimeCurrent() делим и умножаем на тоже самое. Что это нам даёт?
Чтобы было проще проанализровать правильный ли алгоритм, я накинул индюк, отображающий торговые сессии и распринтовал значения цена открытия, закрытия, хай и лоу. Вижу, что всё выдаёт верно, но есть один косяк. Тол и в котировках, то ли в логике кода.
До смены торговой сессии всё чётко, все цены корректные и нужные. И один принт при смене торговой сессии выдаёт не актуальную информацию. А дальше всё снова верно. Интересно, с чем это связано. Я вот так проверил в боте:
TimeCurrent() делим и умножаем на тоже самое. Что это нам даёт?
Это даёт экономное вычисление начала текущих суток. Деление целочисленное, остаток отбрасывается.
Неординарная реализация, которая заставила меня призадуматься..
Особенно, строка:
TimeCurrent() делим и умножаем на тоже самое. Что это нам даёт?
Чтобы было проще проанализровать правильный ли алгоритм, я накинул индюк, отображающий торговые сессии и распринтовал значения цена открытия, закрытия, хай и лоу. Вижу, что всё выдаёт верно, но есть один косяк. Тол и в котировках, то ли в логике кода.
До смены торговой сессии всё чётко, все цены корректные и нужные. И один принт при смене торговой сессии выдаёт не актуальную информацию. А дальше всё снова верно. Интересно, с чем это связано. Я вот так проверил в боте:
Если тест проводится по H1 по ценам открытия, то понятно. В этом случае берётся только первый тик нового дня, когда все все 4 цены H1 равны
Т.е. для точного теста обязательно прогонять на каждом тике?
Это долго...((Т.е. для точного теста обязательно прогонять на каждом тике?
Это долго...((А зачем принтовать каждый тик?
А не зачем. Тоже получается, что будет не то, что ожидаю. Ведь, пока не сформировался бар (в моём случае часовк т.к. он открыт, но это не важно. Просто я экспериментирую с часовиком) цена закрытия будет плясать..
И почему индекс всегда 0?
Так проще проверить функцию. Взял 0-ой индекс (1-ый бар) и смотришь на 1-ый открытый бар в торговой сессии..
И вообще для теста нужно сравнивать с работой другой функции через контрольную сумму, а не принтовку.
Знать бы, как здесь можно иначе..