콘텐츠로 이동

cTrader에서 cBot 최적화

이 문서는 cTrader Windows 및 Mac에서 트레이딩 봇을 최적화하는 방법을 설명합니다.

cBot에 대한 최적의 초기 매개 변수 집합을 지정하는 것은 어려울 수 있습니다. 다행히 cTrader는 내장된 cBot 최적화 기능을 제공합니다. 최적화는 코드를 가져와 다양한 매개 변수 값을 기반으로 여러 번 실행합니다. 그런 다음 사용자 정의 가능한 결과 집합을 제공하여 최적의 매개 변수 구성을 정의할 수 있습니다.

이 기능을 사용하려면 cBot 인스턴스를 선택하고 최적화 탭으로 전환하세요.

Image title

그 후 드롭다운 캘린더를 사용하거나 슬라이더를 드래그하여 최적화를 위한 백테스트 기간을 정의하세요.

Image title

최적화 설정

최적화는 기본적으로 일련의 백테스트이므로 백테스트 탭에서와 유사하게 백테스트 설정을 지정할 수 있습니다.

최적화 매개 변수

캘린더 슬라이더 왼쪽의 매개 변수 버튼을 클릭하세요. 다음 창이 나타납니다.

Image title

여기서 최적화하려는 cBot 매개 변수 옆의 플래그를 확인하세요. 시간 프레임 매개 변수는 모든 cBot에 사용 가능합니다.

최적화 기준

최적화 매개 변수 버튼 오른쪽에 있는 기준 버튼을 누르세요. cTrader는 다음 탭을 엽니다.

Image title

최적화 기준은 백테스트 후 최적화 알고리즘이 결과를 순위를 매기는 방식을 정의합니다. 다음 옵션 중에서 선택할 수 있습니다:

  • 표준 - 최소화하거나 최대화할 수 있는 일련의 미리 정의된 기준입니다. 이를 위해 오른쪽의 드롭다운 메뉴에서 기준을 선택하고 왼쪽의 관련 메뉴에서 최적화 방향을 선택하세요. 새 기준을 추가하려면 기준 추가를 클릭하세요.
  • 사용자 정의 - 아래 예제와 같이 cBot 코드 내에서 GetFitness() 메서드를 사용하여 정의된 사용자 정의 기준입니다.
1
2
3
4
5
protected override double GetFitness(GetFitnessArgs args)
{
    // Maximise the winning trades/losing trades ratio.
    return args.WinningTrades / args.LosingTrades;
}
1
2
3
4
5
6
protected override double GetFitness(GetFitnessArgs args)
{
    /* Maximise the winning trades/losing trades ratio
    while giving winning trades more weight. */
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}

다중 기준 계산

여러 기준이 매개 변수 효과를 계산하는 데 사용되는 경우, cTrader는 모든 기준을 동등하게 사용하여 최적화 패스의 적합도 값을 계산합니다.

구체적으로, 플랫폼은 모든 최대화 기준의 값을 곱하고, 모든 최소화 기준의 값을 별도로 곱합니다. 그런 다음, 최대화 기준에 대한 절대 곱셈 값을 최소화 기준에 대한 동일한 값으로 나눕니다.

다음 의사 코드는 다중 기준 적합도 값이 어떻게 계산되는지 정확히 보여줍니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
numerator = 1.0
if (valuesToMaximize.Length > 0)
    numerator = Abs(Multiply(criteriaValuesToMaximize))

denominator = 1.0
if (valuesToMinimize.Length > 0)
    denominator += Abs(Multiply(criteriaValuesToMinimize))

/* The 'sign' variable can be either +` or -1 depending on whether
there are criteria for which their values are less than 0. */
sign = criteriaValuesToMinimize.Concat(criteriaValuesToMaximize).Any(v => v < 0) ? -1 : 1

fitness =  sign * numerator / denominator

방법

