A ideia principal desta estratégia é usar a cruz de ouro e a cruz morta das médias móveis como sinais de negociação, combinados com a quebra de preço de médias móveis duplas para fazer entradas e paradas.
Os princípios de funcionamento são os seguintes:
Calcular a média móvel simples de curto prazo e a média móvel simples de longo prazo.
Comparar se o preço está acima ou abaixo das médias móveis O preço acima das médias móveis indica posição longa, enquanto o preço abaixo mostra posição curta.
Ir longo quando a SMA curta cruza acima da SMA longa; ir curto quando a SMA curta cruza abaixo da SMA longa.
Troque entre posições longas e curtas.
As principais vantagens desta estratégia são:
A estratégia de média móvel dupla combina a tendência de seguimento e a reversão da média, que aproveita o acompanhamento das tendências do mercado e a captação de oportunidades de reversão.
A cruz de ouro e a cruz morta das médias móveis têm alguma persistência, o que ajuda a filtrar falhas.
Com base na teoria da média móvel, é benéfico bloquear os lucros durante tendências e mercados de intervalo.
Os principais riscos desta estratégia são:
A estratégia de média móvel dupla é sensível aos parâmetros.
As rupturas fracassadas podem levar a perdas, devendo ser implementadas paradas eficazes para controlar os riscos.
A reversão da tendência não é garantida para o sucesso. A tendência original pode continuar resultando em perdas.
As principais direcções de otimização:
Teste e otimize os parâmetros da média móvel para encontrar a melhor combinação de parâmetros.
Adicionar um indicador de determinação de tendências para distinguir entre mercados em tendência e mercados em variação.
Implementar um stop loss eficaz para controlar os riscos, tais como trailing stop loss, stop order loss, etc.
Combinar com outros indicadores para melhorar a robustez da estratégia.
Em conclusão, como uma estratégia de rastreamento de reversão de média móvel dupla, leva em consideração tanto o rastreamento de tendências quanto a negociação de reversão. Com a otimização adequada de parâmetros e controle de risco, pode alcançar bons resultados. No entanto, qualquer estratégia enfrenta riscos como erros direcionais, falha de stop loss, etc. Testes e otimização contínuos são necessários para se adaptar aos mercados em mudança.
/*backtest start: 2023-11-29 00:00:00 end: 2023-12-06 00:00:00 period: 10m basePeriod: 1m 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/ // © HPotter // Simple SMA strategy // // WARNING: // - For purpose educate only // - This script to change bars colors //@version=4 strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true) Resolution = input(title="Resolution", type=input.resolution, defval="D") Source = input(title="Source", type=input.source, defval=close) xSeries = security(syminfo.tickerid, Resolution, Source) Length = input(title="Length", type=input.integer, defval=14, minval=2) TriggerPrice = input(title="Trigger Price", type=input.source, defval=close) BarColors = input(title="Painting bars", type=input.bool, defval=true) ShowLine = input(title="Show Line", type=input.bool, defval=true) UseAlerts = input(title="Use Alerts", type=input.bool, defval=false) reverse = input(title="Trade Reverse", type=input.bool, defval=false) pos = 0 xSMA = sma(xSeries, Length) pos := iff(TriggerPrice > xSMA, 1, iff(TriggerPrice < xSMA, -1, nz(pos[1], 0))) nRes = ShowLine ? xSMA : na alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY') alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL') alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position') possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() nColor = BarColors ? possig == -1 ? color.red : possig == 1 ? color.green : color.blue : na barcolor(nColor) plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)