Account = "7618xxx" -- Код счета
CLASS_CODE = "SPBFUT" -- Код класса
SEC_CODE = "VBZ9" -- Код инструмента
trans_id = os.time() -- Текущие дата и время в секундах хорошо подходят для уникальных номеров транзакций
IsRun = true
firstRun = 0 -- флаг первого запуска
flag = 0
function main()
while IsRun do
if firstRun==0 then
priceMin = getParamEx(CLASS_CODE, SEC_CODE, "PRICEMIN").param_value+0 -- Цена выставления заявки
CreateTable()
firstRun=1
end
SetTableNotificationCallback(t_id, Touch) --ждем двойного щелчка мыши, чтобы выставить заявку или удалить
end
end
function KillOrderS()
local N = getNumberOf("orders")-1
for i = N, 0 , -1 do
order = getItem("orders", i)
if order.account==Account and order.balance>0 and order.sec_code==SEC_CODE and order.flags==25 then
trans_id = os.time()
local tkill = {
["CLASSCODE"]=CLASS_CODE,
["SECCODE"]=SEC_CODE,
["ACTION"]="KILL_ORDER",
["ACCOUNT"]=Account,
["TRANS_ID"]=tostring(trans_id),
["ORDER_KEY"]=tostring(order.order_num)
}
local res=sendTransaction(tkill)
if res ~= '' then message('KillOrderS(): Ошибка отправки транзакции: '..res) else message('KillOrderS(): Транзакция отправлена') end
sleep(5000)
while getItem("orders", i).flags==25 do
message("flags = "..getItem("orders", i).flags)
sleep(1000)
end
end
end
end
function Touch(t_id, msg, par1, par2)
if msg==QTABLE_LBUTTONDBLCLK and par1==1 then
local On Off = "Off"
if flag==0 then
flag = 1
On Off = "On"
SetColor(t_id, 1, 1, RGB(0,255,0), RGB(0,0,0), RGB(0,200,0), RGB(0,0,0));
TransOpenPos()
else
flag = 0
SetColor(t_id, 1, 1, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR);
KillOrderS()
end
SetCell(t_id, par1, par2, OnOff)
end
end
function CreateTable()
t_id = AllocTable(); -- Получает доступный id для создания
AddColumn(t_id, 1, "ХЗ", true, QTABLE_CACHED_STRING_TYPE, 7);
t = CreateWindow(t_id); -- Создаем
SetWindowCaption(t_id, "ХЗ"); -- Даем заголовок
SetWindowPos(t_id, 0, 0, 100, 100) -- Положение окна
InsertRow(t_id, -1); -- добавляем countLineFileSave строк
SetCell(t_id, 1, 1, tostring(flag))
end
function TransOpenPos()
trans_id = os.time()
local Transaction={
['TRANS_ID'] = tostring(trans_id), -- Номер транзакции
['ACCOUNT'] = Account, -- Код счета
['CLASSCODE'] = CLASS_CODE, -- Код класса
['SECCODE'] = SEC_CODE, -- Код инструмента
['ACTION'] = 'NEW_ORDER', -- Тип транзакции ('NEW_ORDER' - новая заявка)
['OPERATION'] = 'B', -- Операция ('B' - buy, или 'S' - sell)
['TYPE'] = 'L', -- Тип ('L' - лимитированная, 'M' - рыночная)
['QUANTITY'] = '1', -- Количество
['PRICE'] = tostring(priceMin) -- Цена
}
-- Отправляет транзакцию
local Res = sendTransaction(Transaction)
if Res ~= '' then message('TransOpenPos(): Ошибка отправки транзакции: '..Res) else message('TransOpenPos(): Транзакция отправлена') end
end
|