이것은 1978년에 윌더 (Welles Wilder) 가 만든 원시적인 트렌드 균형 포인트 시스템이며, 거래 규칙은 그의 책 ?? 신개념 기술 분석 시스템 ?? 에서 찾을 수 있다. 이 시스템은 동력 지표를 사용하여 트렌드를 식별하고, 특정 방식으로 스톱 로드 스톱을 설정하여, 보다 견고한 트렌드 추적 시스템을 형성한다.
이 전략의 주요 구성 요소와 거래 규칙은 다음과 같습니다.
동력 지표: N주기 종전 가격 변화를 계산하여 가격 동향을 판단한다.
다중 조건: 현재 사이클과 지난 두 사이클의 동력 값이 연속적으로 상승한다.
공백 조건: 현재 사이클과 지난 두 사이클의 동력 값이 연속으로 떨어진다.
정지점: 전날의 평균 가격± 전날의 변동 범위.
정지점: 전날의 평균값의 2배 - 최저 가격 ((多做) 또는 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)