Помогите пожалуйста правильно запрограммировать получение данных Сумспрос и сумпредл. А еще лучше сделайте их стандартными и/или может код для открытого интереса покажите правильный (на основе его можно будет разобраться)
Я подключен к айтиинвест и к демо счету алор. У обоих брокеров трансляция этих данных в tslab идет, что видно в окне котировок. А вот доступ к ним получить не получается. Стандартных блоков нет, существующие ссылки на способ реализации некорректен:
http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=2422#Post2422
Click to reveal..
Code:
using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Realtime;

namespace SomeIndicators
{

    public class CurrentBid : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo.Bid.HasValue ? rt.FinInfo.Bid.Value : 0.0;
            var res = new double[source.Bars.Count];
            for(int i = 0; i < res.Length;i++)
            {
                res[i] = v;
            }
            return res;
        }
    }

    public class CurrentAsk : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo.Ask.HasValue ? rt.FinInfo.Ask.Value : 0.0;
            var res = new double[source.Bars.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = v;
            }
            return res;
        }
    }

    public class CurrentBuyCount : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo.BuyCount.HasValue ? rt.FinInfo.BuyCount.Value : 0.0;
            var res = new double[source.Bars.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = v;
            }
            return res;
        }
    }

    public class CurrentSellCount : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo.SellCount.HasValue ? rt.FinInfo.SellCount.Value : 0.0;
            var res = new double[source.Bars.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = v;
            }
            return res;
        }
    }
}

Не отображается ни бид ни аск. Количество заявок переделал в объем заявок, но все равно не помогло:
    public class CurrentBuyVolume : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo. BuySqty.HasValue ? rt.FinInfo. BuySqty.Value : 0.0;
            var res = new double[source.Bars.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = v;
            }
            return res;
        }
    }

    public class CurrentSellVolume : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            var rt = source as ISecurityRt;
            var v = rt == null ? 0.0 : rt.FinInfo. SellSqty.HasValue ? rt.FinInfo. SellSqty.Value : 0.0;
            var res = new double[source.Bars.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = v;
            }
            return res;
        }
    }



Отредактировано ViL (Wed Dec 07 2011 03:54 PM)