Актуально для роботов, которые выставляют много лимиток. Часто возникает проблема: либо при разрыве связи, либо при вылете квика - лимитки остаются висеть и потом исполняются, когда торговые условия уже изминились (если бы квик не вылетел или связь не пропала, бот бы эти лимитки ранее изменил или модифицировал, а так они исполняются уже на невыгодных условиях). Прошу сделать возможность выставлять лимитки, ограниченные по сроку действия в секундах или до определённого времени. Т.о. если квик вылетит или пропадёт надолго связь, рынок не успеет далеко уехать от тех условий, по которым эти лимитки выставлялись - лимитки через заданное время (например через 10 минут после выставляния) сами отменятся.
По всем инструментам всё хорошо, как взял инструмент VKH5, при обращении скриптом к его заявке постоянно пишется ошибка: Значение "" превышает допустимый размер Как исправить? Скрин во вложении:
Есть функция BOOLEAN SetColor(NUMBER t_id, NUMBER row, NUMBER col, NUMBER b_color, NUMBER f_color, NUMBER sel_b_color, NUMBER sel_f_color), которой раскрашиваются ячейки таблицы.
Как в дальнейшем программно получить цвета в заданной ячейки таблицы, например фона и текста? Есть ли что-то типа функции GetColor?
Удаления из системы неактивных заявок?, Можно ли в квике где-то включить опцию, чтобы сами удалялись из квика (из памяти приложения, из списка заявок) неактивные заявки?
Добрый день. Можно ли в квике где-то включить опцию, чтобы сами удалялись из квика (из памяти приложения, из списка заявок) неактивные заявки?
Проблема следующая - написал бота, который часто выставляет/снимает заявки по многим инструментам. К концу дня накапливается несколько десятков тысяч снятых заявок. Что приводит к проблеме со скоростью работы бота. Для обхода заявок использую цикл типа: local n=getNumberOf('orders') - 1; for i=n, 0, -1 do local order = getItem('orders', i) if CheckBit(order.flags, 0)==true then ... Который перебирает все заявки, бот работаем только с активными. Но сама переборка всех заявок от первой до последней начинает отнимать секунды времени.
Можно ли в квике где-то включить опцию, чтобы сами удалялись из квика (из памяти приложения, из списка заявок) неактивные заявки?
Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?, Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?
Для получиния позиций по бумагам, акциям например, использую getNumberOf("depo_limits") и getItem("depo_limits", y); Для фьютчерсов - getNumberOf("futures_client_holding") и getItem("futures_client_holding", y).
Для получения денежных позиций (класс CETS, бумаги типа CNYRUB_TOM ) что нужно использовать? Открыл заявки на покупку и продажу CNYRUB_TOM по соотвествующим ценам. Заявки активны. Пробую испльзовать getNumberOf("account_positions") и getItem("account_positions", y), но getNumberOf("account_positions") выдаёт 0, хотя заявки на покупку/продажу по CETS есть.
Пример моего кода для акций (TQBR) local tempPositions={}; local n = getNumberOf("depo_limits"); for y = 0, n-1 do local trade = getItem("depo_limits", y); local temp_stock_info=getSecurityInfo(GetClassBySecEx(trade.sec_code),trade.sec_code); if temp_stock_info~=nil and trade.limit_kind== 365 then tempPositions[trade.sec_code]={}; tempPositions[trade.sec_code][-1]=trade.locked_sell/temp_stock_info.lot_size; tempPositions[trade.sec_code][0]=trade.currentbal/temp_stock_info.lot_size; tempPositions[trade.sec_code][1]=trade.locked_buy/temp_stock_info.lot_size;
end; end;
Прошу подсказать, что использовать, чтобы получить подобный массив данных по позициям для CETS
Моя функция для получения количества бумаг+ордеров по инструменту:
-- Получает текущую чистую позицию по инструменту function GetTotalPos(stock_id,firm_id,client_code_id,account_id,pos_type) local temp_stock1=getDepoEx(firm_id, client_code_id,stock_id, account_id, 2) local temp_stock_info=getSecurityInfo(GetClassBySec(stock_id),stock_id)
if temp_stock1==nil then message (temp_stock_info.name..' nilll '); sleep(1000); return nil; else
local pos=temp_stock1.currentbal+temp_stock1.locked_buy;
if pos_type==0 then pos=temp_stock1.currentbal; end; if pos_type==1 then pos=temp_stock1.currentbal+temp_stock1.locked_buy; end; if pos_type==2 then pos=temp_stock1.locked_buy; end; if pos_type==-1 then pos=temp_stock1.currentbal+temp_stock1.locked_sell; end; if pos_type==-2 then pos=temp_stock1.locked_sell; end;
return pos/temp_stock_info.lot_size end
end
Периодически при пробегании по всему портфелю бумаг возвращает nil на существующие в портфеле бумаги. Иногда. Раз в 3-5 минут. Почему такое может происходить? параметры переданы верно. Бумага в портфеле есть, но иногда getDepoEx её не видит. Какие есть скрытые особенности у getDepoEx, из за чего бы она могла выдавать nil на реально существующую бумагу в портфеле?