/
Nebelung
/
QuikAssistantGiga
Обзор
Документация
Войти
/
Nebelung
/
QuikAssistantGiga
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Assistant.lua
189 строк
6 KB
NebelungCat
first_commit
09 дек 2025, 22:27
09 дек 2025, 22:27
04bf7ed
Код
Авторство
О чём код?
require("SubmittingOrders") require("TableConstructor") require("TradeSave") json = require "json" function N_OnInit() if isConnected() == 0 then log.error("N_OnInit() ���������� ����� �� ����������") return end -- ����� ��� ��� Initialization() UpdateTableSetting() RefreshTableOrdersControl() log.debug("N_OnInit() ������������� �������") end -- ������� ����������� ��� ������ �������� ����� while � ������� main function N_OnMainLoop() if not isConnected() == 0 then log.error("N_OnMainLoop() ���������� ����� �� ����������") return end SubmittingOrders() RefreshDataToTableSetting(tableSetting) RefreshTableOrdersControl() end -- ������� ���������� ����� ������������ ������������� ������ function N_OnStop() -- ����� ��� ��� tableSetting:Delete() tableOrdersControl:Delete() -- ������� ��������� log.debug("N_OnStop() ������������ ������������� ������") end function N_OnClose() -- ����� ��� ��� -- ... -- ������� ��������� log.debug("N_OnClose() �������� �����������") end -- ���������� ������� ��� ������ �������� ���������� function N_OnTransSendError(trans) -- ����� ��� ��� ��� �������� ��� ������ �������� ���������� (�������� ��������� �������� ����������) -- ... -- ������� ��������� log.debug("N_OnTransSendError() ������ �������� ���������� �" .. trans.trans_id .. ": " .. trans.result_msg) log.trace(json.encode(trans)) end -- ���������� ������� ��� ������ ���������� ���������� function N_OnTransExecutionError(trans) -- ����� ��� ��� ��� �������� ��� ������ ���������� ���������� (�������� ��������� �������� ����������) SetLimitOrdersWithError(trans) -- ������� ��������� log.debug( "N_OnTransExecutionError() ������ ���������� ���������� �" .. trans.trans_id .. ": " .. trans.result_msg .. " (��� ������ " .. trans.sec_code .. ", ���������� " .. trans.quantity .. ", ���� " .. trans.price .. ")" ) log.trace(json.encode(trans)) end -- ���������� ������� ��� �������� ���������� ���������� function N_OnTransOK(trans) -- ����� ��� ��� ��� �������� ��� �������� ���������� ���������� -- ... -- ������� ��������� log.debug("N_OnTransOK() ���������� �" .. trans.trans_id .. " ������� ���������") log.trace(json.encode(trans)) end -- ���������� ������� ��� ��������� ����� ������ function N_OnNewOrder(order) -- ����� ��� ��� ��� �������� ��� ��������� ����� ������ -- ... -- ������� ��������� log.debug( "N_OnNewOrder() ���������� ����� ������ �" .. order.order_num .. " �� ���������� �" .. order.trans_id .. ", ����������: " .. order.sec_code .. ", ����: " .. order.price .. ", ����������: " .. order.qty ) log.trace(json.encode(order)) end -- ���������� ������� ��� ������, ��� ��������� ���������� ������ function N_OnExecutionOrder(order) -- ����� ��� ��� ��� �������� ��� ������, ��� ��������� ���������� ������ -- ... -- ������� ��������� log.debug( "N_OnExecutionOrder() ������ ������ �" .. order.order_num .. " ��������� � " .. (order.qty - (order.last_execution_count or 0)) .. " �� " .. order.balance ) log.trace(json.encode(order)) end -- ���������� ������� ��� ��������� ����� ������ function N_OnNewTrade(trade) -- ����� ��� ��� ��� �������� ��� ��������� ����� ������ TradeSave(trade) --������� ������ �� ������� ������� TradeClosePosition(trade) -- ������� ��������� log.debug( "N_OnNewTrade() ����� ������ �" .. trade.trade_num .. " �� ���������� �" .. trade.trans_id .. " �� ���� " .. trade.price .. " ������� " .. trade.qty ) log.trace(json.encode(trade)) end -- ���������� �������������� ������ function N_SetLimitOrder( accountCode, clientCode, classCode, securiyCode, operation, -- �������� ('B' - buy, 'S' - sell) price, quantity) -- ���������� �������������� ������ -- �������� ID ��� ��������� ���������� transId = transId + 1 -- ��������� ��������� ��� �������� ���������� local Transaction = { ["TRANS_ID"] = tostring(transId), -- ����� ���������� ["ACCOUNT"] = accountCode, -- ��� ����� ["CLASSCODE"] = classCode, -- ��� ������ ["SECCODE"] = securiyCode, -- ��� ����������� ["ACTION"] = "NEW_ORDER", -- ��� ���������� ('NEW_ORDER' - ����� ������) ["TYPE"] = "L", -- ��� ('L' - ��������������, 'M' - ��������) ["OPERATION"] = operation, -- �������� ('B' - buy, ��� 'S' - sell) ["PRICE"] = price, -- ���� ["QUANTITY"] = quantity, -- ���������� ["CLIENT_CODE"] = clientCode -- ����������� � ����������, ������� ����� ����� � �����������, ������� � ������� � ���� brokerref } log.trace(json.encode(Transaction)) -- ���������� ���������� local Res = sendTransaction(Transaction) -- ���� ��� �������� ���������� �������� ������ if Res ~= "" then -- �������� ������� ��������� ������ (���� ��� ���������) if N_OnTransSendError ~= nil then local trans = {} trans.trans_id = transId trans.transaction = Transaction trans.result_msg = Res N_OnTransSendError(trans) end -- ���������� ����� ���������� � ��������� �� ������ return transId, Res end -- ���� ���������� ����������, ���������� �� ����� return transId, Res end --- ������ ���� ������ function N_CloseAllOrder() function myFind(F) return (bit.band(F, 0x1) ~= 0) end local ord = "orders" local orders = SearchItems(ord, 0, getNumberOf(ord) - 1, myFind, "flags") if (orders ~= nil) and (#orders > 0) then for i = 1, #orders do local transaction = { TRANS_ID = tostring(transId), ACTION = "KILL_ORDER", CLASSCODE = getItem(ord, orders[i]).class_code, SECCODE = getItem(ord, orders[i]).sec_code, ORDER_KEY = tostring(getItem(ord, orders[i]).order_num) } local res = sendTransaction(transaction) end end tableOrdersControl:Clear() end