S# 4.3.8 проблемы с Quik Lua (Samples\Quik\Sample)

S# 4.3.8 проблемы с Quik Lua (Samples\Quik\Sample)
Atom
7/31/2015
Den


Уважаемые разработчики и коллеги!

Quik 6.16.1.15

Решил попробовать Quik с Lua. Скачал релиз S# 4.3.8.

Взял info_lua.wnd из Samples\Quik
Запустил в quik'e StockSharp.Quik.lua из References\

И запустил пример из Samples\Quik\Sample\

В логе вроде все прилично:

2015/07/31 16:13:45.839| |LuaServer |OnInit 2015/07/31 16:13:45.840| |FixServer |Server 0.0.0.0:5001 started. 2015/07/31 16:13:45.841| |FixServer |FixServer (outgoing) stopped. 2015/07/31 16:13:45.841| |FixServer |FixServer started. 2015/07/31 16:13:45.841| |LuaServer |OnInit done 2015/07/31 16:13:45.845| |LuaServer |Main 2015/07/31 16:14:35.285| |FixServer |Connected '127.0.0.1:1236' to '0.0.0.0:5001'. 2015/07/31 16:14:35.285| |FixServer |Received first byte from '127.0.0.1:1236'. 2015/07/31 16:14:35.285| |FixServer |From : Logon 2015/07/31 16:14:35.285| |FixServer |Клиент quik (127.0.0.1:1236) авторизован. 2015/07/31 16:14:35.285| |FixServer |Отправка Logon клиенту. 2015/07/31 16:14:35.285| |FixServer |Сессия запущена. 2015/07/31 16:14:35.290| |FixServer |Connected '127.0.0.1:1237' to '0.0.0.0:5001'. 2015/07/31 16:14:35.290| |FixServer |Received first byte from '127.0.0.1:1237'. 2015/07/31 16:14:35.290| |FixServer |From : Logon 2015/07/31 16:14:35.291| |FixServer |Клиент quik (127.0.0.1:1237) авторизован. 2015/07/31 16:14:35.291| |FixServer |Отправка Logon клиенту. 2015/07/31 16:14:35.291| |FixServer |Сессия запущена.

Но в примере, нет ни инструментов, ни сделок, ни заявок (все это присутствует в квике). Проверял Verifier'ом - не ругается.

Но данные (инструменты, сделки, заявки) в пример не попадают.

Помогите, плиз, разобраться, что я делаю не так.

Или это баг?


Tags:


Thanks:


< 1 2 3 4  >
Den

Avatar
Date: 8/12/2015
Reply


COBRA: во последнем логе нет самого главного инфы про портфолио типа Debug |LuaServer |Out. Position,T(L)=0001.01.01 00:00:00.000,Sec=S#:SiU5@FORT................ Debug |LuaServer |Out. PositionChange,T(L)=0001.01.01 00:00:00.000,T(S)=2015.0 Debug |LuaServer |OnFutPos done Debug |LuaServer |OnFutLimit Debug |LuaServer |Out. Portfolio,T(L)=0001.01.01 00:00:00.000,Name=........................... Debug |LuaServer |Out. PortfolioChange,T(L)=0001.01.01 00:00:00.000,T(S)=2015. Debug |LuaServer |OnFutLimit done

поэтому у вас все висит в состоянии Connecting есть или нет инфа про портфолио?

эти штуки тоже есть, я просто не привел их. Но только они.

По какому условию трейдер в стейт Connected переходит?

Thanks:

COBRA

Avatar
Date: 8/12/2015
Reply


Den: эти штуки тоже есть, я просто не привел их. Но только они.

По какому условию трейдер в стейт Connected переходит?

по условию выполнения метода Connect() у вас с соединением все хорошо.

далее по sample идет подписка на событие wait.Portfolios() - ожидает события портфеля

у вас событие не происходит, по причинам описанными мною выше.

Ходим кругами вокруг одной простой проблемы.
Вы брокера меняли?, код клиента без малень. букв? инструмент у вас с маленькой буквой SiU5?

выполните 3 условия чего сложного?

Если событие Portfolios() произойдет , то в логе будет полный список инструментов по данному коду клиента.(если вы их не отрубили) причем событий Portfolios() может быть несколько, если есть несколько кодов клиента для торговли нужно выбирать требуемый

Thanks: Den

Den

Avatar
Date: 8/12/2015
Reply


COBRA: Вы брокера меняли?, код клиента без малень. букв? инструмент у вас с маленькой буквой SiU5?

выполните 3 условия чего сложного?

Если событие Portfolios() произойдет , то в логе будет полный список инструментов по данному коду клиента.(если вы их не отрубили) причем событий Portfolios() может быть несколько, если есть несколько кодов клиента для торговли нужно выбирать требуемый

У меня боевой квик, а не демо. Брокера менять странно как-то, скидки на тарифах, отношения с личным манагером... Как я могу изменить код клиента? И как я могу изменить SiU5 с маленькой буквой, если он так на самом деле называется?

У меня ожидания от библиотеки, что она брокеро-букво-независимая. Развер это не нормальное ожидание?

Thanks:

Den

Avatar
Date: 8/12/2015
Reply


И все-таки я подключился. Спасибо COBRA - он натолкнул меня на мысль про то, что странное что-то с подключением. И я начал эксперементировать... Отрыл стакан - события по апдейту стакана в логе шли крайне редко. Я остановил луа скрипт и снова запустил. После это события OnQoute стали в логе появляться с нормальной частотой. И трейдер приконнектился.

Затем, я трейдера отключил и остановил луа скрипт. А потом снова запустил.

Полетели эксепшены:

