"StockSharp быстрый старт". Quik. Не отрабатывает Connect...

"StockSharp быстрый старт". Quik. Не отрабатывает Connect...
Atom
10/20/2015
unpresent


Добрый день.

Пытаюсь воспроизвести пример из видео "StockSharp. Быстрый старт! Торговый робот на Quik!" ([url=http://stocksharp.com/products/api/]http://stocksharp.com/products/api/[/url]). Не могу пройти простой квест: _trader.Connect() [crying]

  1. Скачал S#.API версии 4.3.13 ([url=https://github.com/StockSharp/StockSharp/releases/download/4.3.13/StockSharp_4.3.13.zip]https://github.com/StockSharp/StockSharp/releases/download/4.3.13/StockSharp_4.3.13.zip[/url]) (проверил, версия StockSharp.Quik.dll действительно 4.3.13)

    (Аналогично пробовал 4.2.75 - результат тот же, что и далее по тексту)

  2. В Quik загружаю info.wnd (НО! Нашел в другой папке: ...\Samples\Quik\DDE\info.wnd, а не как было в видео: ...\Samples\Quik\info.wnd) ( также пробовал другие wnd: ...\Samples\Quik\DDE\info_extended.wnd, ...\Samples\Quik\DDE\info_options.wnd, ...\Samples\Quik\info_lua.wnd; после каждого выбора в торговые счета "добавлял все". )

  3. Создаю проект (как в примере). Добавляю DLL-ки, как в примере: [list] [] \References\Ecng.Common.dll [] \References\Ecng.ComponentModel.dll [] \References\Ecng.Xaml.dll [] \References\StockSharp.Algo.dll [] \References\StockSharp.BusinessEntities.dll [] \References\StockSharp.Quik.dll

    • (т.к. при компиляции требовал добавить) [] \References\StockSharp.Logging.dll [] \References\StockSharp.Messages.dll[/list]
  4. Собираю простой тест (как в примере + кнопка Тест - для вывода ConnectionState):

[quote] private void btnConnect_Click(object sender, RoutedEventArgs e) { _trader = new QuikTrader(QuikTerminal.GetDefaultPath()); // "D:\Program Files (x86)\Info\info.exe" _trader.Connect(); }

    private void btnTest_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(_trader.ConnectionState.ToString());
    }[/quote]
  1. Запускаю. Если Quik запущен, то молча проходит метод btnConnect_Click. Quik никак не реагирует. При тесте получаем "Failed", вне зависимости от того, запущен сейчас Quik или нет...

  2. Посмотрел настройки DDE вывода у таблиц. Там имя DDE сервера стоит wrapper. Попробовал у некоторых ("Инструменты" и "портфель по деривативам") изменить на STOCKSHARP (т.к. у объекта _trader.DdeServer = "STOCKSHARP"). Ничего не дает. Если еще в QUIK нажать "Начать вывод по DDE", то QUIK выдает ошибку: [quote]Не удалось установить DDE соединение с сервером 'STOCKSHARP'. Либо не запущен 'портфель по деривативам', либо в него не загружен лист ''. Таблица 'Портфель по деривативам'[/quote]

Версии: Microsoft Visual Studio Professional 2015 Version 14.0.23107.0 D14REL Microsoft .NET Framework Version 4.6.00081

С уважением, Владимир.


Tags:


Thanks:


1 2  >
rtDen

Avatar
Date: 10/20/2015
Reply


Пользуйтесь Lua. DDE давно уже не поддерживается S#.

Thanks: unpresent

pft_man

Avatar
Date: 10/20/2015
Reply


Есть способ добавить дополнительные колонки таблиц в Lua? Особенно гарантийное обеспечение интересует.

Thanks:

unpresent

Avatar
Date: 10/20/2015
Reply


Спасибо!

Попрбовал через Lua.

  1. В Quik запустил скрипт (в Таблицы/Lua/Доступные скрипты): \References\StockSharp.Quik.lua

Можно с (логином + паролем), а можно и без ( -- ServerLogin="quik" -- ServerPassword="quik" )

вот такой метод Connect-а:

[quote] private void btnConnect_Click(object sender, RoutedEventArgs e) { if (_trader == null) _trader = new QuikTrader();

        Byte[] local_ip = new Byte[4];
        local_ip[0] = 127; local_ip[1] = 0; local_ip[2] = 0; local_ip[3] = 0;
        EndPoint ep = new IPEndPoint(new IPAddress(local_ip), 5001);
        _trader.LuaFixServerAddress = ep;
        _trader.LuaLogin = "quik";
        SecureString ss = new SecureString();
        Array.ForEach("quik".ToArray(), ss.AppendChar);
        ss.MakeReadOnly();
        _trader.LuaPassword = ss;

        _trader.IsDde = true; // ВАЖНО!

        _trader.Connect();
    }[/quote]

Взлетело после включения _trader.IsDde = true; [smile]

Thanks:

knoppix

Avatar
Date: 10/20/2015
Reply


Может заодно кто подскажет как можно получить через QuikTrader (lua соединение) из QuikJunior тиковые данные? Конкретно интересует цена с графика свечей. По доку понял, что надо вызывать сначала RegisterTrades, но NewTrades событие не вызывается, хотя в самом квике цена на графике успешно меняется. Или же можно как-то например через стакан почуть текущую цену? Стаканные данные умею получать.

Thanks:

rtDen

Avatar
Date: 10/21/2015
Reply


unpresent, что-то вы путаете. IsDDE - как раз включает dde, а не луа. И при использовании луа должно быть false.

Thanks: unpresent

rtDen

Avatar
Date: 10/21/2015
Reply


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

Thanks: knoppix

orphan

Avatar
Date: 10/21/2015
Reply


[quote=rtDen;33888]knoppix, для этого сделки должны транслироваться в таблицу всех сделок. С этим на демо-счете могут быть проблемы, нужно смотреть транслируются в нем тики или нет. С графика тики браться не будут.[/quote]

Если сделки не транслируются, можно написать в поддержку, чтобы включили. Например демо у quik.ru.

Thanks: knoppix

unpresent

Avatar
Date: 10/21/2015
Reply


[quote=rtDen;33887]unpresent, что-то вы путаете. IsDDE - как раз включает dde, а не луа. И при использовании луа должно быть false.[/quote]

Да,да,да... Не могу спорить с тем, что (IsDde = true) -> (используется DDE); (IsDde = false) -> (используется Lua) Просто спешил поделиться радостью, что хоть как-то но получилось присоединиться к Quik-у...

Ну а раз зашла речь о разных типах подключения, тогда давайте буду спрашивать, почему DDE проходит, а Lua - нет.

Итак. Обращая внимания на пункт 5 статьи: http://stocksharp.com/doc/html/1fdfb45f-9d48-4560-bfc4-8d9b5b20a1cf.htm [quote] Выбор режима подключения к Quik (Lua или Dde) выполняется с помощью установки свойства QuikTrader.IsDde. При Lua подключении нет необходимости указывать путь к терминалу, но необходимо указать настройки подключения к серверу (LuaFixServerAddress, LuaLogin и LuaPassword)

Свойство QuikTrader. IsDde по умолчанию установлено в false, т.о. по умолчанию используется Lua подключение. Если необходимо использовать подключение через Dde, необходимо вручную выставить это свойство. [/quote]

Вот здесь у меня действительно [color=blue]получается[/color] создать DDE-подключение, даже получить список инструментов и портфелей: [code=csharp] private StockSharp.Quik.QuikTrader _trader;

    private void DoOnNewSecurities()
    {
        cmbSecurities.ItemsSource = _trader.Securities;
    }
    private void DoOnNewPortfolios()
    {
        cmbPortfolios.ItemsSource = _trader.Portfolios;
    }

    private void btnConnect_Click(object sender, RoutedEventArgs e)
    {
        if (_trader == null)
          _trader = new QuikTrader(QuikTerminal.GetDefaultPath());

        _trader.IsDde = true;

        // Странно! Но без следующей строки экспорт инструментов работает, а экспорт портфелей - нет
        _trader.Connected += () => _trader.StartExport("Инструменты"); 
        _trader.Connect();
    }

    private void btnTest_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(_trader.ConnectionState.ToString());
    }[/code]

Если же я пробую Lua-подключение: [code=csharp] private void DoOnError(Exception e) { MessageBox.Show(e.ToString()); }

    private void btnConnect_Click(object sender, RoutedEventArgs e)
    {
        if (_trader == null)
          _trader = new QuikTrader();

        Byte[] local_ip = new Byte[4]; local_ip[0] = 127; local_ip[1] = 0; local_ip[2] = 0; local_ip[3] = 0;
        EndPoint ep = new IPEndPoint(new IPAddress(local_ip), 5001);
        _trader.LuaFixServerAddress = ep;

        _trader.LuaLogin = "quik";

        SecureString ss = new SecureString();
        Array.ForEach("quik".ToArray(), ss.AppendChar);
        ss.MakeReadOnly();
        _trader.LuaPassword = ss;

        _trader.IsDde = false;

        _trader.ConnectionError += this.DoOnError<Exception>;
        _trader.Connect();
    }[/code],

то [color=red]не работает[/color] - пытается секунд 8 ConnectionState == Connecting, а потом ConnectionState == Failed.

[quote=Ошибка] System.Net.Sockets.SocketException (0x80004005): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 127.0.0.0:5001 в System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port) в StockSharp.Fix.FixMessageAdapter.#=q0_n7SPayiHGWHW4BJMpTBQ==(Int64 #=qlpmqWJEEF4opBaXHlOoAXQ==) в StockSharp.Fix.FixMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message) [/quote]

  1. В Quik загрузил info_lua.wnd
  2. В файле \References\StockSharp.Quik.lua снял комментарии со следующих строчек TransactionAddress="127.0.0.1:5001" MarketDataAddress="127.0.0.1:5001" ServerLogin="quik" ServerPassword="quik"
  3. В Quik запустил скрипт: \References\StockSharp.Quik.lua

