Esta estratégia otimiza a estratégia de cruzamento da média móvel convencional, definindo três médias móveis com períodos diferentes, construindo um padrão de cruz de ouro com médias móveis de 9 períodos, 50 períodos e 100 períodos.
A estratégia utiliza três médias móveis com períodos de 9, 50 e 100. O MA de 9 períodos é o MA de curto prazo, o MA de 50 períodos é o MA de médio prazo e o MA de 100 períodos é o MA de longo prazo. Os sinais de negociação são gerados pelo cruzamento entre o MA de curto prazo e o MA de médio prazo. Especificamente, quando o MA de longo prazo está em uma tendência de alta (acima do MA de médio prazo), um sinal de compra é ativado quando o MA de curto prazo cruza acima do MA de médio prazo. Um sinal de venda é ativado quando o MA de curto prazo cruza abaixo do MA de médio prazo.
Em comparação com a estratégia de cruzamento de média móvel dupla convencional, esta estratégia adiciona a condição de julgar tendências de médio e longo prazo antes de gerar sinais de negociação, o que pode efetivamente filtrar alguns sinais inválidos. Quando as tendências de longo prazo não são claras, a estratégia não gerará sinais, evitando ser presa na consolidação. Ao mesmo tempo, esta estratégia é adequada para capturar movimentos de tendência no curto e médio prazo, reduzindo a possibilidade de entrada agressiva.
Quando se estabelecem parâmetros para esta estratégia, a combinação de períodos de média móvel precisa ser ajustada. As diferentes combinações de períodos terão um impacto na eficácia da estratégia. Se os parâmetros do período não forem definidos corretamente, existe o risco de gerar muitos sinais falsos. Além disso, os traders precisam estar cientes dos riscos sistêmicos potenciais e parar as perdas em tempo hábil para mitigar os riscos.
Considerar a incorporação de outros indicadores para ajudar a julgar as tendências do mercado, como MACD, BOLL, etc., e definir condições de entrada mais rigorosas, ou incorporar indicadores de volatilidade para construir médias móveis adaptativas de modo que os parâmetros possam ser ajustados automaticamente com base nas condições do mercado para otimizar ainda mais a estratégia.
Baseada no crossover convencional de média móvel dupla, esta estratégia adiciona julgamento de MA a longo prazo e condições de filtragem, que podem efetivamente filtrar sinais falsos e é adequada para capturar movimentos de tendência de curto a médio prazo.
/*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)