S#

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


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


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


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

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

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

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


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


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


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


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

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


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

Теги:


Спасибо:




10 Ответов
Николай

Фотография
Курсы
Дата: 27.11.2013
Ответить


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

IvanB

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


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

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

Автор топика
Спасибо:

FireSpirit

Фотография
Курсы
Дата: 15.01.2014
Ответить


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

IvanB

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


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


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

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

devruss

Фотография
Курсы
Дата: 24.01.2014
Ответить


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

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, а я не провел весь вечер выискивая, почему код из примера не запускается, как его исправить и общаясь с саппортом
(саппорт молодцы, все достаточно быстро подсказали)
Спасибо:

Sid

Фотография
Курсы
Дата: 12.03.2014
Ответить


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

ошибка:


API 4.2.2.16
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.03.2014
Ответить


Спасибо:

Sid

Фотография
Курсы
Дата: 12.03.2014
Ответить




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

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


Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.03.2014
Ответить


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

titan

Фотография
Курсы
Дата: 09.12.2015
Ответить


Введенеие Хочется сделать обертку для коннектора по типу урока 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 не происходят. Поезда не едут)))квадроцикл не мопед.

Спасибо:


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

loading
clippy