Cyber (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2
Значения цены в таблице заявок
 
Цитата
nikolz написал:
а где fPrice?
и как понять какие условия сработали ,а какие нет.
myLog('KillOrderPrice: C='..tostring©..'=='..tostring(TRADE_CLASS_CODE)..' and S='..tostring(S)..'=='..tostring(TRADE_SEC_CODE)..' and F='..tostring(F)..' and P='..tostring(P)..'=='..tostring(fPrice))
Похоже, не находит заявки на продажу, только на покупку.
Значения цены в таблице заявок
 
Цитата
nikolz написал:
if (C == TRADE_CLASS_CODE) and (S == TRADE_SEC_CODE) and (bit.band(F, 0x1) ~= 0) and (P == fPrice) then return true end
не помогло
пример лога со всеми вызовами функции myFindPrice
нормально:
Код
Thu May 25 15:09:40 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=25 and P=0.208==0.208;
Thu May 25 15:09:40 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=29 and P=0.231==0.208;
Thu May 25 15:09:40 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=25 and P=0.219==0.208;
Thu May 25 15:09:40 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=29 and P=0.232==0.208;
Thu May 25 15:09:40 2023; OnTransReply 1685016561 Заявка на спрэд фьючерсов 2012575310734055100 снята. Снятое количество: 1.;

а 0,243, например, просто не находит:

Код
Thu May 25 15:11:53 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=29 and P=0.242==0.243;
Thu May 25 15:11:53 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=25 and P=0.22==0.243;
Thu May 25 15:11:53 2023; KillOrderPrice: C=FUTSPREAD==FUTSPREAD and S=NGK3NGM3==NGK3NGM3 and F=29 and P=0.243==0.243;
Thu May 25 15:11:53 2023; Не найдены активные заявки NGK3NGM3=0.243;

Значения цены в таблице заявок
 
вот лог скрипта:
Код
Wed May 24 11:15:17 2023; script Monitor: L Transaction SELL 0.235;
Wed May 24 11:15:17 2023; OnTransReply 1684916125 Заявка на спрэд фьючерсов 2012575306438912367 успешно зарегистрирована.;
Wed May 24 11:15:18 2023; Отмена заявки - NGK3NGM3 = 0.211;
Wed May 24 11:15:18 2023; OnTransReply 1684916126 Заявка на спрэд фьючерсов 2012575306438911628 снята. Снятое количество: 1.;
Wed May 24 11:15:19 2023; Отмена заявки - NGK3NGM3 = 0.235;
Wed May 24 11:15:19 2023; Не найдены активные заявки NGK3NGM3;

Wed May 24 11:15:21 2023; Отмена заявки - NGK3NGM3 = 0.235;
Wed May 24 11:15:21 2023; Не найдены активные заявки NGK3NGM3;

Wed May 24 11:15:23 2023; Отмена заявки - NGK3NGM3 = 0.235;
Wed May 24 11:15:23 2023; Не найдены активные заявки NGK3NGM3;
Значения цены в таблице заявок
 
кусок кода выполняющий поиск заявки по цене:
Код
function KillOrderPrice(ordtable, TRADE_CLASS_CODE, TRADE_SEC_CODE, fPrice)
    function myFindPrice(C,S,F,P)
       return (C == TRADE_CLASS_CODE) and (S == TRADE_SEC_CODE) and (bit.band(F, 0x1) ~= 0) and (P == fPrice)
    end    
    local orders = SearchItems(ordtable, 0, getNumberOf(ordtable)-1, myFindPrice, "class_code,sec_code,flags,price")
    if (orders ~= nil) and (#orders > 0) then
...
Значения цены в таблице заявок
 
Пытаюсь искать заявки по равенству значения поля price в таблице orders цене типа 0.213. Использую функцию SearchItems. Но работает через раз. Причем этот же скрипт нормально работает на обычныйх фьючах и через раз на спредах фьючей. Заявки выставляю в формате цены, как выше писал.
Соответсвует ли формат цены в этой таблице той, что в терминале? В чем причина такого поведения? Кривое округление или его отсутствие?
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Ясно, знкчит нужно городить таблицу и поиск по ней.
А случайно в OnTrade не добавили уникальный номер ответа? Вроде даже запрос делали на добавление, чтоб ответы повторяющиеся группировать?
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
nikolz написал:
Цитата
Cyber написал:
Так я не понял, если торгуем только одним инструментом во всем терминале, то достаточно проверки
if(TradeId>lastTradeId) ?
Номера идут по возрастанию всегда?
А если несколько скриптов, каждый по одному инструменту, то тоже достаточно этого условия?
что такое "TradeId"?
TRANS_ID
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Так я не понял, если торгуем только одним инструментом во всем терминале, то достаточно проверки
if(TradeId>lastTradeId) ?
Номера идут по возрастанию всегда?
А если несколько скриптов, каждый по одному инструменту, то тоже достаточно этого условия?
не работает таблица futures_client_holding и функция getFuturesHolding для FUTSPREAD
 
не работает таблица futures_client_holding и функция getFuturesHolding для FUTSPREAD
для SPBFUT код ниже прекрасно работает, для FUTSPREAD не хочет
функция getFuturesHolding тоже не выдает реальные значения
для SPBFUT все работает нормально
openbuys и opensells должны же для FUTSPREAD что-то выдавать, там же стакан отдельный. Понятно что другие параметры могут не выдавать, например totalnet, так как фьючи, а не спреды уже будут в портфеле.
Код
function GetFutPos(class_code, sec_code)
    local onb uys = 0
    local onse lls = 0
    if class_code == 'SPBFUT' or class_code == 'SPBOPT' or class_code == 'FUTSPREAD' then
        for i = 0,getNumberOf('futures_client_holding') - 1 do
          local futures_client_holding = getItem('futures_client_holding',i)
          if futures_client_holding.sec_code == sec_code then
             onb uys = futures_client_holding.openbuys
             onse lls = futures_client_holding.opensells
          end
       end
    end      
    return onbuys, onsells
end

Нигде больше не смог найти рабочий пример для FUTSPREAD. Может я не правильно что-то делаю? Как для FUTSPREAD посмотреть активные заявки?
Страницы: Пред. 1 2
Наверх