콘텐츠로 이동

최적화를 위한 맞춤형 피트니스 함수

cBot 최적화는 라이브 트레이딩에 배포하기 전에 cBot에 대한 가능한 최상의 매개변수 값을 결정하는 과정입니다. cTrader에서는 수익 극대화 또는 자본 손실 최소화와 같은 다양한 내장 기준에 대해 cBot을 최적화할 수 있습니다. 그러나 맞춤형 성능 기준을 cBot에 적용하려는 경우 자신만의 피트니스 함수를 작성할 수도 있습니다. 이 글과 해당 비디오에서는 맞춤형 피트니스 함수가 어떻게 작동하는지 논의합니다.

이 글은 내장 기준을 사용한 cBot 최적화 과정을 다루지 않습니다.

맞춤형 피트니스 함수 정의

맞춤형 피트니스 함수는 단순히 GetFitness() 메서드를 재정의한 것입니다.

1
2
3
4
protected override double GetFitness(GetFitnessArgs args)
{

}

재정의는 맞춤형 피트니스 함수로 간주되기 위해 GetFitness args 유형의 단일 인수를 받아야 합니다.

맞춤형 피트니스 함수 작성

GetFitness() 메서드는 double을 반환해야 하므로 메서드 본문에는 이 유형의 값을 산출하는 계산이 포함되어야 합니다.

예를 들어, cBot이 수행한 총 수익 거래 횟수를 제곱한 후 이 값을 총 손실 거래 값으로 나누는 간단한 맞춤형 피트니스 함수를 작성할 수 있습니다. 이렇게 하면 수익 거래에 더 많은 가중치를 할당하고, 어떤 의미에서는 최적화된 cBot이 위험한 플레이를 할 수 있도록 합니다.

다음은 우리의 피트니스 함수가 어떻게 보일지에 대한 예입니다.

1
2
3
4
protected override double GetFitness(GetFitnessArgs args)
{
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}

이 시점에서 우리는 원하는 모든 cBot에 재정의를 추가한 후 저장하고 빌드할 수 있습니다.

최적화에서 사용자 정의 적합도 함수 사용하기

함수를 추가한 후, 선택한 cBot의 인스턴스를 추가하고 백테스트 탭으로 전환해야 합니다. 사용자 정의 함수를 사용하여 최적화를 수행하려면 최적화 기준 섹션을 열고 사용자 정의 옵션을 선택하기만 하면 됩니다. 그 후, 평소처럼 최적화를 실행할 수 있습니다.

최적화 중에는 cBot이 승리한 거래 횟수의 제곱과 패배한 거래 횟수 사이의 비율을 최대화한 패스에 더 높은 적합도 점수가 할당됩니다.

사용자 정의 적합도 함수 수정하기

사용자 정의 함수로 돌아가 다음과 같이 수정할 수도 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override double GetFitness(GetFitnessArgs args)
{
    if (args.TotalTrades > 20)
    {
        return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
    }
    else
    {
        return double.MinValue;
    }
}

이 함수는 이전 알고리즘을 따르지만, cBot이 20회 이상의 거래를 한 경우에만 사용자 정의 계산을 적용합니다. 그 외의 경우에는 함수가 가능한 가장 낮은 double 값을 반환합니다. 이론적으로 이는 통계적 편향 가능성을 줄여 결과를 개선할 것입니다.

cBot을 다시 빌드하고 최적화를 다시 실행하면, cBot이 수행한 총 거래 횟수가 적어 여러 패스가 매우 낮은 적합도 점수를 받는 것을 볼 수 있습니다.

마지막으로, 활발한 거래를 장려하면서도 평가금 낙폭을 최소화하고자 합니다.

1
2
3
4
5
6
7
8
if (args.TotalTrades > 20 && args.MaxEquityDrawdownPercentages < 50)
{
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}
else
{
    return double.MinValue;
}

최적화를 다시 실행하면, 우리의 트레이딩 전략에 따라 가능한 최고의 패스를 볼 수 있을 것입니다.

사용자 정의 적합도 함수는 고유한 트레이딩 접근 방식에 가장 적합한 매개변수 값을 결정하는 데 탁월한 도구를 제공합니다.