---
id: "P:cAlgo.API.Plugin.Optimization"
kind: "property"
type: "T:cAlgo.API.Plugin"
url: "https://help.ctrader.com/ctrader-algo/references/General/Plugin/Optimization/"
---

> Documentation index for agents: https://help.ctrader.com/ctrader-algo/llms.txt · machine index: https://help.ctrader.com/ctrader-algo/api.json

# Plugin.Optimization

Member of [Plugin](https://help.ctrader.com/ctrader-algo/references/General/Plugin/index.md).

## Optimization

Provides access to cBot parameter optimization.

Environments: Desktop supported · CLI not supported · Cloud not supported.

- CLI: Plugins cannot run in the CLI: ctrader-cli runs cBots only.
- Cloud: Plugins cannot run in the cloud: it runs cBots only.

C#:

```csharp
public Optimization Optimization {get;}
```

Python:

```python
api.Optimization: Optimization
```

### Returns

`Optimization` — 

Available since cAlgo.API 5.9.

### Examples

C#:

```csharp
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}");
        }
    }
}
```

Python:

```python
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")
```

config.json:

```json
{
  "AccessRights": "None"
}
```

