Мультивалютное тестирование - страница 2

 
albe:

"А открыть ордер по другому инструменту в тестере нельзя в силу того, что неизвестно по какой цене его открывать, так как цена других символов не моделируется".

Неужели вот такого примера не достаточно iOpen("USDCHF",1,0) для определения текущей цены другой пары. Точнее все-равно не поймать, по той простой причине, что выполнение програмы происходит с приходом нового тика в той паре, на которой висит советник. Да это не точно, но +- пару пипсов можно перекрыть увеличенным значением проскальзывания на эти же пару пипсов.

При работе в режиме онлайн можно делать все что угодно - можно зациклить одного эксперта и с частотой раз в секунду получать котировки множества инструментов, отправляя ордера хоть по всем сразу.
Но при тестировании оффлайн, то есть работе с тестером, все что можно получить - это данные неродного инструмента, открыть же ордер на нем хотя бы по цене открытия бара уже нельзя. Конечно, стратегию можно и в онлайне прогнать, но на это уйдет немерено времени. Можно в excel загнать кучу данных и условий, однако это не очень удобно. Я подумал, может есть какое готовое решение для такого спектра задач, но увы, пока ничего не нашел.
 

Единственный выход - это писАть эксперта для тестера, т.е. использовать собственные функции открытия и закрытия позиций. Информацию же о всех открытых позах хранить в массивах. Соответсвенно профит, залог и свободные средства считать по формулам на каждом баре. Моделировать естественно по ценам открытия. Можно даже все операции заносить в лог-файл, а в конце формировать отчёт. Потом после тестирования и оптимизации заменить все функции на стандартные.

 
favoritefx:
Я подумал, может есть какое готовое решение для такого спектра задач, но увы, пока ничего не нашел.
"Виртуальное" тестирование (тем более, мультивалютное) - достаточно сложная задача.
Я сейчас занимаюсь реализацией похожего проекта, и уже наткнулся на несколько "подводных камней".
Чем закончится - еще не знаю.
 
albe:

"А открыть ордер по другому инструменту в тестере нельзя в силу того, что неизвестно по какой цене его открывать, так как цена других символов не моделируется".

Неужели вот такого примера не достаточно iOpen("USDCHF",1,0) для определения текущей цены другой пары. Точнее все-равно не поймать, по той простой причине, что выполнение програмы происходит с приходом нового тика в той паре, на которой висит советник. Да это не точно, но +- пару пипсов можно перекрыть увеличенным значением проскальзывания на эти же пару пипсов.

Думаю, дело тут в не том,чтобы определить время открытия по цене открытия бара, а в принципе работы тестера. Я , конечно, не разработчик, но, судя по имеющейся информации, представляю дело примерно так:

Тестер - виртуальная машина, на вход которой подаются данные: сфрмированная тестовая последовательность тиков - .fxt - файл, и параметры символа и советника, данные о сервере. А он обрабатывает их в едином потоке. За счёт этого достигается высокая скорость работы тестера.

В случае тестиравания N инструментов, надо сформировать N тестовых последовательностей, запустить параллельно N тестеров, да ещё синхронизировать их работу во времени с помощью головного модуля-надстройки, что потребует , как минимум, в N раз больше ресурсов памяти и времени. И это не зависит от способа тестирования - по всем тикам или по открытию, просто в последнем случае тестовая последовательность будет короче. Конечно, всё это мои домыслы, во-всяком случае, думаю, что дело выглядит не так просто, как Вам кажется.

Переделывать сейчас тестер под мультивалютность, значит начинать рабрту почти с нуля, а они и так намучились. Тем более, что на повестке дня стоит задача создания MT5 с MQL5, вот там, я думаю, разработчики постараются устранить столь серьёзный недостаток MT4.

 
Xupypr:

Единственный выход - это писАть эксперта для тестера, т.е. использовать собственные функции открытия и закрытия позиций. Информацию же о всех открытых позах хранить в массивах. Соответсвенно профит, залог и свободные средства считать по формулам на каждом баре. Моделировать естественно по ценам открытия. Можно даже все операции заносить в лог-файл, а в конце формировать отчёт. Потом после тестирования и оптимизации заменить все функции на стандартные.

Еще недельку помучаю EXCEL, чтобы убедиться, что идея стоящая, и если она подтвердится,то придется писать модуль для тестирования. Логично будет его реализовать, как DLL.
 
komposter:
favoritefx:
Я подумал, может есть какое готовое решение для такого спектра задач, но увы, пока ничего не нашел.
"Виртуальное" тестирование (тем более, мультивалютное) - достаточно сложная задача.
Я сейчас занимаюсь реализацией похожего проекта, и уже наткнулся на несколько "подводных камней".
Чем закончится - еще не знаю.
Если не секрет, то насколько далеко Вы продвинулись и какие "подводные камни" встретились?
 
favoritefx:
Если не секрет, то насколько далеко Вы продвинулись и какие "подводные камни" встретились?
Вообще, секрет =)

Продвинулся уже почти до конца - советник тестируется (и оптимизируется) на необходимом периоде сам.
Мультивалютным тестированием не занимался, но там все будет аналогично, просто сложнее будет составить синхронизированную тиковую последовательность.
 
favoritefx:
Либо Mql4 + C++ +месяц работы...
Достаточно MQL4 и неделю работы.
 
komposter:
favoritefx:
Либо Mql4 + C++ +месяц работы...
Достаточно MQL4 и неделю работы.
Видимо, я переоценил объем работы :)
Теперь я вдохновлен - неделя это более приемлимо.
 

М-дя... Два дня ковыряния FOREXTESTERa, AMIBROKERa, и WelthLab кончательно убедили меня что лучше MT ничего нет... Бесцельно убитые выходные.. .

Может все-таки разработчики сделают нас счастливыми и когда-нибудь добавят возможность мультивалютного тестирования? Ну хоть в каком-нибудь пусть усеченном виде? Ну хоть просто через возможность красиво объединять результаты тестирования отдельных пар?

Читал что, для мультивалютного тестирования, мол, требуются несметные вычислительные мощности и т.д. Но ведь можно же ограничить портфельное тестирование напр. моделью "по ценам открытия" + крупными ТФ или еще как. Вряд ли это будет так "прожорливо". ... Или тут просто-принципиально - "фигвам", кушайте что дают?)

Причина обращения: