Plugin.Optimization
property · Plugin · cAlgo.API Since 5.9
DesktopCLICloud
Provides access to cBot parameter optimization.
Environment behaviour
CLI — not supported. Plugins cannot run in the CLI: ctrader-cli runs cBots only.
Cloud — not supported. Plugins cannot run in the cloud: it runs cBots only.
Definition
public Optimization Optimization {get;}
api.Optimization: Optimization
Returns Optimization
Examples
using cAlgo.API;
using cAlgo.API.Internals;
namespace cAlgo.Plugins
{
public partial class Test : Plugin
{
protected override void OnStart()
{
if (AlgoRegistry.Get("Sample Trend cBot", AlgoKind.Robot) is not RobotType robotType)
return;
var settings = new OptimizationSettings(
new DateTime(2025, 1, 1), new DateTime(2025, 2, 1), 100000,
new[] { new OptimizationCriterion(OptimizationCriterionType.NetProfit, OptimizationCriterionDirection.Maximize) })
{
DataMode = BacktestingDataMode.M1,
Method = OptimizationMethod.Grid
};
var process = Optimization.Start(
robotType, "EURUSD", TimeFrame.Hour, settings,
new OptimizationIntegerParameter("SlowPeriods", min: 5, max: 50, step: 5));
process.Completed += args => Print($"Optimization completed. Best pass: {args.BestPass?.Id}");
}
}
}
import clr
clr.AddReference("cAlgo.API")
from cAlgo.API import *
from System import DateTime
class Test():
def on_start(self):
algoType = api.AlgoRegistry.Get("Sample Trend cBot", AlgoKind.Robot)
if algoType is None:
return
robotType = RobotType(algoType)
criteria = [OptimizationCriterion(OptimizationCriterionType.NetProfit, OptimizationCriterionDirection.Maximize)]
settings = OptimizationSettings(DateTime(2025, 1, 1), DateTime(2025, 2, 1), 100000, criteria)
settings.DataMode = BacktestingDataMode.M1
settings.Method = OptimizationMethod.Grid
process = api.Optimization.Start(
robotType, "EURUSD", TimeFrame.Hour, settings,
OptimizationIntegerParameter("SlowPeriods", 5, 50, 5))
process.Completed += lambda args: print(f"Optimization completed")
{
"AccessRights": "None"
}