Полагаю, мой ответ на нижеприведенный вопрос должен стать достоянием всех.
Сегодня утром
коллега задал вопрос:
Часто в тестировании используют методы бек/форвард тест, иногда устраивают стресс тест, на хаотичных котировках, но в данном примере хотелось показать как смоделировать ситуацию, когда в алгоритме все хорошо, но по той или иной причине нашу заявку не исполнили.
Мой ответ (в 3-х частях, по мере внесения уточнений и подробностей) ему был следующий:
1. Все перечисленные «проблемы» решаются очень просто и успешно, если немного расширить само понятие «робот».
Добавьте надстройку, следящую за состоянием робота, за состоянием сети, инета, которая автоматически блокирует ненужные явления (задваивание ордеров на одном баре, например, или обрыв связи с сервером), и проблем не будет. Да, это выходит за рамки Lua (или того, на чем реализован робот). У меня такие сервисы реализованы на C#, опять же например. Итог: сам включается/выключается, «фильтрует базар» и поддерживает постоянное подключение, «постукивая» мне логами на почту или джаббер…
(тут следует уточняющий вопрос коллеги...)
2. ОК, расширю ответ: все неисполненные по каким-либо причинам ордера мой робот запоминает и при первой же возможности реализует. Сам! Я не влезаю в его работу, он сам решает проблему. Сам снимает, сам восстанавливает.
Главный закон моего робота: сигналы должны быть корректны и всегда исполнены на 100%.
(тут следует еще один уточняющий вопрос коллеги...)
3. Микаелян Саро, у меня робот ВСЕГДА исполняет сигнал. Для того, чтобы ордер был реализован, в моем роботе предусмотрен алгоритм сопровождения ордера в торговой системе. Он перемещает ордер, изменяет цену, объем — всё, что нужно, лишь бы выполнить главное — реализовать сигнал на 100%.
Ну, а то, что цена на рынке не совпадает с какой-то «расчетной», — это просто может стать результатом, что расчет, выполненный до сего момента, оказался неверным в настоящий момент, и его нужно скорректировать с учетом «момента».
Иллюстрация к моим ответам (в нотации IDEF0) — трехконтурная архитектура автономного торгового комплекса:
Как в тесте робот сможет прогнать такой вариант?
Часто подобная ситуация переворачивает результаты.
Допустим: Есть открытая. Диапазон достигнут, надо закрыть и развернуть.
Но тут же есть и в обратной стороне свечи добрать или отстопиться.
В итоге может получиться, что взята увеличенная поза по экстремуму и против себя.
Ну не на «тиках» же у Вас робот, который по «свечам» (сужу по описанию)?!!!