방법 버튼(선택한 옵션에 따라 GA 또는 #로 표시됨)을 클릭합니다. 아래 메뉴에서 플랫폼이 사용할 최적화 방법을 선택합니다.

Image title

다음 옵션을 사용할 수 있습니다:

  • 유전 알고리즘 - 이 알고리즘은 생물학적 진화 과정을 모방합니다. 자세한 설명은 별도의 섹션을 참조하십시오.
  • 그리드 (#) - 이 알고리즘은 가능한 모든 매개 변수 세트를 순차적으로 백테스트합니다.

참고

우리의 추정에 따르면, 유전 알고리즘은 최적의 매개 변수 값을 찾는 데 상당히 빠릅니다.

리소스

리소스 버튼을 클릭하여 백테스트에 할당할 CPU 부하의 비율을 선택합니다. 슬라이더를 이동하여 CPU 사용률을 설정합니다.

리소스를 많이 할당할수록 최적화 과정이 더 빨리 완료됩니다. 그러나 다른 애플리케이션을 사용할 때 성능 저하가 발생할 수 있습니다.

Image title

CPU 리소스는 최적화 중에도 조정할 수 있습니다.

최적화 절차 시작 및 관리

최적화를 진행하려면 캘린더 슬라이더 오른쪽에 있는 재생 버튼을 클릭합니다. 기계 리소스, 최적화 설정 및 cBot 복잡성에 따라 최적화에 시간이 걸릴 수 있습니다.

캘린더 슬라이더 바로 아래의 UI 바는 완료된 백테스트 패스 수, 경과 시간 및 남은 시간 추정치에 대한 정보를 제공합니다.

Image title

한편, 최적화 탭의 중앙 화면은 알고리즘이 완료한 모든 백테스트 패스에 대한 정보를 포함한 실시간 그리드를 제공합니다.

Image title

특정 패스 동안 테스트된 매개 변수 세트를 적용하려면 적용 버튼을 클릭합니다. 이 버튼은 현재 실행 중인 최적화 절차가 없는 경우에만 활성화됩니다.

또는, 왼쪽 상단 모서리에 있는 최적 패스 자동 선택 플래그를 확인하여 cTrader가 지정한 최적화 기준에 따라 최상의 결과를 달성한 패스(및 매개 변수)를 자동으로 선택하도록 합니다.

최적화 결과

최적화가 완료된 후, 중앙 테이블은 모든 백테스트 패스와 그 결과의 최종 목록을 표시합니다.

이 테이블에는 다음과 같은 열이 있습니다. 그리드는 완전히 구성 가능하므로, 이러한 열은 테이블을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 선택 해제하여 드래그 앤 드롭하거나 완전히 비활성화할 수 있습니다.

필드 정의
패스 패스 번호.
적합도 패스가 최적화 기준에 얼마나 잘 맞는지를 보여주는 값.
평가금 패스 종료 시 총 평가금.
잔고 패스 종료 시 총 잔고.
순이익 최종 잔고와 개시 잔고의 차이.
거래 청산한 포지션의 총 수.
수익 거래 패스 동안 달성한 수익 거래의 총 수.
손실 거래 패스 동안 달성한 손실 거래의 총 수.
손익비 총 이익/총 손실 비율.
*평가금 최대 낙폭 (%) 평가금 낙폭의 최대 비율.
잔고 최대 낙폭 (%) 잔고 낙폭의 최대 비율.
평가금 최대 낙폭 계정 입금 통화로 지정된 최대 평가금 낙폭.
잔고 최대 낙폭 계정 입금 통화로 지정된 최대 잔고 낙폭.
평균 거래 패스 동안 이루어진 모든 거래의 평균 이익.
패스 매개 변수 이 열의 적용 버튼을 클릭하여 이 패스의 매개 변수를 cBot에 적용합니다.

중앙 그리드 아래의 디스플레이에서 패스를 선택하여 해당 패스에 대한 자세한 통계를 확인합니다.

이 디스플레이의 처음 7개 탭은 백테스트 창의 동일한 탭과 동일한 정보를 제공합니다. 패스 매개 변수 탭은 최적화에만 고유합니다.

패스 매개 변수

패스 매개 변수 탭은 다음 정보를 제공합니다.

Image title

cTrader는 최적화된 모든 매개 변수를 녹색으로 강조 표시하며, 고정된 매개 변수(매개 변수 메뉴에서 활성화되지 않은 매개 변수)는 강조 표시되지 않습니다.

최적화 결과 저장 및 로드

cTrader는 또한 최적화 결과를 로컬에 저장된 .optres 파일로 저장하고 로드할 수 있습니다.

참고

.optres 파일은 다양한 최적화 설정 및 메트릭을 나타내는 키-값 쌍의 단순한 컬렉션입니다.

.optres 파일을 사용하여 여러 로컬 머신에서 cBot을 계속 개선할 수 있으며, 진행 상황을 잃지 않습니다. 또한 이 파일의 데이터를 생성형 AI 도구에 공급하여 cBot이 완료한 패스에서 어떤 패턴을 감지할 수 있는지 시도할 수 있습니다.

최적화 결과를 저장하려면 프로세스가 완료될 때까지 기다린 후 저장 아이콘을 클릭합니다. 파일 탐색기 대화 상자에서 파일 이름을 입력하고 파일을 저장합니다.

최적화 결과를 로드하려면 로드 아이콘을 클릭하고 파일 탐색기 창에서 필요한 파일을 선택합니다.

Image title