MT5 последняя релизная сборка 2361. В аттаче кастомный символ. Создать символ из json, импортировать тики, запустить тест
советника на чарте этого символа.
1.1. При указанных датах вывод похож на правду: 2000 0 2000 0.
1.2. При смене дат на 07.04.2020-08.04.2020 вывод становится странным: -1 4004 1
0.
Во-первых, почему появляется ошибка в первом случае? Во-вторых, почему второй случай
берёт только 1 тик? Дата запроса тиков не менялась.
2. Счёт хедж.
2.1. При указанных датах вывод становится странным: 2000 0 1 0.
Почему второй случай берёт только 1 тик? Дата запроса тиков не менялась.
2.2. При смене дат на 07.04.2020-08.04.2020 вывод остановится странным, но таким же: 2000 0
1 0.
Отсюда вопросы: почему CopyTicks с фиксированными параметрами зависит не только от дат тестирования, но и от типа счёта? Или я что-то
не понимаю и делаю не так?
Это сильно затрудняет работу, просьба по возможности поправить. Удалось воспроизвести? Что-то ещё нужно от меня для повторения?
Спасибо.
Просьба поправить странные баги. Или пояснить, что я делаю не так. Спасибо.
Terminal MetaTrader 5 x64 build 2380 started for MetaQuotes Software Corp.
Terminal Windows 10 build 19041, Intel Core i3-3120M @ 2.50GHz, 1 / 7 Gb memory, 66 / 415 Gb disk, IE 11, UAC, GMT+2
Terminal C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
Network '19332146': authorized on MetaQuotes-Demo through Access Point EU 2 (ping: 66.90 ms, build 2385)
Такой вопрос: есть индикатор 'DigitsTest', он в OnInit() и в OnCalculate() распечатывает Digits(). Если индикатор запустить в тестере или
онлайн (на графике) - Digits() работает верно.
А теперь эксперимент: советник 'DigitsTest EA' запускается на символе 'AUDJPY' (на сегодня по символу
'AUDJPY' цена 67.448 - то есть Digits() выдаёт '3'). Советник создаёт два хендла индикатора 'DigitsTest' - первый на символе
'EURJPY' (на сегодня по символу 'EURJPY' цена 116.326 - то есть Digits() выдаёт '3'), а второй на символе 'EURUSD' (на сегодня
по символу 'EURUSD' цена 1.08333 - то есть Digits() выдаёт '5'). И теперь индикаторы (созданные в советнике) распечатывают
Digits() равное '3'.
Вопрос: почему оба индикатора выдают Digits() равное '3', а не '3' и '5'?
MetaTester 5 started on 127.0.0.1:3000
initialization finished
login (build 2380)
template file tester.tpl added. 2708 bytes loaded
4372 bytes of account info loaded
1482 bytes of tester parameters loaded
188 bytes of input parameters loaded
1022 bytes of symbols list loaded (73 symbols)
expert file added: Experts\Tests\DigitsTest EA.ex5. 16145 bytes loaded
program file added: Indicators\DigitsTest.ex5. 13417 bytes loaded
2517 Mb available, 31 blocks set for ticks generating
initial deposit 10000.00 USD, leverage 1:100
successfully initialized
30 Kb of total initialization data received
Intel Core i3-3120M @ 2.50GHz, 8077 MB
AUDJPY: symbol to be synchronized
AUDJPY: symbol synchronized, 3720 bytes of symbol info received
AUDJPY: history synchronization started
AUDJPY: load 27 bytes of history data to synchronize in 0:00:00.003
AUDJPY: history synchronized from 2015.01.02 to 2020.04.08
AUDJPY,M15: history cache allocated for31468 bars and contains 25913 bars from 2019.01.0206:00 to 2020.01.1723:45
AUDJPY,M15: history begins from 2019.01.0206:00
AUDJPY,M15 (MetaQuotes-Demo): every tick generating
testing with execution delay 1000 milliseconds
AUDJPY,M15: testing of Experts\Tests\DigitsTest EA.ex5 from 2020.01.1900:00 to 2020.04.0800:00 started
2020.01.1900:00:00 AUDJPY: Digits(): 3
EURJPY: symbol to be synchronized
EURJPY: symbol synchronized, 3720 bytes of symbol info received
EURJPY: history synchronization started
EURJPY: load 27 bytes of history data to synchronize in 0:00:00.001
EURJPY: history synchronized from 2015.01.02 to 2020.04.082020.01.1900:00:00 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3
EURJPY,H6: history cache allocated for1313 bars and contains 1081 bars from 2019.01.0206:00 to 2020.01.1718:00
EURJPY,H6: history begins from 2019.01.0206:00
EURUSD: symbol to be synchronized
EURUSD: symbol synchronized, 3720 bytes of symbol info received
EURUSD: history synchronization started
EURUSD: load 27 bytes of history data to synchronize in 0:00:00.002
EURUSD: history synchronized from 2015.01.02 to 2020.04.082020.01.1900:00:00 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3
EURUSD,H6: history cache allocated for1313 bars and contains 1081 bars from 2019.01.0206:00 to 2020.01.1718:00
EURUSD,H6: history begins from 2019.01.0206:002020.01.1900:00:00 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1632020.01.1900:00:00 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.108932020.01.2000:05:00 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1452020.01.2000:05:00 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.10922020.01.2000:05:03 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.152020.01.2000:05:06 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1552020.01.2000:05:06 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109172020.01.2000:05:09 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1542020.01.2000:05:12 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1522020.01.2000:05:13 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109182020.01.2000:05:15 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1552020.01.2000:05:18 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1592020.01.2000:05:20 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109152020.01.2000:05:22 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1512020.01.2000:05:25 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1432020.01.2000:05:26 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109162020.01.2000:05:28 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1422020.01.2000:05:31 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1442020.01.2000:05:33 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109132020.01.2000:05:34 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1282020.01.2000:05:37 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1292020.01.2000:05:40 Indicator DigitsTest: EURUSD, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 1.109152020.01.2000:05:41 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1132020.01.2000:05:44 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1222020.01.2000:05:47 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1192020.01.2000:05:50 Indicator DigitsTest: EURJPY, _Digits: 3, Digits(): 3, ::Digits(): 3, SYMBOL_DIGITS: 3, close 122.1222020.01.2000:05:59ExpertRemove() function called
removed itself within OnTickfinal balance 10000.00 USD
removed itself on 1% of testing interval
AUDJPY,M15: 7 ticks, 1 bars generated. Environment synchronized in 0:00:00.143. Test passed in 0:00:02.690 (including ticks preprocessing 0:00:01.844).
AUDJPY,M15: total time from login to stop testing 0:00:02.833 (including 0:00:00.146for history data synchronization)
31 total ticks for all symbols
AUDJPY: generate 6054824 ticks in 0:00:00.594, passed to tester 28128 ticks
EURJPY: generate 7807510 ticks in 0:00:00.781, passed to tester 28070 ticks
EURUSD: generate 5004172 ticks in 0:00:00.469, passed to tester 18389 ticks
620 Mb memory used including 2 Mb of history data, 384 Mb of tick data
log file "C:\Users\barab\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20200421.log" written
test Experts\Tests\DigitsTest EA.ex5 on AUDJPY,M15 thread finished
prepare for shutdown
На распечатке видно, что индикатор созданный на символе и 'EURJPY' и 'EURUSD' распечатывают Digits
равное '3'.
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Если на хедже открыть две противоположные позиции по лоту, а затем схлопнуть через CloseBy, то во вкладке История (режим) будут показаны эти
две позиции по лоту.
Такое отображение схлопнувшихся позиций показывает, будто было полностью проторговано 2 лота. Но на самом деле - один.
В MT4 с этим сделано хорошо - одна из позиций показывается с нулевым объемом.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
You used static. This is one time initialization!
Переменная - static, для неё выполнена однократная инициализация.
О, простите, иногда я не вижу леса за деревьями.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Тестируем 'CopyTicks'
traveller00, 2020.04.15 08:29
MT5 последняя релизная сборка 2361. В аттаче кастомный символ. Создать символ из json, импортировать тики, запустить тест советника на чарте этого символа.
Советник
Параметры теста
1. Счёт неттинг.
1.1. При указанных датах вывод похож на правду: 2000 0 2000 0.
1.2. При смене дат на 07.04.2020-08.04.2020 вывод становится странным: -1 4004 1 0.
Во-первых, почему появляется ошибка в первом случае? Во-вторых, почему второй случай берёт только 1 тик? Дата запроса тиков не менялась.
2. Счёт хедж.
2.1. При указанных датах вывод становится странным: 2000 0 1 0.
Почему второй случай берёт только 1 тик? Дата запроса тиков не менялась.
2.2. При смене дат на 07.04.2020-08.04.2020 вывод остановится странным, но таким же: 2000 0 1 0.
Отсюда вопросы: почему CopyTicks с фиксированными параметрами зависит не только от дат тестирования, но и от типа счёта? Или я что-то не понимаю и делаю не так?
Это сильно затрудняет работу, просьба по возможности поправить. Удалось воспроизвести? Что-то ещё нужно от меня для повторения? Спасибо.
Просьба поправить странные баги. Или пояснить, что я делаю не так. Спасибо.
Вот такая строка в коде намертво вешает Метаедитор при попытке компиляции, либо закрытии окна, либо переключении на другую вкладку:
2380:
Такой вопрос: есть индикатор 'DigitsTest', он в OnInit() и в OnCalculate() распечатывает Digits(). Если индикатор запустить в тестере или онлайн (на графике) - Digits() работает верно.
А теперь эксперимент: советник 'DigitsTest EA' запускается на символе 'AUDJPY' (на сегодня по символу 'AUDJPY' цена 67.448 - то есть Digits() выдаёт '3'). Советник создаёт два хендла индикатора 'DigitsTest' - первый на символе 'EURJPY' (на сегодня по символу 'EURJPY' цена 116.326 - то есть Digits() выдаёт '3'), а второй на символе 'EURUSD' (на сегодня по символу 'EURUSD' цена 1.08333 - то есть Digits() выдаёт '5'). И теперь индикаторы (созданные в советнике) распечатывают Digits() равное '3'.
Вопрос: почему оба индикатора выдают Digits() равное '3', а не '3' и '5'?
Код индикатора:
Код советника:
Результат запуска в тестере стратегий (отладка на истории)
На распечатке видно, что индикатор созданный на символе и 'EURJPY' и 'EURUSD' распечатывают Digits равное '3'.
2380
SymbolInfoTick не получает тиковые объёмы и реальные объёмы
Код:
Результат запуска
2380
SymbolInfoTick не получает тиковые объёмы и реальные объёмы
Код:
Результат запуска
А почему вы считаете, что там должны быть объёмы???
В документации однозначно сказано
Возвращает текущие цены для указанного символа в переменной типа MqlTick.
а про объёмы ничего нет.
2380
SymbolInfoTick не получает тиковые объёмы и реальные объёмы
Код:
Результат запуска
Дополнил вызовами SYMBOL_VOLUME и SYMBOL_VOLUME_REAL - всё равно объёмов нет.
Результат
Дополнил вызовами SYMBOL_VOLUME и SYMBOL_VOLUME_REAL - всё равно объёмов нет.
Результат
Биржевой инструмент
Какой вы объём ожидаете на форекс? AUDUSDОбъёмы тиков удалось получить только при помощи CopyTickVolume. Почему остальные способы перестали работать?
Результат
Если на хедже открыть две противоположные позиции по лоту, а затем схлопнуть через CloseBy, то во вкладке История (режим) будут показаны эти две позиции по лоту.
Такое отображение схлопнувшихся позиций показывает, будто было полностью проторговано 2 лота. Но на самом деле - один.
В MT4 с этим сделано хорошо - одна из позиций показывается с нулевым объемом.
Строка для поиска: Uluchshenie 021.