Скрипт на C++/CLI

C++/CLI — один из языков платформы .NET Framework — редко используется для разработки больших самостоятельных проектов. Его главное назначение — создание сборок для взаимодействия .NET с родным (неуправляемым) кодом.

В TSLab можно подключать скрипты написанные на C#, VB.NET. Или подключать библиотеки dll написанные на .NET (C#, VB.NET, C++/CLI).

Для примера, напишем библиотеку на C++/CLI и подключим в TSLab.

И так, создадим новый проект в Visual Studio 2019. Выберем тип: CLR Class Library на языке C++.

Сразу переключим проект на x64, добавим библиотеки TSLab.Script.dll, TSLab.Script.Handlers.dll, TSLab.DataSource.dll.

Пример скрипта возьмем из статьи Первый скрипт (API) написанный на C#, но мы его переделаем на C++. Создадим класс BuyScript, и напишем следующий код:

#pragma once
using namespace System;
using namespace TSLab::Script;
using namespace TSLab::Script::Handlers;
using namespace TSLab::DataSource;

namespace MyLibC {
    public ref class BuyScript sealed : IExternalScript
    {
    public:
        virtual void Execute(TSLab::Script::Handlers::IContext^ ctx, TSLab::Script::ISecurity^ sec)
        {
            for (int i = 0; i < ctx->BarsCount; i++)
            {
                IPosition^ longPos = sec->Positions->GetLastActiveForSignal("LE", i);

                if (!longPos)
                {
                    sec->Positions->BuyAtMarket(i + 1, 1, "LE", "");
                }
                else
                {
                    longPos->CloseAtStop(i + 1, longPos->EntryPrice * 0.995, "LXS", "");
                    longPos->CloseAtProfit(i + 1, longPos->EntryPrice * 1.005, "LXP", "");
                }
            }

        }
    };
}

Теперь можно собрать проект и если нет ошибок, то студия создаст библиотеку \x64\Debug\TestLibC.dll ее и подключим в TSLab.

Как видим, скрипт подключился, на графике отобразились сделки.

Last updated