이 전략은 다른 기간과 함께 세 개의 이동 평균을 설정하여 전통적인 이동 평균 크로스오버 전략을 최적화하여 9 기간, 50 기간 및 100 기간 이동 평균과 함께 골든 크로스 패턴을 구성합니다. 단기 MA가 중기 MA를 넘어서고 장기 MA가 상승 추세에있을 때 구매 신호를 생성합니다. 전략 이름은
이 전략은 9, 50 및 100의 기간을 가진 세 개의 이동 평균을 사용합니다. 9 기간 MA는 단기 MA, 50 기간 MA는 중기 MA, 100 기간 MA는 장기 MA입니다. 거래 신호는 단기 MA와 중기 MA 사이의 교차로 생성됩니다. 구체적으로, 장기 MA가 상승 추세에있을 때 (중기 MA보다 높을 때), 단기 MA가 중기 MA를 넘을 때 구매 신호가 유발됩니다. 단기 MA가 중기 MA를 넘을 때 판매 신호가 유발됩니다.
기존의 이중 이동 평균 크로스오버 전략과 비교하면 이 전략은 거래 신호를 생성하기 전에 중장기 트렌드를 판단하는 조건을 추가하여 일부 유효하지 않은 신호를 효과적으로 필터링할 수 있다. 장기 트렌드가 불분명할 때 전략은 신호를 생성하지 않아 통합에 갇히지 않는다. 동시에 이 전략은 단기 및 중기간에 트렌드 움직임을 포착하는 데 적합하며 공격적인 진입 가능성을 줄인다.
이 전략의 매개 변수를 설정할 때 이동 평균 기간의 조합은 조정되어야 합니다. 다른 기간 조합은 전략의 효과에 영향을 미칠 것입니다. 기간 매개 변수가 올바르게 설정되지 않으면 너무 많은 잘못된 신호를 생성 할 위험이 있습니다. 또한 거래자는 잠재적 인 시스템 리스크를 인식하고 위험을 완화하기 위해 적시에 손실을 중단해야합니다.
MACD, BOLL 등과 같은 시장 추세를 판단하는 데 도움이 되는 다른 지표를 통합하는 것을 고려하고 더 엄격한 입시 조건을 설정하거나 변동성 지표를 통합하여 적응 가능한 이동 평균을 구성하여 매개 변수를 자동으로 조정할 수 있습니다. 시장 조건에 따라 전략을 더 최적화하기 위해.
이 전략은 기존의 이중 이동 평균 크로스오버를 기반으로 장기적인 MA 판단과 필터 조건을 추가하여 잘못된 신호를 효과적으로 필터링할 수 있으며, 단기 및 중기 트렌드 움직임을 포착하는 데 적합합니다. 이것은 간단하고 실용적인 트렌드 추적 전략입니다. 그러나 거래자는 여전히 매개 변수 최적화 및 시스템 위험에주의를 기울이고 과학적 위험 관리 전략을 수립해야합니다.
/*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"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)