이중 이동 평균 크로스오버 역전 전략 (Dual Moving Average Crossover Reversal strategy) 은 트렌드를 추적하는 전형적인 양적 거래 전략이다. 이 전략은 이중 이동 평균 지표의 9일 라인과 14일 라인의 크로스오버 신호를 이용하여 구매 및 판매 신호를 구성한다. 9일 라인이 아래로부터 14일 라인을 뚫고 황금 십자가를 형성할 때 구매하고, 9일 라인이 위로부터 14일 라인을 뚫고 죽음의 십자가를 형성할 때 판매한다. 잘못된 신호를 필터하기 위해 전략은 또한 50일 라인 표시기를 도입하여 가격이 뚫을지 여부를 결정한다.
이 전략은 주로 이중 이동 평균 지표의 황금 십자 및 죽음의 십자 신호를 기반으로 거래합니다. 이중 이동 평균에서 9일 라인은 단기 트렌드를 나타냅니다. 14일 라인은 중기 트렌드를 나타냅니다. 그리고 그들의 교차는 시장 트렌드의 전환을 판단하는 효과적인 기술 지표입니다. 단기 트렌드 라인이 아래에서 중기 트렌드 라인을 뚫고 황금 십자 를 형성하면 단기 트렌드 라인이 강화되고 있음을 나타냅니다. 이는 구매 신호입니다. 위로부터 뚫고 죽음의 십자 라인을 형성하면 단기 트렌드 라인이 약화되고 있음을 나타냅니다. 이는 판매 신호입니다.
또한, 전략은 또한 잘못된 신호를 필터하기 위해 50일 라인을 도입한다. 가격이 50일 라인 위에 있을 때만 구매를 생성하고, 가격이 50일 라인 아래에 있을 때만 판매를 생성한다. 50일 라인은 중장기 트렌드를 나타낸다. 중장기 트렌드가 일치할 때만 단기 거래가 수행된다.
핵심 논리는 다음과 같습니다.
// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
이중 이동 평균 전략의 장점은 분명합니다.
이중 이동 평균 전략은 또한 몇 가지 위험을 가지고 있습니다.
위험을 해결하기 위해 아래와 같은 최적화가 가능합니다.
이중 이동 평균 전략은 몇 가지 측면에서 최적화 될 수 있습니다.
이중 이동 평균 전략은 일반적으로 효율적인 수익 창출 전략입니다. 지속적으로 트렌드를 따라 수익을 얻을 수 있습니다. 동시에 특정 위험이 있으며 추가 개선이 필요합니다. 매개 변수, 정지 방법 및 전략 조합을 최적화함으로써이 전략의 효과를 더욱 향상시킬 수 있습니다.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true) // Define the length for the SMAs sma9Length = input(9, title="SMA 9 Length") sma14Length = input(14, title="SMA 14 Length") sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50 // Calculate SMAs sma9 = ta.sma(close, sma9Length) sma14 = ta.sma(close, sma14Length) sma50 = ta.sma(close, sma50Length) // Calculate SMA 50 // Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50 buyCondition = ta.crossover(sma9, sma14) and close > sma50 // Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50 sellCondition = ta.crossunder(sma9, sma14) and close < sma50 // Track the time since position was opened var float timeElapsed = na if (buyCondition) timeElapsed := 0 else timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1 // Close the buy position after 5 minutes if (timeElapsed >= 5) strategy.close("Buy") // Track the time since position was opened var float timeElapsedSell = na if (sellCondition) timeElapsedSell := 0 else timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1 // Close the sell position after 5 minutes if (timeElapsedSell >= 5) strategy.close("Sell") // Plot the SMAs on the chart plot(sma9, title="SMA 9", color=color.blue) plot(sma14, title="SMA 14", color=color.red) plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart // Strategy entry and exit conditions using if statements if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short)