← Atrás

Не удается автоматически подать заявку на SPB

Добрый вечер!

Хочу подать автоматическую заявку на биржу СПБ через QUIK. Код , аналогичный тому же , как и подаю на МБ: Order order = new Order ; Trader.RegisterOrder(order);

На МБ этот код работает. На СПБ заявка не выставляется. Пишет - Не указан код клиента. Версия ПО - 4.4.16.

Вот что пишется в логах:

t["ACCOUNT"] = "VTBRM_CL" t["CLASSCODE"] = "SPBXM" t["SECCODE"] = "AAPL_SPB" t["QUANTITY"] = "1" t["EXPIRY_DATE"] = "GTC" t["OPERATION"] = "S" t["TYPE"] = "L" t["ACTION"] = "NEW_ORDER" t["PRICE"] = "267" t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE" t["TRANS_ID"] = "85452835" return sendTransaction(t) ' SecId='' OrdType='Limit' IsSubscribe='False' DataType='Level1' Arg='' From='' To='' 2019/12/02 23:45:03.444|Error |LuaServer |OnTransReply: trId=85452835, status=5, message='Не указан код клиента'.

Хотя код клиента я явно указал в заявке. В чем может быть проблема?!

С уважением, Лев

¿Le resultó útil este tema?

Compartir tema

Comentarios (20)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

LevNNN
LevNNN Autor

Господа! Хоть какой - то ответ будет?! Все таки Вам деньги за техподдержку заплатил!

Support
Support

Добрый день

Видимо был сбой и мы не получили извещения. В качестве извинений мы продлим тех поддержку на 2 месяца.

Пожалуйста, попробуйте версию 4.4.17 которая доступна в ночных сборках.

LevNNN
LevNNN Autor

Попробовал версию 4.4.17 - никаких изменений по сравнению с версией 4.4.16 - не работает, проблема та же, описана выше

Support
Support

Пожалуйста, пришлите ваш лог.

LevNNN
LevNNN Autor

Лог приаттачил. Смотрите время - 2020/01/16 21:38:37.831

Support
Support

Пожалуйста, включите в луа скрипте логирование уровня Debug. И могли бы вы сделать скриншот окна регистрации заявки перед её отправкой чтобы видеть как именно вы заполняете форму.

LevNNN
LevNNN Autor

Включил уровень Debug. Вот строчки лога, относящиеся к этой заявке.

2020/01/16 23:13:37.264|Debug |FixServer |Session quik: TransId=83521649<->ReqId=83521649 2020/01/16 23:13:37.266|Debug |FixServer |In. OrderRegister,T(L)=0001.01.01 00:00:00.000,Sec=AAPL_SPB@SPBXM,SecType=Stock,TransId=83521649,OrdType=Market,Pf=VTBRM_CL(ClCode=327708),Cond=,UID=83521649,Price=0,Side=Sell,Vol=5/,Till=,TIF=PutInQueue,MM=,MR=,SLP=,MN= 2020/01/16 23:13:37.271| |LuaServer |Request: OrderRegister,T(L)=0001.01.01 00:00:00.000,Sec=AAPL_SPB@SPBXM,SecType=Stock,TransId=83521649,OrdType=Market,Pf=VTBRM_CL(ClCode=327708),Cond=,UID=83521649,Price=0,Side=Sell,Vol=5/,Till=,TIF=PutInQueue,MM=,MR=,SLP=,MN= 2020/01/16 23:13:37.361|Debug |LuaServer |OnQuote 2020/01/16 23:13:37.362|Debug |LuaServer |Out. QuoteChange,T(L)=0001.01.01 00:00:00.000,T(S)=2020.01.16 23:13:37.362 2020/01/16 23:13:37.362|Debug |LuaServer |OnQuote done 2020/01/16 23:13:37.364|Debug |LuaServer |OnQuote 2020/01/16 23:13:37.365|Debug |LuaServer |Out. QuoteChange,T(L)=0001.01.01 00:00:00.000,T(S)=2020.01.16 23:13:37.365 2020/01/16 23:13:37.365|Debug |LuaServer |OnQuote done 2020/01/16 23:13:37.465|Debug |LuaServer |OnTransReply 2020/01/16 23:13:37.465|Error |LuaServer |OnTransReply: trId=83521649, status=5, message='Не указан код клиента'. 2020/01/16 23:13:37.465|Debug |LuaServer |Out. Execution,T(L)=0001.01.01 00:00:00.000,T(S)=2020.01.16 23:13:37.465,(Transaction),Sec=@,O/T=True/False,Ord=/0/83521649,Fail=System.InvalidOperationException: Не указан код клиента,Price=0,OrdVol=,TrVol=,Bal=,TId=,Pf=,TPrice=,UId=,State=Failed,Cond= 2020/01/16 23:13:37.467|Debug |LuaServer |OnTransReplyF done

Не очень понял про окно регистрации заявки, так как посылаю я ее из своей программы. Вот кусок кода, в котором я формирую заявку.

        decimal volume = GetOrderValueBySec(sec, orderValue);
        Sides sides = (orderValue > 0) ? Sides.Buy : Sides.Sell;
        Portfolio ordPortfolio = GetPortfolioBySec(sec);
        if (ordPortfolio == null) return false;

        Order order = new Order
        {
            Portfolio = ordPortfolio,
            Security = sec,
            Volume = volume,
            Direction = sides,
            ClientCode = _clientCode,
            Price = 0
        };
        Trader.RegisterOrder(order);
Support
Support

Попробуйте передать код клиента как портфель. В последней версии коды должны приходить как объекты Portfolio.

