Для расчета данных скрипта можно задействовать стандартный алгоритм, используя класс Perfomance.
Ниже приведен пример скрипта который, считает основные метрики и выводит их в лог. Для сокращения кода сам торговый алгоритм не приводится, вместо него поставьте любой свой или из примеров.
В блок Внешний скрипт надо добавить TSLab.ScriptEngine.dll.
using System.Text;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;
using TSLab.Script.Optimization;
using TSLab.ScriptEngine;
namespace MyLib
{
public class TestPerfomance : IExternalScript
{
public virtual void Execute(IContext ctx, ISecurity sec)
{
// Торговый алгоритм
// ....
// Расчет статистики выполняется в конце скрипта, после торгового алгоритма.
// Не забыть добавить TSLab.ScriptEngine.dll в блок Внешний скрипт
var list = new [] { (ISecurity2)sec };
var perfomance = new Perfomance(list, ((IRuntime2)ctx.Runtime).InitDeposit);
perfomance.UpdateDataFromRuntime();
// Вывод в лог
var sb = new StringBuilder();
sb.AppendLine($"AllTrades: {perfomance.AllTrades}");
sb.AppendLine($"WinTrades: {perfomance.WinTrades}");
sb.AppendLine($"LossTrades: {perfomance.LossTrades}");
sb.AppendLine($"MaxDrawdown: {perfomance.MaxDrawdown}");
sb.AppendLine($"MaxDrawdownPct: {perfomance.MaxDrawdownPct}");
sb.AppendLine($"ProfitFactor: {perfomance.ProfitFactor}");
sb.AppendLine($"RecoveryFactor: {perfomance.RecoveryFactor}");
ctx.Log(sb.ToString(), MessageType.Info, true);
}
}