Connect не проходит [crying] Куда копать, почему Lua-подключение не проходит, а DDE работает?

Thanks:

unpresent

Avatar
Date: 10/21/2015
Reply


Упс! Прочитал и сам же увидел свою ошибку... IP не тот указал... Надо было 127.0.0.[color=blue][b]1[/b][/color]:5001.

Заработало и Lua, и DDE! Спасибо! [thumbup]

Инструменты, даже сразу все выгрузились )).. Все... пора работать, работать.. Вечером буду уже играться - выгружать портфели, стаканы, сделки и т.п. Если будут вопросы, уж извините - буду беспокоить!

Thanks:

knoppix

Avatar
Date: 10/21/2015
Reply


[quote=rtDen;33888]knoppix, для этого сделки должны транслироваться в таблицу всех сделок. С этим на демо-счете могут быть проблемы, нужно смотреть транслируются в нем тики или нет. С графика тики браться не будут.[/quote]

Т.е. в квике джуниор сделки/цены на графике приходят(считаются) как-то отдельно от реальных данных сделок и поэтому не экспортируются?

  • Попробовал получать сделки через registerTrades в SmartTrader(смартком 3.0) там да, все работатет как часы. Но есть одна проблема вообще с ITInvest'om - демо данные совсем "тухлые" какие-то, одни боковики постоянно.

[quote=orphan;33890] Если сделки не транслируются, можно написать в поддержку, чтобы включили. Например демо у quik.ru.[/quote]

У меня QuikJunior от брокера "Открытие". У них тех. супорт есть?

Thanks:
1 2  >

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

loading
clippy