명시
Скрипт должен делать следующее:
1. По выбранному инструменту получать на вход следующие параметры (на первом этапе вручную, на втором - из другой торговой системы): текущую цену инструмента, отклонение от текущей цены на n1 пунктов вверх, отклонение от текущей цены на n2 пунктов вниз, % или абсолютный размер задействованного капитала, бинарный параметр Е.
2. Рассчитать исходя из шага цены инструмента, % капитала, количество и размер требуемых заявок для равномерного заполнения стакана лимитными ордерами на покупку и на продажу от текущей цены на n1 и n2 пунктов соответственно. По команде с клавиатуры начинать работать в реале или виртуально, т.е. не совершая реальных сделок, но на основе данных стакана вести бумажную торговлю, подразумевая результат движения цены в стакане гарантированным исполнением ордеров.
3. При движении цены инструмента вверх и исполнении заявки, например, на продажу- ставить на ее место заявку на покупку и наоборот. Скорее всего, потребуется использовать асинхронный метод выставления заявок.
4. При превышении цены предельного уровня n1 или n2 или отдельно указанного - сокращать позицию рыночными ордерами - либо аналогично лесенкой, либо одномоментно, в зависимости от значения параметра Е.
5. Визуализовывать параметры на графике и текущий результат работы (общее время работы, количество сделок, результат) и помещать эти данные в публичную переменную.
6. Иметь функцию "flatten all", т.е. аварийно по исключению или команде с клавиатуры снимать все ордера и закрывать все позиции.
код должен быть открыт и в разумных размерах комментирован, уметь обрабатывать ошибки (разрыв связи, задержка в котировках, и т.п.)
код должен работать на ФОРТС