2015/08/12 23:05:58.576|Debug |LuaServer |OnQuote 2015/08/12 23:05:58.577|Error |LuaServer |OnQuoteF System.Runtime.InteropServices.SEHException (0x80004005): External component h as thrown an exception. at _CxxThrowException(Void* , s__ThrowInfo* ) at luabind.detail.throw_error_policy<stdbasic_string<char,stdchar_traits<char>,std::allocator<char> > >.handle_error(basic string<char,stdchar_traits<char>,stdallocator<char> >* , lua_State* interpreter, type_id* type_info) at luabind.detail.object_cast_aux<class stdbasic_string<char,struct stdchar_traits<char>,class stdallocator<char> >,class luabindadlindex_proxy<class luabindadlobject>,struct luabinddetailnull_type,struct luabinddetailthrow_error_polic y<class stdbasic_string<char,struct stdchar_traits<char>,class stdallocator<char> > >,class stdbasic_string<char,struct st dchar_traits<char>,class stdallocator<char> > >(basic_string<char,stdchar_traits<char>,stdallocator<char> >* , index_pro xyluabind::adl::object* value_wrapper, basic_string<char,stdchar_traits<char>,stdallocator<char> >* __unnamed001, null_typ e* __unnamed002, throw_error_policy<stdbasic_string<char,stdchar_traits<char>,stdallocator<char> > >* _unnamed003, basic string<char,stdchar_traits<char>,stdallocator<char> >* __unnamed004) at luabind.object_cast<class stdbasic_string<char,struct stdchar_traits<char>,class stdallocator<char> >,class luabinda dlindex_proxy<class luabindadlobject> >(basic_string<char,stdchar_traits<char>,stdallocator<char> >* , index_proxy<lua bindadlobject>* value_wrapper) at OnQuote(lua_State* ls, basic_string<char,stdchar_traits<char>,stdallocator<char> >* classCode, basic_string<char,std: :char_traits<char>,stdallocator<char> >* secCode)

В общем итог - явно есть баги с подключением через скрипт. Старт-стоп скрипта может вызвать неожиданные эффекты, то события ходят редко, то часто, то экспешены, .....

Надо искать проблемы в StockSharp.QuikLua.dll

P.S. от маленьких букв в торговом счете и SiU5 ничего, как выяснилось, не зависит.

Thanks:

Den

Avatar
Date: 8/12/2015
Reply


Удалил скрипт. перезапустил квик. добавил скрипт и запустил его. трейдер не приконнектился.

остановил скрипт. запустил скрипт. трейдер приконнектился.

в общем что-то странное творится. но стоп/старт скрипта помогает.

Thanks:

COBRA

Avatar
Date: 8/13/2015
Reply


Den: P.S. от маленьких букв в торговом счете и SiU5 ничего, как выяснилось, не зависит.

У меня зависит. От маленьких букв.SiU5- у меня нет события security

Если вы эксперименты с реалом делаете, то это как-то не разумно.

Thanks:

COBRA

Avatar
Date: 8/13/2015
Reply


Den: Удалил скрипт. перезапустил квик. добавил скрипт и запустил его. трейдер не приконнектился.

остановил скрипт. запустил скрипт. трейдер приконнектился.

в общем что-то странное творится. но стоп/старт скрипта помогает.

Я думаю ваши игры с запуском-остановом скрипта связаны с маленькими буквами.

тоже считаю что-то с StockSharp.QuikLua.dll

Трудно что-ли сделать экперимент, все с заглавными буквами - и танцы с скриптом должны прекратиться. Тогда вы подтвердите мою версию БАГа можно тогда жаловаться разработчикам.

Thanks:

Den

Avatar
Date: 8/13/2015
Reply


COBRA: Трудно что-ли сделать экперимент, все с заглавными буквами - и танцы с скриптом должны прекратиться. Тогда вы подтвердите мою версию БАГа можно тогда жаловаться разработчикам.

Если опишите мне у какого брокера нет этих танцев с буквами и как получить демо, я попробую

Thanks:

COBRA

Avatar
Date: 8/13/2015
Reply


Den:

COBRA: Трудно что-ли сделать экперимент, все с заглавными буквами - и танцы с скриптом должны прекратиться. Тогда вы подтвердите мою версию БАГа можно тогда жаловаться разработчикам.

Если опишите мне у какого брокера нет этих танцев с буквами и как получить демо, я попробую

дистрибутив качните и зарегистрируйтесь, на почту сразу логин пароль придет http://quik.ru/user/client/quik/how-to-start/

или у этих тоже все нормально http://broker.ru/demo

Thanks:

Den

Avatar
Date: 8/14/2015
Reply


COBRA: дистрибутив качните и зарегистрируйтесь, на почту сразу логин пароль придет http://quik.ru/user/client/quik/how-to-start/

Взял этот. Не помогает.

Уважаемый, Михаил!

У меня уверенность, что имеет место баг в передаче сообщения Connect трейдеру.

Я сделал так:


    public class MyQuikTrader : QuikTrader
	{
        protected override void OnProcessMessage(Message message)
        {
            if (message.Type != MessageTypes.Time)
                Console.WriteLine("new mesage: {0}", message.ToString());

            base.OnProcessMessage(message);
        }

        protected override void OnConnect()
        {
            Console.WriteLine("OnConnect...");
            base.OnConnect();
            Console.WriteLine("after OnConnect...");
        }
    }

В консоли отображается:

OnConnect... after OnConnect...

Но НИКАКИХ сообщений, отличных от Time больше в трейдере не появляется. Я почитал код и в base.OnConnect() сообщение Connect уходит в BasketMessageAdapter. Каким образом он оттуда должен попасть в Тrader? IMHO баг именно в этом месте.

Как Вы это можете прокомментировать.

Thanks:
< 1 2 3 4  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy