Получить все инструменты поставщика

Можно получить весь список инструментов, у каждого инструмента получить его характеристики, такие как шаг цены, размер лота и другие. Список баров по инструменту нельзя получить таким способом.

using System.Linq;
using System.Text;
using TSLab.DataSource;
using TSLab.Script;
using TSLab.Script.Handlers;

namespace MyLib
{
    public class GetAllSymbols : IExternalScript
    {
        public void Execute(IContext ctx, ISecurity sec)
        {
            // В блок 'Внешний скрипт' необходимо добавить TSLab.DataSourceHelper.dll

            var secInfo = sec?.SecurityDescription?.TradePlace?.DataSource as ISecuritiesInfo;
            if (secInfo != null)
            {
                var sb = new StringBuilder();
                sb.AppendLine("=== Symbols ===");

                // получить фьючерсы и акции
                var securities = secInfo.GetSecurities(null, ActiveType.Futures | ActiveType.Share, null).ToList();
                // получить все инструменты
                //var securities = helper.GetSecurities(null, ActiveType.Undefined, null).ToList();

                // выводим сбербанк
                var sber = securities.FirstOrDefault(x => x.Name == "SBER");
                if (sber != null)
                    sb.AppendLine(Print(sber));

                // выводим фьючерс Ri
                var ri = securities.FirstOrDefault(x => x.Name == "RIM2");
                if (ri != null)
                    sb.AppendLine(Print(ri));

                // выводим первые 10 инструметов
                foreach (var s in securities.Take(10))
                    sb.AppendLine(Print(s));

                ctx.Log(sb.ToString(), MessageType.Info, true);

                string Print(IDataSourceSecurity s)
                {
                    var ss = s as SecurityHelper;
                    return $"{s.Name}: шаг цены={s.Tick}, размер лота:{s.LotSize}, ст-ть шага цены:{ss?.FinInfo?.StepPrice}";
                }
            }
        }
    }
}

Для текстового поставщика:

using System.Linq;
using System.Text;
using TSLab.DataSource;
using TSLab.Script;
using TSLab.Script.Handlers;

namespace MyLib
{
    public class GetAllSymbols2 : IExternalScript
    {
        // для текстового поставщика
        public void Execute(IContext ctx, ISecurity sec)
        {
            // В блок 'Внешний скрипт' необходимо добавить TSLab.DataSourceHelper.dll

            var secInfo = sec?.SecurityDescription?.TradePlace?.DataSource as ISecuritiesInfo;
            if (secInfo != null)
            {
                var sb = new StringBuilder();
                sb.AppendLine("=== Symbols ===");

                var places = secInfo.GetTradePlaces(false).ToList();
                // получить все инструменты из 1й торговой площадки
                var securities = secInfo.GetSecurities("", ActiveType.Unknown, places[0].Id).ToList();

                // выводим первые 10 инструметов
                foreach (var s in securities.Take(10))
                    sb.AppendLine(Print(s));

                ctx.Log(sb.ToString(), MessageType.Info, true);

                string Print(IDataSourceSecurity s)
                {
                    var ss = s as SecurityHelper;
                    return $"{s.Name}: шаг цены={s.Tick}, размер лота:{s.LotSize}";
                }
            }
        }
    }
}

Last updated