Несколько инструментов
Last updated
Was this helpful?
Last updated
Was this helpful?
Блок 'Внешний скрипт' может принимать несколько инструментов. В этом случае класс скрипта нужно наследовать от интерфейса IExternalScriptMultiSec.
Существует два варианта подключения блоков.
Вариант 1:
Для каждого инструмента добавить блок 'Торгуемый инструмент'. Каждый блок соединить с блоком 'Внешний скрипт'. Таким образом можно подключить до 50 источников к внешнему скрипту.
Вариант 2:
Добавить блок 'Мульти-источник', в нем выбрать необходимые инструменты. Двойным кликом по мультиисточнику открывается форма, инструменты выбираются списком. Мульти-источник соединить с блоком 'Внешний скрипт'. В примере добавлены блоки 'Инструмент по номеру'. Этот блок извлекает инструмент по указанному номеру из мульти-источника и подает его на панель графика. Данный блок можно не добавлять если скрипт (c#) сам выводит графики.
Пример скрипта:
В метод Execute приходит массив инструментов (ISecurity[]). Выведем в лог список названий инструментов.
using System.Text;
using TSLab.Script;
using TSLab.Script.Handlers;
namespace MyLib
{
public class MultiSecurities : IExternalScriptMultiSec
{
public void Execute(IContext ctx, ISecurity[] securities)
{
var sb = new StringBuilder();
for (int i = 0; i < securities.Length; i++)
sb.Append($"{i + 1}.{securities[i].Symbol}; ");
ctx.Log(sb.ToString(), MessageType.Info, true);
}
}
}
Результат: