S# 4.3.8 проблемы с Quik Lua (Samples\Quik\Sample)
Atom
31.07.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'ом - не ругается.

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

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

Или это баг?

Теги:


Спасибо:


< 1 2 3 4  >
Den

Фотография
Дата: 12.08.2015
Ответить


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 переходит?
Спасибо:

COBRA

Фотография
Дата: 12.08.2015
Ответить


Den Перейти


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

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


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

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

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

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

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


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

Den

Фотография
Дата: 12.08.2015
Ответить


COBRA Перейти

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

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


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


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

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

Спасибо:

Den

Фотография
Дата: 12.08.2015
Ответить


И все-таки я подключился.
Спасибо 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<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >.handle_error(basic_
string<char\,std::char_traits<char>\,std::allocator<char> >* , lua_State* interpreter, type_id* type_info)
at luabind.detail.object_cast_aux<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class
luabind::adl::index_proxy<class luabind::adl::object>,struct luabind::detail::null_type,struct luabind::detail::throw_error_polic
y<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::basic_string<char,struct st
d::char_traits<char>,class std::allocator<char> > >(basic_string<char\,std::char_traits<char>\,std::allocator<char> >* , index_pro
xy<luabind::adl::object>* value_wrapper, basic_string<char\,std::char_traits<char>\,std::allocator<char> >* __unnamed001, null_typ
e* __unnamed002, throw_error_policy<std::basic_string<char\,std::char_traits<char>\,std::allocator<char> > >* __unnamed003, basic_
string<char\,std::char_traits<char>\,std::allocator<char> >* __unnamed004)
at luabind.object_cast<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class luabind::a
dl::index_proxy<class luabind::adl::object> >(basic_string<char\,std::char_traits<char>\,std::allocator<char> >* , index_proxy<lua
bind::adl::object>* value_wrapper)
at OnQuote(lua_State* ls, basic_string<char\,std::char_traits<char>\,std::allocator<char> >* classCode, basic_string<char\,std:
:char_traits<char>\,std::allocator<char> >* secCode)


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

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

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

Den

Фотография
Дата: 12.08.2015
Ответить


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

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

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

COBRA

Фотография
Дата: 13.08.2015
Ответить


Den Перейти

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


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

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

COBRA

Фотография
Дата: 13.08.2015
Ответить


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

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

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



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

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


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

Den

Фотография
Дата: 13.08.2015
Ответить


COBRA Перейти

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


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

COBRA

Фотография
Дата: 13.08.2015
Ответить


Den Перейти
COBRA Перейти

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


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


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

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

Den

Фотография
Дата: 14.08.2015
Ответить


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 баг именно в этом месте.

Как Вы это можете прокомментировать.
Спасибо:
< 1 2 3 4  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy