Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 23
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Удалось добиться появления баров и торговли:
если бары строятся по Bid - то достаточно в тиках цен ask и bid
если по Last, то в бары надо добавить и цены Last
Жаль что в справке не написано об этом.
А как может быть построения по Last без цен Last?
А как может быть построения по Last без цен Last?
Решил для себя отказаться от пометки, что бары построены по Last.
Кто-то знает, что эта пометка дает?
Видимо изменит только тесты по барам.
Будет high=ask, a low=bid. Это очень хорошо, т.к. стопы/лимитки будут срабатывать с учетом реального спреда, а не минимального за бар.
Open и close может быть и bid и ask, что было первым или последним. - Это может немного путать.
Свои бары буду помечать что они по bid, но формировать c high=ask. Буду точно знать максимальный аск, а не фиктивный по минимальному спреду.
Идеальными были бы бары у которых доступны 8 цен (OHLC и по bid и по ask), а не 4 + минимальный спред.Бары можно формировать из любых цен, если их сам рассчитываешь и переписываешь. Я рассчитал от последних ask и bid. Но оказывается, что надо их и добавить и отметить флагом. При этом размер файла за 1 месяц с 70 до 100 мб увеличился. Смысл не добавлять last - в экономии диска.
У Вас получилась не торговая история, а история спроса и предложения. Т.е. информация о том, по каким ценам участники торгов желали осуществлять торговые операции. Цена Last - это про цены, по котором продавец договорился с покупателем и произвёл сделку. Не знаю, сильно ли будем это мешать МО, или наоборот...
У Вас получилась не торговая история, а история спроса и предложения. Т.е. информация о том, по каким ценам участники торгов желали осуществлять торговые операции. Цена Last - это про цены, по котором продавец договорился с покупателем и произвёл сделку. Не знаю, сильно ли будем это мешать МО, или наоборот...
В данном случае я импортировал именно сделки. А они только по ask и bid могут быть проданы или куплены. Добавление last - только увеличит размер файлов на 30%, но не добавит новой информации.
Где-то читал, что могут быть last внутри спреда. Но думаю это просто до терминала не дошла информация, что аск или бид изменился на бирже - кто то выставил лимитку и ее тут же выкупили.
В данном случае я импортировал именно сделки. А они только по ask и bid могут быть проданы или куплены. Добавление last - только увеличит размер файлов на 30%, но не добавит новой информации.
Где-то читал, что могут быть last внутри спреда. Но думаю это просто до терминала не дошла информация, что аск или бид изменился на бирже - кто то выставил лимитку и ее тут же выкупили.
На Московской бирже вполне могут проходить сделки внутри спреда, если они в одном цикле матчинга. Про крипту не знаю.
Есть важный нюанс, стоп ордера, в т.ч. SL/TP срабатывают по Ask/Bid, если память мне не изменяет, поэтому для более точной эмуляции торгового процесса нужны отдельно цены Last и Ask/Bid.
Опять же про крипту не знаю, как там что срабатывает...
На Московской бирже вполне могут проходить сделки внутри спреда, если они в одном цикле матчинга. Про крипту не знаю.
Есть важный нюанс, стоп ордера, в т.ч. SL/TP срабатывают по Ask/Bid, если память мне не изменяет, поэтому для более точной эмуляции торгового процесса нужны отдельно цены Last и Ask/Bid.
Опять же про крипту не знаю, как там что срабатывает...
Между сделками, аск и бид могут "гулять", но совершаться сделки будут по аск и бид на момент сделки. Для чего нужен ласт не ясно. Разве что для определения аск это был или бид. Это можно и флагом пометить, но флаги не учитываются, если реально не записан ласт.
Нет...
Вот пример. Цена 83985 не была непосредственно перед сделкой Bid/Ask.
Объём может быть больше, чем есть на уровне Bid/Ask в стакане, и это так же будет причина смещения в моменте цены Last за границы Ask/Bid. При это ММ может закрыть сразу это смещение за один тик, в один матчинг.
Нет...
Вот пример. Цена 83985 не была непосредственно перед сделкой Bid/Ask.
Объём может быть больше, чем есть на уровне Bid/Ask в стакане, и это так же будет причина смещения в моменте цены Last за границы Ask/Bid. При это ММ может закрыть сразу это смещение за один тик, в один матчинг.
На сколько помню, просьба была как раз про хранение в ОЗУ одной копии истории, а не для каждого агента отдельно.
Попробовал незамысловатую реализацию такого единого хранения тиков для всех локальных агентов.
Через RAMDrive.
В Common-папке запустил такой bat-файл.
rem Создали RAM-Drive для Тестера. imdisk -a -o awe -s 3G -m Z: -p "/fs:ntfs /q /y /v:MT5Tester" mkdir z:\RAMDrive mklink /j RAMDrive z:\RAMDriveСохранил тики.
Скриптом сохранил тики.
Запустил оптимизацию на этих тиках.
В режиме математических вычислений сделал оптимизацию, меняя количество локальных агентов.
Получил производительность оптимизации.
На рисунке выше показано, что в оптимизации был задействован один агент, совершен 31 проход, тиков ~800 миллионов, средняя производительность 48.9 миллионов тиков в секунду.
Зависимость производительности от количества агентов.
Замерил производительность для разного количества агентов.
И составил соответствующую таблицу.
Доступ пяти агентов к одному и тому же куску памяти (через RAMDRive) происходит в три раза медленнее, чем с включенным только одним агентом. Видимо, сказывается разруливание коллизий при одновременном чтении данных.
НО.
Потребление Агентами памяти практически нулевое! Память используется только для единого хранения исторических данных на всех агенты. Даже при 100 одновременно работающих агентах потребление памяти будет минимальным.
Например, на машине только 12 Гб. Через данный способ можно взять историю на 8 Гб и задействовать пять агентов. При обычном использовании Тестера понадобится, соответственно, 40 гигов свободной памяти. При обходном маневре - чуть больше 8 гигов. Соответственно, скорость оптимизации на машине вырастает в пять раз: вместо одного агента можно задействовать пять (было бы 100 агентов, то 12 Гб RAM хватило бы и на такое количество).
Можно очень круто ускорить оптимизацию ТС через RAMDrive. Ну и, конечно, MQ могли бы создать свой механизм разруливания коллизий одновременного чтения данных, тогда производительность была бы гораздо выше, чем RAMDrive-реализация.
ЗЫ
Производительность почти не зависит от размера блоков чтения (см. входной inBlockSize): пробовал 10К и 100К.