A estratégia de inversão de cruzamento de média móvel dupla é uma estratégia comercial quantitativa típica que rastreia tendências. A estratégia utiliza os sinais de cruzamento da linha de 9 dias e da linha de 14 dias no indicador de média móvel dupla para construir sinais de compra e venda.
Esta estratégia opera principalmente com base nos sinais de cruz de ouro e cruz de morte do indicador de média móvel dupla. Nas médias móveis duplas, a linha de 9 dias representa tendências de curto prazo, a linha de 14 dias representa tendências de médio prazo e seu cruzamento é um indicador técnico eficaz para julgar as voltas nas tendências do mercado. Quando a linha de tendência de curto prazo atravessa a linha de tendência de médio prazo de baixo para formar uma cruz de ouro, ela indica que a linha de tendência de curto prazo está se fortalecendo, o que é um sinal de compra; quando ela atravessa de cima para formar uma linha de tendência de curto prazo, ela indica que a linha de tendência está enfraquecendo, o que é um sinal de venda.
Além disso, a estratégia também introduz a linha de 50 dias para filtrar sinais enganosos. Ela gerará apenas uma compra quando o preço estiver acima da linha de 50 dias; e só gerará uma venda quando o preço estiver abaixo da linha de 50 dias. A linha de 50 dias representa tendências de médio a longo prazo.
A lógica central é a seguinte:
// 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
As vantagens da estratégia da dupla média móvel são óbvias:
A estratégia da dupla média móvel apresenta também alguns riscos:
Para enfrentar os riscos, podem ser feitas otimizações como as seguintes:
A estratégia da dupla média móvel pode ser otimizada em vários aspectos:
A estratégia de média móvel dupla é geralmente uma estratégia eficiente de geração de lucro. Ela pode lucrar seguindo as tendências continuamente. Ao mesmo tempo, ela tem certos riscos e precisa de melhoria adicional. Ao otimizar parâmetros, métodos de parada e combinações de estratégia, os efeitos desta estratégia podem ser ainda melhorados.
/*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)