
이중 이동 평균 트렌드 추적 전략 (Dual Moving Average Trend Tracking Strategy) 은 두 개의 다른 주기 이동 평균을 기반으로 시장의 경향 방향을 판단하는 정량 거래 전략이다. 이 전략은 빠른 이동 평균과 느린 이동 평균의 다공간 상태를 사용하여 트렌드 방향을 결정하고, 트렌드 방향으로 거래한다.
이 전략은 두 개의 이동 평균을 사용한다. 빠른 이동 평균 (예를 들어 10 주기) 과 느린 이동 평균 (예를 들어 30 주기) 을 포함한다. 두 개의 이동 평균이 상승하면 다중 트렌드라고 판단한다. 두 개의 이동 평균이 하향하면 공중 트렌드라고 판단한다.
구체적으로, 전략은 먼저 빠른 이동 평균과 느린 이동 평균을 계산한다. 그리고는 현재의 빠른 이동 평균과 이전 주기의 크기와의 관계를 비교한다. 현재의 크기가 이전 주기와 같다면, 1을 부여한다. 그렇지 않으면 -1을 부여한다. 느린 이동 평균은 동일한 판단한다.
마지막으로, 두 개의 이동 평균의 판단값을 재빨리 판단한다. 두 판단값이 1인 경우, 최종 판단값은 1로, 이는 다목적 경향을 나타낸다. 두 판단값이 -1인 경우, 최종 판단값은 1로, 이는 공백 경향을 나타낸다. 판단값이 일치하지 않으면, 지난 주기의 경향 판단을 유지한다.
트렌드 방향을 판단한 후, 이 전략은 멀티 헤드 트렌드에서 더 많은 포지션을 열고, 빈 헤드 트렌드에서 더 많은 포지션을 열었다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 위험도 있습니다.
위와 같은 위험을 줄이기 위해, 이동 평균 주기의 파라미터를 더 합리적으로 설정할 수 있으며, 보조 판단으로 다른 기술 지표를 도입하거나, 스톱 스톱 규칙을 설정하거나, 위치 위치를 적절하게 조정할 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이중 이동 평균 트렌드 추적 전략 전체적인 아이디어는 명확하고 이해하기 쉽다. 이중 이동 평균 필터로 트렌드 방향을 판단하고 판단 결과에 따라 거래하는 것이 전형적인 트렌드 추적 전략이다. 이 전략은 개인 선호에 따라 선택 할 수 있습니다.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
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/
// © noro
// 2020
//@version=4
strategy(title = "Noro's TrendMA Strategy", shorttitle = "TrendMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)
//Settings
needlong = input(true, title = "Long")
needshort = input(true, title = "Short")
fast = input(10, minval = 1, title = "MA Fast (red)")
slow = input(30, minval = 2, title = "MA Slow (blue)")
type = input(defval = "SMA", options = ["SMA", "EMA"], title = "MA Type")
src = input(ohlc4, title = "MA Source")
showma = input(true, title = "Show MAs")
showbg = input(false, title = "Show Background")
//MAs
fastma = type == "EMA" ? ema(src, fast) : sma(src, fast)
slowma = type == "EMA" ? ema(src, slow) : sma(src, slow)
//Lines
colorfast = showma ? color.red : na
colorslow = showma ? color.blue : na
plot(fastma, color = colorfast, title = "MA Fast")
plot(slowma, color = colorslow, title = "MA Slow")
//Trend
trend1 = fastma > fastma[1] ? 1 : -1
trend2 = slowma > slowma[1] ? 1 : -1
trend = 0
trend := trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : trend[1]
//Backgrouns
colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(colbg, transp = 80)
//Trading
if trend == 1
if needlong
strategy.entry("Long", strategy.long)
if needlong == false
strategy.close_all()
if trend == -1
if needshort
strategy.entry("Short", strategy.short)
if needshort == false
strategy.close_all()