이 전략은 주로 두 가지 지표인 ATR (평균 진범) 및 SMA (단순 이동 평균) 를 사용하여 시장의 통합 및 브레이크오웃을 결정하고 그에 따라 거래를 수행합니다. 전략의 주요 아이디어는: 가격이 상부 또는 하부 ATR 채널을 통과하면 브레이크오웃으로 간주되고 포지션이 열립니다. 가격이 ATR 채널로 돌아 왔을 때 통합으로 간주되며 포지션이 종료됩니다. 동시에 전략은 리스크 제어 및 포지션 관리를 사용하여 각 거래의 위험과 포지션 크기를 제어합니다.
이 전략은 각 거래의 위험과 위치 크기를 제어하기 위해 위험 통제 및 위치 관리를 사용하여 가격 브레이크와 통합을 결정하여 두 가지 간단한 지표인 ATR 및 SMA를 사용하여 거래를 수행합니다. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽지만, 불안정한 시장에서 낮은 성과, 전략 성과에 대한 매개 변수 설정의 중요한 영향, 유연하지 않은 스톱 로스 및 영리 설정 및 지나치게 간단한 위치 관리와 같은 실제 응용에서 전략의 신뢰성과 안정성을 향상시키기 위해 트렌드 필터링 조건을 추가하고, 더 유연한 스톱 로스 및 영리 방법을 사용하여, 더 복잡한 위치 관리 방법을 사용하여, 다른 필터링 조건을 추가하여 특정 상황에 따라 최적화 및 개선해야합니다.
/*backtest start: 2024-05-09 00:00:00 end: 2024-05-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Consolidation Breakout Strategy", overlay=true) // Input Parameters length = input.int(20, "Length", minval=1) multiplier = input.float(2.0, "Multiplier", minval=0.1, maxval=10.0) risk_percentage = input.float(1.0, "Risk Percentage", minval=0.1, maxval=10.0) stop_loss_percentage = input.float(1.0, "Stop Loss Percentage", minval=0.1, maxval=10.0) take_profit_percentage = input.float(2.0, "Take Profit Percentage", minval=0.1, maxval=10.0) // ATR calculation atr_value = ta.atr(length) // Average price calculation average_price = ta.sma(close, length) // Upper and lower bounds for consolidation detection upper_bound = average_price + multiplier * atr_value lower_bound = average_price - multiplier * atr_value // Consolidation detection is_consolidating = (high < upper_bound) and (low > lower_bound) // Breakout detection is_breakout_up = high > upper_bound is_breakout_down = low < lower_bound // Entry conditions enter_long = is_breakout_up and not is_consolidating enter_short = is_breakout_down and not is_consolidating // Exit conditions exit_long = low < (average_price - atr_value * stop_loss_percentage) or high > (average_price + atr_value * take_profit_percentage) exit_short = high > (average_price + atr_value * stop_loss_percentage) or low < (average_price - atr_value * take_profit_percentage) // Risk calculation risk_per_trade = strategy.equity * (risk_percentage / 100) position_size = risk_per_trade / atr_value // Strategy if (enter_long) strategy.entry("Long", strategy.long, qty=position_size) if (enter_short) strategy.entry("Short", strategy.short, qty=position_size) if (exit_long) strategy.close("Long") if (exit_short) strategy.close("Short")