«Бот для входа» на языке Lua для Quik

Цена договорная
26 апреля 2022, 18:05 • 1 отклик • 26 просмотров
Что должен делать бот:

Алгоритм должен автоматически выставлять лимитные заявки по текущей рыночной цене (ближайшая цена в момент выставления) по всем указанным счетам. При этом должен быть параметр «временного лага», т.е. например выставляется лимитная заявка, и неисполненный остаток через 15 секунд переносится на новую текущую цену. И так каждые 15 сек пока весь объем не исполнится.

В случае подключения нескольких счетов алгоритм должен выставлять заявки пропорционально объему средств на каждом счете исходя из текущего ГО.



Пример:

Остаток на Счете 1 – 500 тыс

Остаток на Счете 2 – 1 млн. руб

Задача: купить фьючерс BR-5.22 в 18:30 на 90% от свободных средств на счетах с лагом 15 секунд.

Итог: цена Ask фьючерса в BR-5.22 в 18:30 была 106,30, гарантийное обеспечение 1 контракта в 18:30 = 28000р. Бот выставляет две заявки по цене 106.30:

по Счету 1=500.000*0,9/28000 = 16 контрактов

по Счету 2=1.000.000*0,9/28000 = 32 контракта

Каждые 15 секунд неисполненное количество переносится на новую текущую цену Ask пока не исполнится.



Параметры, которые указываются вручную:

1)Инструмент (код фьючерса)

2)Выбор направление (покупка/продажа)

3)Время открытия позиции

4)Объем средств, на которое выставляется заявка (в % от текущей стоимости портфеля)

5)Временной Лаг (в секундах)

6)Номера счетов, которые участвуют в алгоритме (список счетов, по которым будут выставлены заявки)



Параметры, которые берутся из Quik’а:

1)Цена входа – Ask для покупок в момент выставления заявки, и Bid для продаж (из стакана), либо цена последней покупки/продажи.

2)Стоимость портфеля – денежная оценка (таблица «Ограничения по клиентским счетам»)

3)ГО – из «таблицы текущих торгов»

В ситуации когда уже есть открытая позиция и необходимо зайти в противоположную, бот должен автоматом закрывать текущую открытую и заходить в противоположную позицию. Например, текущая позиция – +15 контрактов (покупка). В 18:30 должна быть продажа на 90% от портфеля (допустим также -15 контрактов). Тут бот должен продать не 15, а 30 контрактов.

+15 – 30 =-15

+ это позиция на покупку,

это позиция на продажу