---
id: "T:cAlgo.API.OptimizationSettings"
kind: "record"
namespace: "cAlgo.API"
url: "https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/"
---

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

# OptimizationSettings (record)

Represents settings for configuring an optimization process.

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

- CLI: Available to plugins only, and plugins cannot run in the CLI.
- Cloud: Available to plugins only, and plugins cannot run in the cloud.

## Definition

```csharp
public class OptimizationSettings
```

Available since cAlgo.API 5.9.

## Examples

C#:

```csharp
var criteria = new[] { new OptimizationCriterion(OptimizationCriterionType.NetProfit, OptimizationCriterionDirection.Maximize) };
var settings = new OptimizationSettings(new DateTime(2025, 1, 1), new DateTime(2025, 3, 1), 10000, criteria)
{
    DataMode = BacktestingDataMode.M1,
    Method = OptimizationMethod.Genetic,
    SpreadPips = 1,
    Cores = 4,
    AutoSelectBest = true
};
Print("Optimizing {0} to {1} with {2} cores", settings.StartTimeUtc, settings.EndTimeUtc, settings.Cores);
```

Python:

```python
from System import DateTime
criteria = [OptimizationCriterion(OptimizationCriterionType.NetProfit, OptimizationCriterionDirection.Maximize)]
settings = OptimizationSettings(DateTime(2025, 1, 1), DateTime(2025, 3, 1), 10000, criteria)
settings.DataMode = BacktestingDataMode.M1
settings.Method = OptimizationMethod.Genetic
settings.SpreadPips = 1
settings.Cores = 4
settings.AutoSelectBest = True
api.Print(f"Optimizing {settings.StartTimeUtc} to {settings.EndTimeUtc} with {settings.Cores} cores")
```

## Constructors

- `public OptimizationSettings(DateTime startTimeUtc, DateTime endTimeUtc, double balance, IEnumerable<OptimizationCriterion> criteria)` — Initializes a new instance of the OptimizationSettings record. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Constructor/index.md)
- `public OptimizationSettings(OptimizationSettings original)` —  [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Constructor/index.md)

## Properties

- `public bool ApplyCommissionAutomatically {get; set;}` — Gets a value that indicates whether the commission type and value of the optimized symbol are applied automatically. When it is set to true the Commission and CommissionType properties are ignored. The default value is false. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/ApplyCommissionAutomatically/index.md)
- `public bool AutoSelectBest {get; set;}` — Gets a value indicating whether the best pass is auto-selected on completion. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/AutoSelectBest/index.md)
- `public double Balance {get;}` — Gets the initial balance for each pass. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Balance/index.md)
- `public double Commission {get; set;}` — Gets the commission value, it is interpreted based on the CommissionType property value. It is ignored when ApplyCommissionAutomatically is set to true. The default value is 0. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Commission/index.md)
- `public SymbolCommissionType CommissionType {get; set;}` — Gets the commission type that defines how the Commission property value is interpreted. It is ignored when ApplyCommissionAutomatically is set to true. The default value is SymbolCommissionType.UsdPerMillionUsdVolume. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/CommissionType/index.md)
- `public int Cores {get; set;}` — Gets the number of CPU cores used to run passes in parallel. Must be greater than or equal to 1. Zero will use the platform default which is ProcessorCount / 2 + 1. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Cores/index.md)
- `public IReadOnlyList<OptimizationCriterion> Criteria {get;}` — Gets the standard optimization criteria. Ignored when OptimizationSettings.UseCustomFitness is true. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Criteria/index.md)
- `public string DataFile {get; set;}` — Gets the path to the data file used for the optimization. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/DataFile/index.md)
- `public BacktestingDataMode DataMode {get; set;}` — Gets the data mode used for the optimization. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/DataMode/index.md)
- `public DateTime EndTimeUtc {get;}` — Gets the end time in UTC for the optimization period. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/EndTimeUtc/index.md)
- `public OptimizationMethod Method {get; set;}` — Gets the optimization method. Defaults to OptimizationMethod.Genetic. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/Method/index.md)
- `public bool PreciseConversion {get; set;}` — Gets a value indicating whether historical data for additional symbols is downloaded to convert profit and margin into the account deposit currency precisely. When true, real historical exchange rates of the additional symbols are used; when false, the default, approximated rates are used. Enabling it can increase the run time and the amount of downloaded data. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/PreciseConversion/index.md)
- `public double SpreadPips {get; set;}` — Gets the spread in pips. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/SpreadPips/index.md)
- `public DateTime StartTimeUtc {get;}` — Gets the start time in UTC for the optimization period. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/StartTimeUtc/index.md)
- `public bool UseCustomFitness {get; set;}` — Gets a value indicating whether to use the cBot's custom GetFitness instead of OptimizationSettings.Criteria. [details](https://help.ctrader.com/ctrader-algo/references/Plugin/Optimization/OptimizationSettings/UseCustomFitness/index.md)

## Deprecated members

- `public double CommissionUsdPerMillionUsd {get; set;}` — Use Commission with CommissionType instead

