Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2359

 
Putnik #:

Используя платформу MT4 читаем файл.

Затем переводим данные в переменные: StringToInteger(), StringToDouble(), StringToTime() и т.д.

Ссылка https://www.mql5.com/ru/book/common/conversions/conversions_numbers

Потом используем переменные при оптимизации.

По мере тестирования с оптимизацией открываются новые сделки и МТ4 заполняет новыми ордерами собственные массивы, типа OrdersTotal() и т.д. Необходимо как-то передать ордера из пользовательского массива в массивы самого МТ4. Вот в этом и вопрос - возможно ли это как-нибудь реализовать? Или единственная возможность попытаться заново переоткрыть ордера из пользовательского массива в МТ4, как это делается в классических советниках?

Если буду открывать в МТ4 реальные ордера из своего массива, то их цена открытия в МТ4 может не совпадать с ценой указанной в массиве. Можно попытаться заменить реальные ордера отложенными (в которых цена открытия фиксированная), но это наверное тоже будет непросто.

 
grezky #:

Есть список сделок совершенных вручную и сохраненных в файл. Возможно ли прочитать их специально написанным для этого советником, в котором результаты должны быть прооптимизированы?

Исходная задача была такой: есть файл сохраненный вручную, нужно его использовать при/для  оптимизации. Так?

 
grezky #:

По мере тестирования с оптимизацией открываются новые сделки и МТ4 заполняет новыми ордерами собственные массивы, типа OrdersTotal() и т.д. Необходимо как-то передать ордера из пользовательского массива в массивы самого МТ4. Вот в этом и вопрос - возможно ли это как-нибудь реализовать? Или единственная возможность попытаться заново переоткрыть ордера из пользовательского массива в МТ4, как это делается в классических советниках?

Если буду открывать в МТ4 реальные ордера из своего массива, то их цена открытия в МТ4 может не совпадать с ценой указанной в массиве. Можно попытаться заменить реальные ордера отложенными (в которых цена открытия фиксированная), но это наверное тоже будет непросто.

Давайте так: мухи отдельно, котлеты отдельно. Тестирование отдельно, работа в живую отдельно. Передавать из одного в другое не имеет смысла. С одной стороны это одна и та же программа, передавать нет смысла.

С другой запущена по разному, передавать в этом случае тоже не имеет смысла. Перефразируйте ваш вопрос.

 
Putnik #:
Исходная задача была такой: есть файл сохраненный вручную, нужно его использовать при/для  оптимизации. Так?
Putnik #:
Давайте так: мухи отдельно, котлеты отдельно. Тестирование отдельно, работа в живую отдельно. Передавать из одного в другое не имеет смысла. С одной стороны это одна и та же программа, передавать нет смысла.

Использую Тестер МТ4 в качестве симулятора ручной торговли по price action, т.е. торговля не автоматическая. Для этого пользуюсь собственным 'советником'. Входы, СЛ, ТП, открытия и закрытия зависят от конкретной ситуации и не описываются пересечениями скользящих и т.п. Результаты сделок сохраню в файл в нужном формате. Необходимо проверить насколько оптимально использую СЛ, ТП или перевод в безубыток - может закрываю слишком рано или СЛ слишком большой/маленький. Для этого хочу вновь открыть сделки в МТ4 и провести оптимизацию СЛ, ТП и безубытка. Вопрос - как прочитать этот файл со сделками в тестере МТ4, чтобы потом можно было провести оптимизацию?

Можно прочитать файл в массив, а затем в цикле перебирать сделки и когда время открытия бара совпадает со временем открытия сделки - открывать сделку в тестере МТ4, но вероятно будут сильные расхождения между ценой открытия в файле и в МТ4... Думаю суть задумки теперь стала яснее. Приветствуются любые идеи/советы.

 
grezky #:

Использую Тестер МТ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 .

Работа советника в живую и работа тестера/оптимизатора происходят в разных песочницах. После того как файл скопирован в ручную, можно будет запустить оптимизацию, и прочитать этот файл. По данным из файла повторять сделки.

 
Putnik #:
Т.е. сделки, выставленные вручную при торговле, надо прогнать ещё раз через оптимизацию?

Верно.

Putnik #:
Тогда, файл созданный при торговле в ручную, из папки C:\Program Files (x86)\FxPro - MetaTrader 4\MQL4\Files, нужно будет скопировать в папку тестера C:\Program Files (x86)\FxPro - MetaTrader 4\tester\files .

При помощи mklink (hard link) можно создавать общие папки, не придется копировать файлы.


