이 전략은 가격의 고정 회귀 범위를 뚫고 거래 신호를 생성하는 전략이다. 가격이 회귀 기간의 최고 가격을 뚫을 때, 다중 작업을 수행한다. 가격이 최고 가격을 넘어갈 때, 평행한다. 포지션은 다중 코어 방향을 편리하게 전환 할 수 있다.
4일 등으로 회귀주기를 설정합니다.
지난 4일 최고 가격을 계산해보세요.
오늘 최고가 지난 4일 최고를 넘어섰을 때, 더 많이 해보세요.
4일간의 최고치를 넘지 못했을 때 평점
리버스 파라미터를 통해 다중 공백 방향을 전환할 수 있다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
뚫고 들어가기 쉬웠고, 신호가 명확했다.
복잡한 변수 최적화와 과도한 최적화를 피하기 위해 브레이크 범위 변수를 고정하십시오.
다양한 시장 환경에 적응할 수 있는 여러 방향의 공백을 편리하게 전환할 수 있다.
고정 범위를 살펴보면 일부 소음이 필터링되어 지속적인 트렌드를 추적할 수 있습니다.
복잡한 지표들을 계산할 필요가 없고, 전략은 간단하고 효율적입니다.
이 전략의 주요 위험은 다음과 같습니다.
시장의 변화에 적응할 수 없는 고정된 범위를 돌파한다.
상쇄 손실을 고려하지 않고, 위험을 초과하는 큰 손실이 있습니다.
고정 변수는 시장 실패의 확률에 영향을 받을 수 있다.
노이즈 거래가 너무 빈번해져서 거래비용이 높아질 수 있습니다.
파라미터를 최적화하지 않고, 기본 파라미터를 사용하면 최적의 효과를 얻는 것이 어렵습니다.
다음의 몇 가지 측면에서 최적화할 수 있습니다.
핵심 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾습니다.
ATR을 기반으로 한 동적 뚫림 범위 계산에 추가하십시오.
이동 상쇄 또는 고정 비율 상쇄를 포함하는 것을 고려하십시오.
트렌드 지표와 결합하여 불안한 시장의 과도한 거래를 피하십시오.
더 많은 거래 품종에서 매개 변수 강도를 테스트한다.
기계 학습 알고리즘을 추가하여 매개 변수를 자동으로 최적화합니다.
이 전략은 전체적으로 매우 간단한 가격 돌파를 기반으로 한 거래 전략이다. 파라미터 범위를 최적화하고, 스톱 로즈 메커니즘을 추가하고, 트렌드 판단 등의 방법으로 개선하면, 구현하기 쉽고 실용적인 양적 전략이 될 수 있다.
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version = 2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 28/11/2016
// Breakout Range Long Strategy
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Breakout Range Long Strategy Backtest", overlay = true)
look_bak = input(4, minval=1, title="Look Bak")
reverse = input(false, title="Trade reverse")
xHighest = highest(high, look_bak)
pos = iff(high > xHighest[1], 1, 0)
if (pos == 1 and strategy.position_size == 0 and reverse == false)
strategy.entry("Long", strategy.long)
if (pos == 1 and strategy.position_size == 0 and reverse == true)
strategy.entry("Short", strategy.short)
if (pos == 0 and strategy.position_size > 0)
strategy.close("Long")
if (pos == 0 and strategy.position_size < 0)
strategy.close("Short")
barcolor(strategy.position_size > 0 ? green: strategy.position_size < 0 ? red: blue)
plotshape(pos, style=shape.triangleup, location = location.belowbar, color = green)