이중 이동 평균 브레이크아웃 전략은 양적 거래 전략을 따르는 전형적인 트렌드이다. 이 전략은 다양한 기간의 간단한 이동 평균을 계산하고 포지션을 결정하기 위해 가격을 깨는지 확인하여 거래 신호를 생성합니다. 이 전략은 20 일 및 60 일 이동 평균을 거래 신호로 사용합니다.
이중 주식 투자 전략의 핵심 논리는다른 기간의 이동 평균을 사용하여 가격 추세를 파악하고 가격이 이동 평균을 깨면 거래 신호를 생성합니다..
특히, 이 전략은 20일 및 60일 간단한 이동 평균을 사용한다. 이 두 이동 평균은 각각 단기 및 중장기 트렌드를 포착하는 도구로 볼 수 있다. 단기 가격이 중장기 가격을 뚫을 때, 시장이 상승 추세에 있으며 따라서 길게 가야한다는 신호를 준다. 단기 가격이 중장기 가격 이하로 떨어지면, 시장이 하락 추세에 있다는 신호를 주고 따라서 포지션을 줄여야 한다.
코드는ta.crossover
그리고ta.crossunder
가격이 이동 평균을 통과했거나 그 이하로 떨어졌는지 확인하기 위해. 브레이크오웃이 발생하면 긴 또는 감소 포지션의 거래 신호가 그에 따라 발산됩니다.
이중 이동 평균 파업 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이 전략은 다음 차원에서 강화될 수 있습니다.
이중 이동 평균 브레이크아웃 전략은 트렌드를 따르는 간단하고 실용적인 전략입니다. 단기 시장 소음을 피하면서 중장기 트렌드를 효과적으로 파악할 수 있습니다. 또한 이해하기 쉬운 논리와 제한된 매개 변수는 양적 거래에 매우 적합합니다. 물론 매개 변수 조정, 신호 필터링 및 더 안정적이고 수익성있게 만들기 위해 스톱 로스와 같은 개선의 여지가 있습니다.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m 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/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)