Как програмно переключаться между созданными таблицами?, нужно программно активировать конкретную таблицу из созданных ранее, чтобы обрабатывались клавиши применительно к этой таблице.
Добрый день. Имею в роботе 2 своих таблицы - основную (из которой ведётся торговля путём нажатия клавиш из заданной ф-ии через SetTableNotificationCallback) и вспомогательную (в которой выводятся некоторые данные по торговому инструменту). Вспомогательная появляется, когда в основной таблице мышкой выделяется какой-либо торговый инструмент, появляется рядом с выбранным мышкой инструментом с помощью ф-ии SetWindowPos. При этом активируется вспомогательная таблица и основная перестаёт реагировать на нажатие клавиш клавиатуры. Как программно активировать обратно основную таблицу (но не при помощи SetWindowPos - таблица большая и некомфорто моргает, когда используешь эту функцию)? Или сделать так, чтобы не активировалась вспомогательная таблица? Сейчас это делаю кликом мышки по шапке основной таблицы, чтобы обраьно её активировать, но это неудобно делать каждый раз после смены инстумента.
Актуально для роботов, которые выставляют много лимиток. Часто возникает проблема: либо при разрыве связи, либо при вылете квика - лимитки остаются висеть и потом исполняются, когда торговые условия уже изминились (если бы квик не вылетел или связь не пропала, бот бы эти лимитки ранее изменил или модифицировал, а так они исполняются уже на невыгодных условиях). Прошу сделать возможность выставлять лимитки, ограниченные по сроку действия в секундах или до определённого времени. Т.о. если квик вылетит или пропадёт надолго связь, рынок не успеет далеко уехать от тех условий, по которым эти лимитки выставлялись - лимитки через заданное время (например через 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 на реально существующую бумагу в портфеле?