Putnik #:
После того как файл скопирован в ручную, можно будет запустить оптимизацию, и прочитать этот файл. По данным из файла повторять сделки.

В симуляторе пользуюсь рыночными и отложенными ордерами, отложенные могу переносить пока они не сработают или отменить.
В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).

 
grezky #:

Верно.

При помощи mklink (hard link) можно создавать общие папки, не придется копировать файлы.


В симуляторе пользуюсь рыночными и отложенными ордерами, отложенные могу переносить пока они не сработают или отменить.
В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).

как то уж слишком обще, внутренние массивы это что, и что значит подставил?  Терминал этого не понимает. Есть история ордеров, судя по написанному вами нужно эту историю сделок перенести в тестер, открыть ордера в одинаковое время с реалом ну и лот и тип должны совпадать и оптимизитровать стопы. Из тестера историю не прочитать, и что бы одинаково открыть ордера нужно время, лот, тип ордера получить в тестере, без разницы из массива вы будете время открытия ордера брать или из файла, писать в файл истории сделок из реала или из истории ее подтяните. По итогу Вам нужен файл с полями время, лот, тип и алгоритм, как открывать ордера из этих данных. Понимаем, что время будущее. т.е. на каждом тике или баре нужно время сравнивать, или задействовать ОнТаймер.

Симлинками лучше в тестере не пользоваться, не всегда адекватно работают, тогда уж папка каммон, но лучше в разных песочницах, тестер вещь в себе, наружу не любит вылезать, это же эмуляция состояния и времени.

 
Valeriy Yastremskiy #:
как то уж слишком обще, внутренние массивы это что, и что значит подставил?  Терминал этого не понимает. Есть история ордеров, судя по написанному вами нужно эту историю сделок перенести в тестер, открыть ордера в одинаковое время с реалом ну и лот и тип должны совпадать и оптимизитровать стопы. Из тестера историю не прочитать, и что бы одинаково открыть ордера нужно время, лот, тип ордера получить в тестере, без разницы из массива вы будете время открытия ордера брать или из файла, писать в файл истории сделок из реала или из истории ее подтяните. По итогу Вам нужен файл с полями время, лот, тип и алгоритм, как открывать ордера из этих данных. Понимаем, что время будущее. т.е. на каждом тике или баре нужно время сравнивать, или задействовать ОнТаймер.

Судя по всему, чтобы полностью воспроизвести эти ордера в новой сессии МТ4 придется реализовывать виртуальные ордера и с ними уже как-то работать. Т.е. и оптимизацию надо писать свою, которая будет работать с виртуальными ордерами.. Решил пока сделать иначе, т.е. проще - в той же сессии в которой буду вручную наторговывать массив со сделками (в симуляторе), в ней же параллельно и проведу какое-то подобие оптимизации результатов.

Valeriy Yastremskiy #:
Симлинками лучше в тестере не пользоваться, не всегда адекватно работают, тогда уж папка каммон, но лучше в разных песочницах, тестер вещь в себе, наружу не любит вылезать, это же эмуляция состояния и времени.

В "..\tester\files\" есть папка "Files_X"  - при этом она же является общей с "..\MQL4\Files\" - все хорошо видят файлы, помещенные в эту папку.

 
grezky #:

Судя по всему, чтобы полностью воспроизвести эти ордера в новой сессии МТ4 придется реализовывать виртуальные ордера и с ними уже как-то работать. Т.е. и оптимизацию надо писать свою, которая будет работать с виртуальными ордерами.. Решил пока сделать иначе, т.е. проще - в той же сессии в которой буду вручную наторговывать массив со сделками (в симуляторе), в ней же параллельно и проведу какое-то подобие оптимизации результатов.

В "..\tester\files\" есть папка "Files_X"  - при этом она же является общей с "..\MQL4\Files\" - все хорошо видят файлы, помещенные в эту папку.

Пропишите в советник открытие ордеров из Вашего файла(время, лот, цена, направление), а стоп и тейк сделайте переменными для оптимизации.

 
grezky #:


В коде можно перебирать ордера, оставляя только рыночные, но их цены открытия после открытия в МТ4 уже будут другими, т.е. не такими как в файле. Если будут расхождения между открытиями то и дальше по цепочке все остальное будет другим. Вот и стало интересно, нельзя ли 'хакнуть' МТ4, чтобы он в свои (внутренние) массивы подставил мои ордера (также созданные в МТ4).

 Я проверял. Открываются по той же цене.