어댑티브 프라이스 크로싱 이동 평균 트레이딩 전략 (Adaptive Price-Crossing Moving Average Trading Strategy) 은 헐 이동 평균 (Hull Moving Average, HMA) 을 기반으로 한 양적 거래 방법이다. 이 전략은 HMA와 가격 크로스오버를 사용하여 구매 및 판매 신호를 생성하며, 위험과 보상을 관리하기 위해 고정 스톱 로스 및 영업 수준을 구현한다. 전략은 거래를 유발하기 위해 가격 크로스오버와 결합하여 104 기간 HMA를 주요 지표로 사용합니다.
이 전략의 핵심은 Hull Moving Average (HMA) 를 주요 지표로 사용하는 것입니다. HMA는 지연을 줄이는 동시에 가격 변화에 빠르게 반응하는 고급 이동 평균입니다. 전략 논리는 다음과 같습니다.
이 전략은 오픈 포지션을 추적하여 기존 포지션이 활성화되는 동안 새로운 포지션이 열리지 않도록합니다. 거래가 종료되면 시스템이 새로운 거래 신호가 효력을 발휘하도록 플래그를 재설정합니다.
어댑티브 프라이스 크로싱 이동 평균 트레이딩 전략 (Adaptive Price-Crossing Moving Average Trading Strategy) 은 간단하면서도 효과적인 양적 거래 방법이다. 허스 이동 평균의 장점을 활용함으로써 이 전략은 고정된 위험 관리 조치를 통해 자본을 보호하면서 시장 트렌드를 파악할 수 있다. 전략에는 몇 가지 잠재적인 위험이 있지만, 지속적인 최적화를 통해 더 향상되고 적응될 수 있다. 자동화 거래 솔루션을 추구하는 트레이더들에게는, 이것은 고려할 가치가 있는 기본적인 전략 프레임워크이다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-03-23 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SHIESTD", overlay=true) // Function to calculate Hull Moving Average (HMA) hma(src, length) => wma1 = ta.wma(src, length) wma2 = ta.wma(src, length / 2) hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length))) hma // Parameters hma_length = 104 // Calculate Hull Moving Average hma_value = hma(close, hma_length) // Plot HMA plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2) // Define SL and TP values in dollars long_sl_amount = 1.25 long_tp_amount = 37.5 short_sl_amount = 1.25 short_tp_amount = 37.5 // Number of contracts contracts = 2 // Function to calculate SL and TP prices based on entry price and dollar amounts long_sl_price(entry_price) => entry_price - long_sl_amount long_tp_price(entry_price) => entry_price + long_tp_amount short_sl_price(entry_price) => entry_price + short_sl_amount short_tp_price(entry_price) => entry_price - short_tp_amount // Trading conditions price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value) // Long and Short Conditions based on price intersecting HMA long_condition = ta.crossover(close, hma_value) short_condition = ta.crossunder(close, hma_value) // Track open positions var bool long_open = false var bool short_open = false // Handle Long Positions if (long_condition and not long_open) entry_price = close strategy.entry("Long", strategy.long, qty=contracts) strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price)) long_open := true // Handle Short Positions if (short_condition and not short_open) entry_price = close strategy.entry("Short", strategy.short, qty=contracts) strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price)) short_open := true // Reset flags when the position is closed if (strategy.opentrades == 0) long_open := false short_open := false