Первый скрипт (API)
Last updated
Last updated
Создадим первый скрипт, он будет покупать по рынку и выставлять стоп и тейк на расстоянии 0.5%.
Запустим Visual Studio, создадим новый проект MyLib если еще не создан. Как создавать проект смотрите в статье Создание проекта в Visual Studio.
Добавим в проект библиотеки TSLab. Они лежат в папке установки TSLab. Для этого:
Кликнем правой кнопкой мыши по References -> Add Reference…
Перейдем во вкладку Browse, кликнем по кнопке Browse…
В открывшемся диалоге перейдем в папку программы TSLab: - для TSLab 2.1: C:\Program Files (x86)\TSLab 2.0 - для TSLab 2.2: C:\Program Files\TSLab\TSLab 2.2
Выберем следующий файлы: TSLab.Script.dll, TSLab.Script.Handlers.dll, TSLab.DataSource.dll, TSLab.Utility.dll.
Также вы можете загрузить эти файлы в проект используя инструмент NuGet доступный в Visual Studio.
В обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите пункт Управление пакетами NuGet.
Выберите nuget.org в качестве источника пакетов, перейдите на вкладку Обзор, выполните поиск по запросу TSLab, выберите необходимые пакеты в списке и нажмите кнопку Установить.
Добавим новый класс BuyScript, для этого правой кнопкой мыши щелкнуть по названию проекта, выбрать Add -> Class… и написать название класса BuyScript.cs.
В редакторе кода напишем следующий код:
Мы создали класс BuyScript от интерфейса IExternalScript. В этом интерфейсе описан метод Execute, который вызывается каждый раз при запуске скрипта в TSLab.
Метод имеет два параметра, IContext ctx и ISecurity sec.
IContext - содержит общий контекст скрипта, нужен для рисования графиков, кэширования, получения торговой статистики.
ISecurity - позволяет работать с инструментом, содержит свечи, тики, можно открывать/закрывать позиции.
В теле метода мы написали перебор по всем барам через цикл for. Методом sec.Positions.GetLastActiveForSignal получаем последнюю активную позицию и записываем ее в переменную longPos. Далее проверяем эту переменную, если позиции нету (longPos == null), то покупаем по рынку (sec.Positions.BuyAtMarket), если же позиция существует, то выставляем стоп для позиции (longPos.CloseAtStop) и тейк-профит (longPos.CloseAtProfit). Тут важно заметить что позицию мы открываем с названием сигнала "LE" и получаем позицию по этому же названию (sec.Positions.GetLastActiveForSignal("LE", i)). В один момент может быть открыта только одна позиция с одинаковым названием.
sec.Positions - доступ к позициям
sec.Positions.GetLastActiveForSignal("LE", i) - получить последнюю активную позицию с сигналом "LE".
sec.Positions.BuyAtMarket(i + 1, 1, "LE") - открыть позицию по рынку с сигналом "LE"
longPos.CloseAtStop - поставить стоп-лосс.
longPos.CloseAtProfit - поставить тейк-профит.
Нажмем F6, студия проверит ошибки и если их нету, то соберет проект.
Теперь перейдем к TSLab. Создадим новый скрипт, добавим источник, блок Внешний скрипт и подключим наш файл BuyScript.cs
Нажмем Сохранить и выполнить. Если все сделали правильно, то отобразится график со сделками.
Если в скрипте используются дополнительные библиотеки или классы, то их тоже надо добавить в TSLab в блок Внешний скрипт.
В TSLab можно подключать библиотеку dll вместо файла скрипта.