확장 가능한 브레이크아웃 거래 전략은 가격이 가격 변동에 의해 식별되는 주요 지원 및 저항 수준을 통과 할 때 거래 신호를 생성합니다. 그것은 매우 유연하고 확장 가능한 브레이크아웃 전략입니다. 이 전략은 매개 변수를 조정하여 다른 시간 프레임에 적응 할 수 있으며 최적화를 위해 추가 필터와 리스크 관리 메커니즘을 쉽게 통합 할 수 있습니다.
이 전략은 우선swings()
뷰백 기간을 기반으로 스윙 최고와 최저를 계산하는 함수. 뷰백 기간은swingLookback
매개 변수, 20 바로 기본. 가격이 스윙 최상위 이상으로 넘어갈 때 긴 신호가 발생하고, 가격이 스윙 최저 아래로 넘어갈 때 짧은 신호가 발생합니다.
특히, 긴 신호는 닫기 가격이 스윙 높은 가격보다 크거나 같을 때 발생한다. 짧은 신호는 닫기 가격이 스윙 낮은 가격보다 작거나 같을 때 발생한다.
이 전략은 또한stopTargetPercent
스톱 로스 레벨을 정의하는 매개 변수입니다. 예를 들어, 긴 스톱 로스는 스윙 하위보다 5% 낮고 짧은 스톱 로스는 스윙 하위보다 5% 낮게 설정할 수 있습니다.
이 전략의 장점은 거래 빈도를 제어하기 위해 룩백 기간을 조정할 수 있는 유연성이다. 짧은 룩백 기간은 브레이크에 더 민감하게 작용하고 거래 빈도를 증가시킨다. 더 긴 룩백 기간은 민감성과 거래 빈도를 감소시키지만 기회를 놓칠 수 있다. 최적의 룩백 기간을 찾는 것은 전략을 최적화하는 데 매우 중요하다.
완화:
이 전략은 여러 가지 방법으로 향상될 수 있습니다.
최적의 매개 변수를 찾기 위해 다른 룩백 기간 값을 테스트합니다.
5m, 15m, 1h와 같은 다른 시간 프레임을 테스트하여 최상의 시간 프레임을 결정합니다.
스톱 로스 비율을 최적화하여 수익 잠재력과 위험 관리의 균형을 맞추십시오.
부피, 변동성 같은 필터를 추가해서 열등한 설정을 줄이세요.
더 많은 위험 관리 메커니즘을 통합합니다.
전진 분석과 기계 학습을 통해 매개 변수 최적화
AI/머신러닝을 도입하여 매개 변수를 자동으로 최적화할 수 있습니다.
확장 가능한 브레이크아웃 거래 전략은 견고하고 사용자 정의 가능한 브레이크아웃 시스템입니다. 사용이 간단하고 룩백을 조정하고 필터를 추가하여 매우 적응력이 있습니다. 위험 통제를 위해 위험 관리를 쉽게 통합 할 수 있습니다. 매개 변수 최적화 및 기계 학습 통합으로 전략은 변화하는 시장에 적응하기 위해 시간이 지남에 따라 진화 할 수 있습니다. 전반적으로 권장되는 보편적인 브레이크아웃 전략입니다.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m 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/ // © deperp //@version=5 // strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0) // Backtest Time Period useDateFilter = input.bool(true, title="Begin Backtest at Start Date", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2020"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true swingLookback = input.int(20, title="Swing Lookback", minval=3) stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1) // Calculate lockback swings swings(len) => var highIndex = bar_index var lowIndex = bar_index var swingHigh = float(na) var swingLow = float(na) upper = ta.highest(len) lower = ta.lowest(len) if high[len] > upper highIndex := bar_index[len] swingHigh := high[len] if low[len] < lower lowIndex := bar_index[len] swingLow := low[len] [swingHigh, swingLow, highIndex, lowIndex] // Strategy logic [swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback) longCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortCondition = inTradeWindow and (ta.crossunder(close, swingLow)) if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) longStopTarget = close * (1 + stopTargetPercent / 100) shortStopTarget = close * (1 - stopTargetPercent / 100) strategy.exit("Long Stop Target", "Long", limit=longStopTarget) strategy.exit("Short Stop Target", "Short", limit=shortStopTarget) // Plot break lines // line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right) // line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right) // Alert conditions for entry and exit longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow)) longExitCondition = close >= longStopTarget shortExitCondition = close <= shortStopTarget alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position") alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position") alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position") alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")