Support
Support

Order.Portfolio = clientCodePortfolio;

LevNNN
LevNNN Autor

Попробовал , вот так код модифицировал:

        ordPortfolio.ClientCode = _clientCode;

        Order order = new Order
        {
            Portfolio = ordPortfolio,
            Security = sec,
            Volume = volume,
            Direction = sides,
            Price = 0
        };
        Trader.RegisterOrder(order);

Не помогло, ничего не поменялось. Идет та же ошибка. Хочу обратить внимание, что тот же код работаем через MICEX, а ошибка появляется только при работе через SPB биржу. Например, при попытке купить акции Apple.

Support
Support

Квик для разных секций по разному интерпретирует счета. Где то необходимо указывать счёт, где то только код клиента. Последний идёт ввиде названия счёта. Это зависит от настроек брокера.

Пожалуйста попробуйте код ввиде

Order.Portfolio = clientCodePortfolio;

Менять объект не нужно портфеля. Необходимо использовать отдельный объект Portfolio для кода клиента.

LevNNN
LevNNN Autor

Что такое clientCodePortfolio?! Где его взять?! У меня есть мой номер клиента - это цифровое значение.

Support
Support

Это объект типа Portfolio. Вы можете найти его через Connector.Portfolios или создать сами, указав в качестве имени код клиента.

LevNNN
LevNNN Autor

Нашел я такой портфель, попробовал как Вы советовали присвоить Order.Portfolio = clientCodePortfolio. У меня он под номером 327708. Прежняя ошибка пропала, появилась новая - Указанный счет депо не найден: "327708"

Вот строчки из лога.

2020/01/17 14:19:19.584| |FixServer |From quik 127.0.0.1:64525: NewOrderSingle 2020/01/17 14:19:19.584|Debug |FixServer |Session quik: TransId=51514607<->ReqId=51514607 2020/01/17 14:19:19.584|Debug |FixServer |In. OrderRegister,T(L)=0001.01.01 00:00:00.000,Sec=AAPL_SPB@SPBXM,SecType=Stock,TransId=51514607,OrdType=Market,Pf=327708(ClCode=327708),Cond=,UID=51514607,Price=0,Side=Sell,Vol=10/,Till=,TIF=PutInQueue,MM=,MR=,SLP=,MN= 2020/01/17 14:19:19.586| |LuaServer |Request: OrderRegister,T(L)=0001.01.01 00:00:00.000,Sec=AAPL_SPB@SPBXM,SecType=Stock,TransId=51514607,OrdType=Market,Pf=327708(ClCode=327708),Cond=,UID=51514607,Price=0,Side=Sell,Vol=10/,Till=,TIF=PutInQueue,MM=,MR=,SLP=,MN= 2020/01/17 14:19:19.586| |LuaServer |t = t["ACCOUNT"] = "327708" t["CLASSCODE"] = "SPBXM" t["SECCODE"] = "AAPL_SPB" t["QUANTITY"] = "10" t["EXPIRY_DATE"] = "GTC" t["OPERATION"] = "S" t["TYPE"] = "M" t["ACTION"] = "NEW_ORDER" t["PRICE"] = "0" t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE" t["TRANS_ID"] = "51514607" return sendTransaction(t)

2020/01/17 14:19:19.586|Error |LuaServer |Result: Указанный счет депо не найден: "327708" 2020/01/17 14:19:19.586|Debug |LuaServer |Out. Execution,T(L)=0001.01.01 00:00:00.000,T(S)=2020.01.17 14:19:19.597,(Transaction),Sec=@,O/T=True/False,Ord=/0/51514607,Fail=System.InvalidOperationException: Указанный счет депо не найден: "327708",Price=0,OrdVol=,TrVol=,Bal=,TId=,Pf=,TPrice=,UId=,State=Failed,Cond= 2020/01/17 14:19:19.610|Debug |LuaServer |ProcessQuote

Полностью лог приаттачил.

Support
Support

Могли бы вы приложить скриншот окна регистрации заявки из Квик. По нему будет понятно какая комбинация используется при регистрации.

LevNNN
LevNNN Autor

Скриншот прикрепил.

Support
Support

Добрый день

Пожалуйста, возьмите ночную сборку. Мы выключили авто-выключение кода клиента, ориентированное для Московской Биржи. Вероятнее всего, аналогичная логика использует для SPB (у нас нет логина Квик к данной бирже). Пожалуйста, проверьте и сообщите о результате. Заполнение полей аналогично вашей картинке. Рекомендуем сделать это на примере SampleConnection первоначально.

LevNNN
LevNNN Autor

Взял ночную сборку. Попробовал и получил вот такую ошибку в своей программе -

Message "Лицензия N1448 содержит неправильный идентификатор компьютера 'BFEBFBFF000206A720:41:53:59:4E:FF' вместо 'BFEBFBFF000206A794:DE:80:AA:C3:52'.\r\nЛицензия N1448 истекла 04/11/2014 16:20:17. Посетите сайт https://stocksharp.com/ чтобы приобрести новую.\r\nЛицензия N1448 не поддерживает 'FIX_#=ZBRMRPO4BMPB$ABOFP75EPZ4HENNF0XZJ87MOLNS='."

Взял SampleConnection.exe - подключил только коннекторы Qiuk - там такая же ошибка.

Что делать?! В предыдущих сборках такого не было! Протестировать не удалось.

Support
Support

Пожалуйста, обновите архив. Временно отключили новый вид проверки лицензии из-за ошибочного лицензирования бесплатных коннекторов.

LevNNN
LevNNN Autor

В этой версии заработало.