
이 전략은 위험 관리 메커니즘과 결합된 이중 이동 평균 채널을 기반으로 하는 동적 추세 추적 시스템입니다. 이 전략은 두 개의 단순 이동 평균(SMA)을 사용하여 거래 채널을 구성하는데, 상단 레일은 최고 가격으로 계산된 이동 평균을 사용하고, 하단 레일은 최저 가격으로 계산된 이동 평균을 사용합니다. 시스템은 상위 트랙을 돌파하는 5개 연속 K-라인 종가를 진입 신호로 사용하고, 하위 트랙 아래로 떨어지거나 최고점에서 25% 하락하는 5개 연속 K-라인 종가를 종료 신호로 사용하여 동적 추세를 달성합니다. 추적 및 위험 관리.
전략의 핵심 원칙은 이중 이동 평균 채널을 통해 가격 추세를 파악하고 엄격한 진입 및 종료 메커니즘을 확립하는 것입니다.
이 전략은 엄격한 진입 확인 및 이중 종료 메커니즘을 결합한 이중 이동 평균 채널을 통해 완전한 추세 추적 거래 시스템을 구축하여 효과적인 추세 추적과 효과적인 위험 관리를 달성합니다. 이 전략의 장점은 명확한 실행 로직과 완벽한 위험 관리입니다. 하지만 여전히 다양한 시장 환경에 대한 매개변수 최적화가 필요하며 시장 환경 필터링, 다중 기간 확인 등을 추가하면 더욱 개선될 수 있습니다. 전반적으로, 이는 완전한 구조와 엄격한 논리를 갖춘 양적 거래 전략으로, 명확한 추세가 있는 시장 환경에 적용하기에 적합합니다.
/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Moving Average Channel (MAC)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Parameters for Moving Averages
upperMALength = input.int(10, title="Upper MA Length")
lowerMALength = input.int(8, title="Lower MA Length")
stopLossPercent = input.float(25.0, title="Stop Loss (%)", minval=0.1) / 100
// Calculate Moving Averages
upperMA = ta.sma(high, upperMALength)
lowerMA = ta.sma(low, lowerMALength)
// Plot Moving Averages
plot(upperMA, color=color.red, title="Upper Moving Average")
plot(lowerMA, color=color.green, title="Lower Moving Average")
// Initialize variables
var int upperCounter = 0
var int lowerCounter = 0
var float entryPrice = na
var float highestPrice = na
// Update counters based on conditions
if (low <= upperMA)
upperCounter := 0
else
upperCounter += 1
if (high >= lowerMA)
lowerCounter := 0
else
lowerCounter += 1
// Entry condition: 5 consecutive bars above the Upper MA
if (upperCounter == 5 and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
highestPrice := high // Initialize highest price
// Update the highest price after entry
if (strategy.position_size > 0)
highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)
// Exit condition: 5 consecutive bars below the Lower MA
if (lowerCounter == 5 and strategy.position_size > 0)
strategy.close("Long", comment="Exit: 5 bars below Lower MA")
// Stop-loss condition: Exit if market closes below 25% of the highest price since entry
stopLossCondition = low < highestPrice * (1 - stopLossPercent)
if (stopLossCondition and strategy.position_size > 0)
strategy.close("Long", comment="Exit: Stop Loss")