사용자 정의 가능한 백테스트 시작 시간 전략

저자:차오장, 날짜: 2023-09-26 20:53:15
태그:

전반적인 설명

이 전략의 목적은 사용자가 보다 유연하고 사용자 정의 가능한 백테스팅을 위해 백테스팅의 시작 시간을 사용자 정의 할 수 있도록하는 것입니다.

전략 논리

이 전략은 Pine Script의 시간 및 시간표 기능을 사용하여 사용자 정의 가능한 백테스트 시작 시간을 구현합니다.

먼저 사용자가 설정에 사용자 정의 백테스트 시작 년, 달, 날짜, 시간 및 분을 입력할 수 있습니다. 다음으로 이러한 입력값을 사용하여 시간표를 생성하고 startTime 변수에 저장합니다.

전략의 상태 검사에서 새로운 startTime 조건을 추가합니다. 전략은 현재 시간이 startTime보다 크거나 같을 때만 시작됩니다.

예를 들어:

longCondition = crossover(sma(close, 14), sma(close, 28))

if (longCondition and startTime)

  strategy.entry("My Long Entry Id", strategy.long) 

이것은 사용자 지정 가능한 백테스트 시작 시간을 구현할 수 있습니다. 사용자는 하드 코딩 시간으로 제한되는 대신 백테스트 시작 시간을 유연하게 구성할 수 있습니다.

이점 분석

이 사용자 정의 가능한 백테스트 시작 시간 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 더 유연함: 사용자는 고정된 시점으로 제한되는 대신 백테스트 시작 시간을 완전히 사용자 정의 할 수 있습니다.

  2. 더 현실적: 시작 시간을 전략의 실제 실행 시간으로 설정할 수 있으며, 백테스트를 더 현실적으로 만듭니다.

  3. 이벤트 기반 백테스팅에 편리합니다. 특정 이벤트를 백테스팅하기 위해 이벤트 발생 시간에 따라 시작 시간을 설정할 수 있습니다.

  4. 조건 조정 용이함: 백테스트 시작 조건은 다양한 단계의 표적 백테스트를 위해 쉽게 조정할 수 있습니다.

  5. 반복 가능성과 신뢰성: 백테스트 시작 시간을 파라미터화하면 반복 가능하고 신뢰할 수 있는 백테스트 결과를 얻을 수 있습니다.

위험 분석

사용자 정의 가능한 백테스트 시작 시간을 사용하는 것도 몇 가지 위험이 있습니다.

  1. 결과는 시작 시간에 달려 있습니다: 다른 시작 시간은 매우 다른 백테스트 결과를 초래할 수 있습니다.

  2. 시작 시간은 신중한 선택이 필요합니다: 불합리한 시작 시간은 백테스트 결과에 왜곡을 일으킬 수 있습니다.

  3. 커브 부착 위험 증가: 역사 데이터에 시작 시간을 조정하여 쉽게 부착.

  4. 비교 가능성 감소: 이 전략의 결과는 고정 시작 시간 백테스트와 비교할 수 없습니다.

해결책:

  1. 시작 시간 변경의 결과에 대한 영향을 평가하기 위해 여러 번 백테스트.

  2. 유의미한 이벤트 시간을 시작 시간으로 선택하여 왜곡을 최소화합니다.

  3. 역사적인 데이터의 과잉을 피하기 위해 시작 시간을 조심스럽게 조정하십시오.

  4. 고정된 시작 시간 백테스트를 사용자 정의 백테스트와 비교하기 위한 기준으로 유지합니다.

최적화 방향

이 사용자 정의 가능한 백테스트 시작 시간 전략은 다음 측면에서도 개선 될 수 있습니다.

  1. 백테스트 시간 창의 완전한 유연성 구성을 위해 시작 및 종료 시간 두 가지의 사용자 정의를 지원합니다.

  2. 여러 시간 모드를 지원합니다. 특정 날짜, 상대 날짜, 이벤트 구동, 등 더 똑똑하고 편리한 시간 구성을 위해.

  3. 보다 직관적인 시간 매개 변수 설정을 위한 그래픽 구성 인터페이스를 지원합니다.

  4. 다양한 시간 분자 구성 지원: 년, 달, 날, 시간, 분, 초, 등

  5. 재현 가능하고 추적 가능하고 비교 가능한 결과를 위해 백테스트 시간 구성을 기록합니다.

  6. 부적절한 시간 설정으로 인해 낮은 품질의 백테스트를 피하기 위해 부적절한 시간 구성의 검증을 추가합니다.

  7. 시작 시간 결합을 제공하여 여러 전략에서 시작 시간을 쉽게 동기화합니다.

요약

이 전략은 제한을 줄이고 백테스트를 더 현실적으로 만들기 위해 백테스트 시작 시간을 사용자 정의 가능하고 유연하게 구성할 수 있습니다. 그러나 복수의 백테스트, 이벤트 기반 모델 등을 사용하여 왜곡을 줄이기 위해 시작 시간에 대한 결과의 의존성은 주의해야 합니다. 이 전략은 또한 미래에 더 똑똑하고 편리한 백테스트 시간 구성을 달성하기 위해 많은 개선 방향을 가지고 있습니다.


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!


더 많은