Урок 2. Потоковые данные (сделки, котировки). Шаблон для универсального (безопасного) подключения.

Урок 2. Потоковые данные (сделки, котировки). Шаблон для универсального (безопасного) подключения.
Atom
4/20/2013
IvanB


Видео-уроки:
Создание обертки коннекторов (шаблон для подключений)

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470507&hash=5aed0d16f3d8cb3b&hd=3[/vk]


Работа с потоковыми данными

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477199&hash=974c22b650016bee&hd=3[/vk]

Видео-уроки (экстра):
Работа с котировками, отслеживание сигналов

[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477299&hash=130700df674df7af&hd=3[/vk]

Темы занятия:

Создание безопасной обертки (шаблона) для различных коннекторов
  1. Создание безопасного варианта универсального подключения
  2. Создание элемента управления для работы с коннектором (подключение, отключение, инструменты)


Потоковые данные
  1. Котировки
  2. Сделки


Создание приложения, отображающего потоковые данные
  1. Вывод всех сделок в окно
  2. Создание визуального стакана котировок


Домашнее задание:
  1. Вывести в окно значение латентности и время последнего обновления стакана.
  2. Добавить в окно второй стакан глубиной в 5.


Полезные ссылки:
Класс MarketDepth
Класс Quote
Класс Trade

Вложения:
Скачать проекты


Изменения в проектах:



Thanks:


Николай

Avatar
Date: 11/27/2013
Reply


Подскажите пожалуйста, а где взять исходники от уроков?
Thanks:

IvanB

Avatar
Date: 11/27/2013
Reply


Николай
Подскажите пожалуйста, а где взять исходники от уроков?

Исходники находятся на сервере, подробнее описано в следующем посте: http://stocksharp.com/fo...nilishchie-stratieghii/

Thanks:

FireSpirit

Avatar
Date: 1/15/2014
Reply


Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???
Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.
P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать.
Thanks:

IvanB

Avatar
Date: 1/16/2014
Reply


FireSpirit
Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???
Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.
P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать.


Все вопросы по урокам обсуждаются в соответствующем разделе
stocksharp.com/forum/tags/Обучение/

В Вашем случае надо убедиться что стакан приходит. Если используете Quik, то закройте в терминале Quik соответствующий стакан (или все стаканы) и повторите запуск Вашей программы.
Проверьте, что стакан приходит, через точку останова.
Через оригинальный проект урока значение Latency удается получить?
Thanks:

devruss

Avatar
Date: 1/24/2014
Reply


Со всеми изменениями, для последнего build S#, код для урока должен выглядеть так:
Code

using System;
using MoreLinq;
using StockSharp.Algo;
using StockSharp.BusinessEntities;
using Ecng.Collections;



namespace TraderConnection
{
    public class SafeConnection
    {
        /// Коннектор к торговой платформе
        public Connector Trader { get; private set; }

        /// Событие появления нового исключения
        public Action<Exception> NewException = delegate { };

        /// Конструктор. Создать безопасное подключение
        /// <param name="trader">Коннектор к торговой платформе</param>
        public SafeConnection(Connector trader)
        {
            Trader = trader;
        }

        /// Вызвать событие появления нового исключения
        /// <param name="exception">Исключение</param>
        protected virtual void OnNewException(Exception exception)
        {
            //Вызвать событие появления нового исключения
            NewException(exception);
        }
        
        public void ConnectSafe()
        {
            //Интервал переподключения
            Trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            //Когда переподключаться
            Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
            //Подписаться на появление ошибки подключения от трейдера
            Trader.ConnectionError += NewException;
            //Подписаться на событие успешного подключения к торговой платформе
            Trader.OrdersRegisterFailed += fails => fails.ForEach(f => OnNewException(f.Error));

            Trader.Connected += () =>
            {
                try
                {
                    //Запустить экспорт данных из торговой платформы
                    Trader.StartExport();
                }
                catch (Exception ex)
                {
                    //Вызвать событие появления нового исключения
                    OnNewException(ex);
                }
            };

            //Подключиться к торговой платформе
            Trader.Connect();
         


        }

        public void DisconnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null && Trader.ConnectionState == ConnectionStates.Connected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }

        public bool IsConnected
        {
            get { return Trader != null && Trader.ConnectionState == ConnectionStates.Connected; }
        }
    }
}



Обратите внимание, что вместо BaseTrader используется Connector, а также добвляется библиотека MoreLinq.dll в References.

Было бы супер, если обновленный код выложила команда Stockshapr, а я не провел весь вечер выискивая, почему код из примера не запускается, как его исправить и общаясь с саппортом
(саппорт молодцы, все достаточно быстро подсказали)
Thanks:

Sid

Avatar
Date: 3/12/2014
Reply


При переходе на новую версию АПИ в проекте SafeConnection
в строке:
Trader.OrdersRegisterFailed += fails => fails.ForEach(f => OnNewException(f.Error));

ошибка:


API 4.2.2.16
Thanks:

Mikhail Sukhov

Avatar
Date: 3/12/2014
Reply


Thanks:

Sid

Avatar
Date: 3/12/2014
Reply




Михаил, не понял в чем посыл? В Контакт я уже тоже "переехал".

1. В Контакте есть обсуждени уроков ?
2. Или в Контакте есть последняя исправленеая версия примера ?
3. Или мне нужно сделать отдельный пост здесь на форуме в разделе обучения ?


Thanks:

Mikhail Sukhov

Avatar
Date: 3/12/2014
Reply


Второе. Примеры обновлены до последней версии.
Thanks:

titan

Avatar
Date: 12/9/2015
Reply


Введенеие Хочется сделать обертку для коннектора по типу урока 2. Часть 1. Создание обертки коннекторов (https://vk.com/stocksharpedu?z=video-66650972_167470507%2Feb956e23a603a4440c), чтобы было все по-взрослому)))
По простому(т.е. без использования класса SafeConnection и графического юзер контрола(wpfconnection)), подключение, c использованием библиотек 4.3.13, работает!
1. Анализ работы кода позволил найти проблему:




2. Поскольку ConnectionState находится в состоянии Connecting, события Connected в классе WpfConnection не происходит:




3. События NewSecurities и NewPortfolios не происходят. Поезда не едут)))квадроцикл не мопед.

Thanks:


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

loading
clippy