Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2359
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Используя платформу MT4 читаем файл.
Затем переводим данные в переменные: StringToInteger(), StringToDouble(), StringToTime() и т.д.
Ссылка https://www.mql5.com/ru/book/common/conversions/conversions_numbers
Потом используем переменные при оптимизации.
По мере тестирования с оптимизацией открываются новые сделки и МТ4 заполняет новыми ордерами собственные массивы, типа OrdersTotal() и т.д. Необходимо как-то передать ордера из пользовательского массива в массивы самого МТ4. Вот в этом и вопрос - возможно ли это как-нибудь реализовать? Или единственная возможность попытаться заново переоткрыть ордера из пользовательского массива в МТ4, как это делается в классических советниках?
Если буду открывать в МТ4 реальные ордера из своего массива, то их цена открытия в МТ4 может не совпадать с ценой указанной в массиве. Можно попытаться заменить реальные ордера отложенными (в которых цена открытия фиксированная), но это наверное тоже будет непросто.
Есть список сделок совершенных вручную и сохраненных в файл. Возможно ли прочитать их специально написанным для этого советником, в котором результаты должны быть прооптимизированы?
Исходная задача была такой: есть файл сохраненный вручную, нужно его использовать при/для оптимизации. Так?
По мере тестирования с оптимизацией открываются новые сделки и МТ4 заполняет новыми ордерами собственные массивы, типа OrdersTotal() и т.д. Необходимо как-то передать ордера из пользовательского массива в массивы самого МТ4. Вот в этом и вопрос - возможно ли это как-нибудь реализовать? Или единственная возможность попытаться заново переоткрыть ордера из пользовательского массива в МТ4, как это делается в классических советниках?
Если буду открывать в МТ4 реальные ордера из своего массива, то их цена открытия в МТ4 может не совпадать с ценой указанной в массиве. Можно попытаться заменить реальные ордера отложенными (в которых цена открытия фиксированная), но это наверное тоже будет непросто.
Давайте так: мухи отдельно, котлеты отдельно. Тестирование отдельно, работа в живую отдельно. Передавать из одного в другое не имеет смысла. С одной стороны это одна и та же программа, передавать нет смысла.
С другой запущена по разному, передавать в этом случае тоже не имеет смысла. Перефразируйте ваш вопрос.
Исходная задача была такой: есть файл сохраненный вручную, нужно его использовать при/для оптимизации. Так?
Давайте так: мухи отдельно, котлеты отдельно. Тестирование отдельно, работа в живую отдельно. Передавать из одного в другое не имеет смысла. С одной стороны это одна и та же программа, передавать нет смысла.
Использую Тестер МТ4 в качестве симулятора ручной торговли по price action, т.е. торговля не автоматическая. Для этого пользуюсь собственным 'советником'. Входы, СЛ, ТП, открытия и закрытия зависят от конкретной ситуации и не описываются пересечениями скользящих и т.п. Результаты сделок сохраню в файл в нужном формате. Необходимо проверить насколько оптимально использую СЛ, ТП или перевод в безубыток - может закрываю слишком рано или СЛ слишком большой/маленький. Для этого хочу вновь открыть сделки в МТ4 и провести оптимизацию СЛ, ТП и безубытка. Вопрос - как прочитать этот файл со сделками в тестере МТ4, чтобы потом можно было провести оптимизацию?
Можно прочитать файл в массив, а затем в цикле перебирать сделки и когда время открытия бара совпадает со временем открытия сделки - открывать сделку в тестере МТ4, но вероятно будут сильные расхождения между ценой открытия в файле и в МТ4... Думаю суть задумки теперь стала яснее. Приветствуются любые идеи/советы.
Использую Тестер МТ4 в качестве симулятора ручной торговли по price action, т.е. торговля не автоматическая. Для этого пользуюсь собственным 'советником'. Входы, СЛ, ТП, открытия и закрытия зависят от конкретной ситуации и не описываются пересечениями скользящих и т.п. Результаты сделок сохраню в файл в нужном формате. Необходимо проверить насколько оптимально использую СЛ, ТП или перевод в безубыток - может закрываю слишком рано или СЛ слишком большой/маленький. Для этого хочу вновь открыть сделки в МТ4 и провести оптимизацию СЛ, ТП и безубытка. Вопрос - как прочитать этот файл со сделками в тестере МТ4, чтобы потом можно было провести оптимизацию?
Можно прочитать файл в массив, а затем в цикле перебирать сделки и когда время открытия бара совпадает со временем открытия сделки - открывать сделку в тестере МТ4, но вероятно будут сильные расхождения между ценой открытия в файле и в МТ4... Думаю суть задумки теперь стала яснее. Приветствуются любые идеи/советы.
Т.е. сделки, выставленные вручную при торговле, надо прогнать ещё раз через оптимизацию?
Тогда, файл созданный при торговле в ручную, из папки C:\Program Files (x86)\FxPro - MetaTrader 4\MQL4\Files, нужно будет скопировать в папку тестера C:\Program Files (x86)\FxPro - MetaTrader 4\tester\files .
Работа советника в живую и работа тестера/оптимизатора происходят в разных песочницах. После того как файл скопирован в ручную, можно будет запустить оптимизацию, и прочитать этот файл. По данным из файла повторять сделки.
Т.е. сделки, выставленные вручную при торговле, надо прогнать ещё раз через оптимизацию?
Верно.
Тогда, файл созданный при торговле в ручную, из папки C:\Program Files (x86)\FxPro - MetaTrader 4\MQL4\Files, нужно будет скопировать в папку тестера C:\Program Files (x86)\FxPro - MetaTrader 4\tester\files .
При помощи mklink (hard link) можно создавать общие папки, не придется копировать файлы.
После того как файл скопирован в ручную, можно будет запустить оптимизацию, и прочитать этот файл. По данным из файла повторять сделки.
В симуляторе пользуюсь рыночными и отложенными ордерами, отложенные могу переносить пока они не сработают или отменить.
В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).
Верно.
При помощи mklink (hard link) можно создавать общие папки, не придется копировать файлы.
В симуляторе пользуюсь рыночными и отложенными ордерами, отложенные могу переносить пока они не сработают или отменить.
В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).
как то уж слишком обще, внутренние массивы это что, и что значит подставил? Терминал этого не понимает. Есть история ордеров, судя по написанному вами нужно эту историю сделок перенести в тестер, открыть ордера в одинаковое время с реалом ну и лот и тип должны совпадать и оптимизитровать стопы. Из тестера историю не прочитать, и что бы одинаково открыть ордера нужно время, лот, тип ордера получить в тестере, без разницы из массива вы будете время открытия ордера брать или из файла, писать в файл истории сделок из реала или из истории ее подтяните. По итогу Вам нужен файл с полями время, лот, тип и алгоритм, как открывать ордера из этих данных. Понимаем, что время будущее. т.е. на каждом тике или баре нужно время сравнивать, или задействовать ОнТаймер.
Симлинками лучше в тестере не пользоваться, не всегда адекватно работают, тогда уж папка каммон, но лучше в разных песочницах, тестер вещь в себе, наружу не любит вылезать, это же эмуляция состояния и времени.
как то уж слишком обще, внутренние массивы это что, и что значит подставил? Терминал этого не понимает. Есть история ордеров, судя по написанному вами нужно эту историю сделок перенести в тестер, открыть ордера в одинаковое время с реалом ну и лот и тип должны совпадать и оптимизитровать стопы. Из тестера историю не прочитать, и что бы одинаково открыть ордера нужно время, лот, тип ордера получить в тестере, без разницы из массива вы будете время открытия ордера брать или из файла, писать в файл истории сделок из реала или из истории ее подтяните. По итогу Вам нужен файл с полями время, лот, тип и алгоритм, как открывать ордера из этих данных. Понимаем, что время будущее. т.е. на каждом тике или баре нужно время сравнивать, или задействовать ОнТаймер.
Судя по всему, чтобы полностью воспроизвести эти ордера в новой сессии МТ4 придется реализовывать виртуальные ордера и с ними уже как-то работать. Т.е. и оптимизацию надо писать свою, которая будет работать с виртуальными ордерами.. Решил пока сделать иначе, т.е. проще - в той же сессии в которой буду вручную наторговывать массив со сделками (в симуляторе), в ней же параллельно и проведу какое-то подобие оптимизации результатов.
Симлинками лучше в тестере не пользоваться, не всегда адекватно работают, тогда уж папка каммон, но лучше в разных песочницах, тестер вещь в себе, наружу не любит вылезать, это же эмуляция состояния и времени.
В "..\tester\files\" есть папка "Files_X" - при этом она же является общей с "..\MQL4\Files\" - все хорошо видят файлы, помещенные в эту папку.
Судя по всему, чтобы полностью воспроизвести эти ордера в новой сессии МТ4 придется реализовывать виртуальные ордера и с ними уже как-то работать. Т.е. и оптимизацию надо писать свою, которая будет работать с виртуальными ордерами.. Решил пока сделать иначе, т.е. проще - в той же сессии в которой буду вручную наторговывать массив со сделками (в симуляторе), в ней же параллельно и проведу какое-то подобие оптимизации результатов.
В "..\tester\files\" есть папка "Files_X" - при этом она же является общей с "..\MQL4\Files\" - все хорошо видят файлы, помещенные в эту папку.
Пропишите в советник открытие ордеров из Вашего файла(время, лот, цена, направление), а стоп и тейк сделайте переменными для оптимизации.
В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).
Я проверял. Открываются по той же цене.