Specifiche
В «общих чертах», нужно заложить следующий принцип работы: определяется базовый уровень, если цена отклоняется на заданный % - то проводится операция, с учетом фильтров по времени.
Входные параметры (задаются вручную):
- «Старший» таймфрейм;
- «Младший» таймфрейм;
- Фильтр для срабатывания сигналов по порядковому номеру баров «младшего» таймфрейма (макисмальное количество фильтруемых баров равно количеству баров «младшего» таймфрейма в баре старшего таймфрейма. Отдельно для покупки, отдельно для продажи);
- Порядковый номер бара «младшего» таймфрейма, начиная с которого определяется базовый уровень цены и не меняется до порядкового номера бара «младшего» таймфрейма следующего бара «старшего» таймфрейма;
- Тип цены бара «младшего» таймфрейма для записи в базовый уровень (O,H,L,C);
- % изменение от базового уровня (отдельно для покупки, отдельно для продажи);
- Количество контрактов для торговли (лот);
- Тип торгуемой системы (только лонг, только шорт, лонг+шорт);
- Текущая позиция (для запуска / остановки алгоритма в любой момент времени);
- Факт наличия, а также уровень цены текущей стоп-лимитной заявки, тип и прочие параметры заявки выставленной на сервере брокера для открытия / закрытия позиции (для запуска / остановки алгоритма в любой момент времени);
- Проскальзывание для срабатывания стоп-лимитных заявок от лучшего бид/аск.
Открытие и закрытие позиций по алгоритму производиться строго через выставление отложенных ордеров (стоп-лимитная заявка) на сервер брокера.
Соответственно, если фильтром задан период в который сигналы не принимаются – то стоп-лимитную заявку на этот период надо снять и выставить заново – по его прошествии.
Трейлинг и т.п. заявки с проверкой условий на рабочем месте пользователя не интересуют.
«Добавление» / «разбавление» позиций не интересует.
Ручной ввод информации о текущей позиции и выставленных стоп-лимитных заявках нужен для того, чтобы алгоритм мог исполняться на счете параллельно с прочими стратегиями: торговлей вручную, и даже с копией текущего советника, отличающегося лишь входными параметрами. Соответственно, хранить информацию о текущей позиции и ордерах после их изменения в сравнении с заданными вручную при запуске советника надо локально.
Также для удобства необходимо предусмотреть вывод на график уровней с учетом фильтров, по пробитии которых будет осуществлено открытие/закрытие позиций.
Запись во внешние лог-файлы информации о сигналах, заявках и транзакциях.
Плюс информационное окно с выводом текущей позиции по алгоритму (а не по фактической позиции по счету в текущий момент времени).
Подробное описание будет сделано в ТЗ.