Скрипт на Lua для Quik - сканнер больших заявок в биржевых стаканах

Цена договорная
22 сентября 2022, 12:35 • 5 откликов • 22 просмотра
Нужен робот - сканер стакана на предмет идентификации крупных заявок и
дальнейшее наблюдение за ними. То есть робот идентифицирует заявки в
соответствии с настройками (от какого-то кол-ва) и пишет данные в файл.

Интерфейс вижу так:

1. Ввожу инструмент(фьючерс, акции, валюта) - желательно сделать неограниченное число строк.
2.
Ввожу размер минимальных заявок по каждому инструменту, за которыми
будем следить. То есть если в стакане на конкретной цене кол- во ниже -
они нас не интересуют.
Пример:
Инструмент Кол-во(минимальное)
Si-9.22. 3500
Ed-9.22. 800
Ri-9.22. 300

В интерфейсе пока больше ничего не надо - там будем по ситуации смотреть.

По каждому инструменту создаётся отдельный файл - название, и кол-во заявок. Например, si_9_22_3500.txt, ed_9_22_800.txt

Вопрос
сразу про файл - мне было бы удобно, если это будет Эксель, но в целом
не принципиально. В идеале, чтобы файла было 2 и текстовый и
экселевский. Но тут на обсуждение это оставлю.

Значит, что хочу в файле:
Давайте
сразу на примере- на Si-9.22 01.09.2022 в 11-23-48 появилась заявка в
стакане на 3500 лотов на покупку - 4 пункта ниже бида. Робот пишет:
Дата: Время: Лот: Направление: Цена: Дистанция
01.09.2022, 11-23-48, 3500, Long, 60 500, 4

Дальше мы следим за этой заявкой.
Тот лот, который идентифицировал сканер на конкретной цене мы принимаем за 100%

Для будущих задач предусмотрим разъедание объема. То есть при
разъедании объёма робот записывает степень разъедания (например 20%, 30%
и т.д.). Полностью разъеденным объём будем считать 70% от изначального.

То есть, предположим, на si было 3500 контрактов, 70% съели,
осталось 1050 контрактов или меньше. В этот момент робот фиксирует
время, когда этот объём был съеден.

Следующим столбцом робот пишет время сколько заявка просуществовала от 100% до 30% в секундах.

Ещё
один столбец должен предусматривать исполненные и не исполненные
заявки. То есть фиксирует снятие заявки или выход за диапазон стакана.

То
есть «не исполненная» заявка у нас будет считаться та, до которой не
дошла цена; которая ушла из диапазона стакана или которая была снята (на
этой цене объём стал обычным).
Такую заявку робот помечает «не исполнена», но тем не менее, записывает ее.

Полная таблица будет выглядеть следующим образом:

Тикер:
Дата: Время: Лот: Направление: Цена: Дистанция: Разъедание
%: Время исполнения: Время жизни: Статус заявки:

Si-9.22, 01.09.2022, 11-23-48, 3500, Long, 60 500, 4, 80%, 11-25-03, 75 сек, исполнена

ED-9.22 01.09.2022, 16:45-15, 1600, Short, 0.9900, 15, 0%, пусто, пусто, не исполнена