이 정책의 목적은 사용자에 게 맞춤형 응답의 시작 시간을 허용하여 보다 유연하고 맞춤형 응답을 가능하게 하는 것이다.
이 전략은 pine 스크립트의 time 및 timestamp 함수를 사용하여 사용자 정의 된 피드백 시작 시간을 구현합니다.
먼저, 사용자 설정에서 사용자 지정된 재검토 시작 해, 달, 날짜, 시간 및 분을 입력합니다. 그런 다음, 이러한 입력으로 시간대를 생성하고, startTime 변수에 저장합니다.
정책의 조건 판단에 startTime 조건을 새로 추가한다. 현재 시간이 startTime보다 크거나 같을 때만 정책이 시작된다.
예를 들어:
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
strategy.entry("My Long Entry Id", strategy.long)
이렇게 하면 사용자 정의된 재측정 시작 시간을 구현할 수 있다. 사용자는 하드 코딩 시간에만 국한되지 않고 필요에 따라 재측정 시작 시간을 유연하게 구성할 수 있다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
더 유연한: 사용자는 다시 측정하는 시작 시간을 완전히 사용자 정의 할 수 있습니다.
더 현실적인: 회귀의 시작 시간을 전략의 실제 실행 시간으로 설정할 수 있으며, 따라서 회귀를 실제 시장 상황에 더 가깝게 할 수 있다.
편리한 이벤트 드라이브 회신: 특정 이벤트를 대상으로 회신하기 위해 특정 이벤트가 발생하는 시간에 따라 시동 시간을 설정할 수 있습니다.
조건 조정의 편리함: 측정의 시작 조건을 매우 편리하게 조정할 수 있어, 다른 단계에 대해 표적된 측정이 가능하다.
반복가능한 신뢰성: 응답의 시작 시간을 파라미탈화하여 반복적으로 실행하여 신뢰할 수 있는 응답 결과를 얻을 수 있다.
사용자 정의 리메이크 시동 시간을 사용하는 것은 몇 가지 위험도 있습니다:
재검토 결과는 시작 시간에 의존한다: 다른 시작 시간은 재검토 결과에 큰 차이를 초래할 수 있다.
부적절한 시동시간은 실제 상황을 반영할 수 없는 부정확한 회귀를 초래할 수 있다.
커브 매칭 위험을 증가: 시작 시간을 조정하여 역사 데이터를 매칭하는 것이 쉽다. 따라서 과매칭 위험이 발생한다.
테스트 결과의 비교가능성을 저하시킨다. 이 전략의 테스트 결과와 고정된 시작 시간에서의 테스트 결과의 비교가능성이 낮다.
대응방법:
여러번 재검토하여, 시작시간의 변화에 따른 결과를 평가한다.
중요한 사건 발생 시점을 시작 시점으로 선택하여 재측정 오류를 줄이십시오.
시작 시기를 신중하게 조정하여, 과도하게 역사 데이터에 맞지 않도록하십시오.
고정 시동 시간의 회신을 기준으로 저장하고, 사용자 정의 회기와 비교한다.
이 사용자 정의 리메이크 시동 시간 전략은 다음과 같은 측면에서 최적화 될 수 있습니다:
시작 및 종료 시간을 사용자 정의하고, 전체 재검토 시간 창의 유연한 구성을 지원한다.
다양한 시간 모드를 지원합니다: 특정 날짜, 상대 날짜, 이벤트 드라이브 등으로 회귀 시간을 더 똑똑하게 구성할 수 있습니다.
그래픽 구성 인터페이스를 지원하여 시간 매개 변수 설정을 더 직관적으로 만듭니다.
다른 시간 단위 구성을 지원합니다: 년, 달, 일, 시간, 분, 초 등.
재검토 시간 구성을 기록하여 재검토 결과를 재생, 추적 및 비교할 수 있도록 합니다.
부적절한 시간配置의 검사를 추가하고, 부적절한 시간配置이 재측량 품질에 영향을 미치지 않도록 한다.
시동시간을 묶는 기능을 제공하여, 하나의 키로 시동시간을 여러 정책에 복제한다.
이 정책은 사용자 정의 및 유연한 리메이크 시작 시간 구성을 구현하여 리메이크의 제한을 줄일 수 있으며 실상 상황에 더 가깝게 만들 수 있습니다. 그러나 리메이크 결과에 대한 리메이크 시간 의존성에 주의를 기울이고, 여러 번의 리메이크, 이벤트 드라이브 등의 조치를 취하여 리메이크 부정확성을 줄여야합니다. 이 정책에는 많은 최적화 방향이 있으며, 향후 더 똑똑하고 편리한 리메이크 시간 구성을 구현할 수 있습니다.
/*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!