Получить все инструменты поставщика
Можно получить весь список инструментов, у каждого инструмента получить его характеристики, такие как шаг цены, размер лота и другие. Список баров по инструменту нельзя получить таким способом.
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