이것은 1978년 웰스 와일더가 그의 책 New Concepts in Technical Trading Systems에서 발견된 규칙으로 만든 원래의 트렌드 밸런스 포인트 시스템이다. 트렌드를 추진력과 동일시하고, 견고한 트렌드 추종 시스템을 형성하기 위해 구조화된 방식으로 스톱/타겟을 설정한다.
주요 구성 요소와 규칙은 다음과 같습니다.
동력 지표: 추세를 결정하기 위해 N 기간 동안 가격 변화를 계산합니다.
긴 상태: 현재와 이전 두 기간에 걸쳐 추진력이 증가합니다.
단기 조건: 현재와 이전 두 기간 동안 동력이 감소합니다.
스톱 로스: 전날의 평균 가격 ± 전날의 범위
영업이익: 2 * 전날의 평균 가격 - 전날의 낮은 (장) 또는 높은 (단)
출입 후 정지 또는 목표가 있는 출구
이 전략은 트렌드 식별을 위해 직접 추진력을 사용하고 위험을 제어하고 견고한 트렌드 추적 시스템을 형성하기 위해 구조화된 정지/목표 접근 방식을 사용합니다.
다른 트렌드 다음 전략에 비해 주요 장점은 다음과 같습니다.
간단한 운동량 계산, 쉽게 구현할 수 있습니다.
복수 기간 콤보 소음 필터
구조적인 스톱/타겟은 견고합니다.
거래당 손실 제한
적립은 통제할 수 있고, 수익은 확보할 수 있습니다.
가볍고 유연하게 작동합니다.
다른 시장에 대한 조정 가능한 매개 변수
직관적이고 간단한 논리입니다.
전체적으로 안정성과 위험 통제가 잘 됩니다.
그러나 위험은 다음과 같습니다.
추진력 지연은 중요한 회전을 놓칠 수 있습니다.
성능은 매개 변수 조정에 의존합니다.
부피 필터가 없어 갇힐 위험이 있어요
정지/목적 설정이 딱딱해서 실전에서는 실패할 수 있습니다.
제한된 백테스트 기간, 장기적인 견고성을 확인해야 합니다.
고정된 크기는 동적 조정이 부족합니다.
제한된 최적화 공간, 불확실한 알파
보상/위험 비율과 곡선 적응을 모니터링해야 합니다.
분석에 따라 개선은 다음을 포함 할 수 있습니다.
다른 운동량 계산을 테스트합니다.
부피 확인을 추가합니다.
정지/목적 매개 변수를 최적화합니다.
동적 신호를 위한 기계 학습을 도입합니다.
제품과 기간에 걸쳐 견고성을 평가합니다.
역동적인 위치 크기를 측정하는 모델을 구축합니다.
최대 용납 가능한 사용 한도를 설정합니다.
위험 관리 전략을 최적화합니다.
계속된 백테스팅을 통해 과부착을 방지합니다.
요약하자면, 이것은 비교적 간단하고 직접적인 트렌드 다음 시스템이다. 그러나 지속적인 최적화와 견고성 테스트는 어떤 전략도 적응력을 유지하기 위한 열쇠이다. 체계적인 노력을 통해 전략 성과와 안정성을 향상시킬 수 있다.
/*backtest start: 2023-09-15 00:00:00 end: 2023-09-22 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © 2020 X-Trader.net //@version=3 strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000) MomPer = input(2, "Momentum Period") isLong = strategy.position_size > 0 isShort = strategy.position_size < 0 longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3] shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3] longEntry = (not isLong) and longTrigger shortEntry = (not isShort) and shortTrigger longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0) longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0) shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0) shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0) strategy.entry(id = "Long", long = true, when = longEntry) strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) strategy.entry(id = "Short", long = false, when = shortEntry) strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort)