Структура любого робота состоит из набора скриптов (модулей),
каждый из которых реализует определенные функции.
Каждый модуль — это отдельный поток ОС.
Таким образом, все модули робота могут работать параллельно.
Каждый модуль представляет собой функционально законченный скрипт на луа и С+
В настоящее время реализованы следующие модули:
Условно модули можно разделить на две группы:
Первая группа — системные модули
Вторая группа — пользовательские модули
Модули первой группы имеют имя. Имена системных модулей и файлы их скриптов описаны в специальном файле nk_ScriptList.lua:
[«robot»]=»nk_robot»,
[«quote»]=»nk_quote»,
[«order»]=»nk_order»,
[«stop»]=»nk_stop_order»,
[«reply»]=»nk_trans_reply»,
[«alltrades»]=»nk_all_trades»,
[«trade»]=»nk_Trade»,
[«client_holding»]=»nk_futures_client_holding»,
[«client_limits»]=»nk_futures_client_limits»,
[«money»]=»nk_depo_limits»,
[«depo»]=»nk_money_limits»,
[«param»]=»nk_param»,
Функции модулей.
robot — обеспечивает формирование списков инструментов и счетов.
Подключает источники истории сделок и источники очередей стаканов для торгуемых инструментов.
Принимает истории сделок (свечи) и сохраняет
quote — принимает очереди заявок и сохраняет их в локальной базе данных
order — управляет выставлением и снятием заявок.
stop — управляет стоп заявками
reply — контролирует исполнение транзакций
alltrades — приминает тиковые данных торгуемых инструментов и сохраняет их в локальной базе данных
trade — принимает информацию о своих сделках и сохраняет из в локальной базе данных
client_holding — принимает информаицю о позициях по инструментам срочного рынка
client_limits —принимает информацию о лимитах срочного рынка
money — принимает информацию о величине денежных средств на торговых счетах
depo —принимает информацию о существующих позициях акций
——————————————————————-
Пользовательские модули — это любые модули обработки информации
полученной системными модулями
и формирующие любые сигналы управления.
—————————————————————————
Любой модуль имеет стандартную структуру следующего вида:
——————————————————————————-
—стандартный заголовок модуля для всех модулей одинаковый
pf={}; for w in string.gmatch(debug.getinfo(1).short_src,»([^\\]+)») do pf[#pf+1]=w; end
fname=pf[#pf]; pf[#pf]=nil; PathScript=table.concat(pf,»/»)..»/»;
dofile(PathScript..»nk_begin.lua»)
——————— конец заголовка ——————
function work(t)
… программа на языке луа (торговый алгоритм)
end
—стандартное окончание модуля для всех модулей одинаковый
dofile(PathScript..»nk_main.lua»)
——————— конец модуля ——————
Как видим , структура программы простая.
Не надо ничего знать ни о колбеках, ни о потоках, ни о других особенностях КВИК.
Нужно лишь написать на языке LUA свой торговый алгоритмы и установить сигнал на продажу или покупку нужного количества акций или фьючерсов.
Свой алгоритм размещаем внутри функции work()
И ВСЕ!!!
Ну или почти ВСЕ… или почти, почти…
продолжение следует …
статьи по теме: