Esta estratégia combina múltiplas médias móveis exponenciais (EMA) para identificar pontos de entrada e saída potenciais no mercado. Comparando as tendências das EMAs com diferentes períodos, ela determina a tendência atual do mercado e entra em negociações no início da formação da tendência e fecha posições no início do fim da tendência.
Esta estratégia utiliza 4 EMAs com diferentes períodos como indicadores principais, a saber, EMAs de curto prazo (default 8 periods), EMAs de curto prazo (default 13 periods), EMAs de médio prazo (default 21 periods) e EMAs de longo prazo (default 55 periods). Quando a EMA de longo prazo está abaixo das outras três EMAs, julga-se que o mercado atual pode estar no início de uma tendência ascendente, e a estratégia abre uma posição longa; quando a EMA de longo prazo está acima das outras três EMAs, julga-se que o mercado atual pode estar no início de uma tendência descendente, e a estratégia fecha todas as posições longas. A estratégia identifica pontos de virada da tendência por esta combinação de arranjos de EMAs longas e curtas para capturar tendências nascentes.
Em comparação com a média móvel simples (SMA), a EMA coloca mais ênfase nos preços recentes e, portanto, sua tendência é mais sensível e pode reagir às mudanças de preço mais rapidamente. A cruzamento de EMAs com períodos diferentes reflete a força das tendências em diferentes escalas de tempo. A EMA de longo prazo é a mais estável e representa a tendência significativa do mercado; as EMAs de médio e curto prazo são relativamente sensíveis e refletem as tendências de mercado de curto e médio prazo.
Ampla aplicabilidade: Esta estratégia é baseada no indicador EMA do preço em si e é aplicável à maioria das variedades com boa liquidez e tendências relativamente suaves, como vários futuros, forex, criptomoedas convencionais, etc.
Seguimento da tendência: Ao comparar a relação de posição das EMA com diferentes períodos para determinar a tendência, pode capturar o início da formação da tendência até certo ponto e acompanhar a tendência.
Parâmetros flexíveis: Os parâmetros de período da EMA podem ser ajustados de forma flexível em função das características das variedades, do horizonte de investimento, etc., e têm uma certa adaptabilidade.
Lógico claro: a estratégia gera sinais de negociação baseados numa simples combinação de arranjos de EMA longa e curta, e a lógica é clara e fácil de compreender e implementar.
EMA lag: O EMA é essencialmente um indicador de acompanhamento da tendência e apresenta um certo atraso, o que pode gerar mais sinais falsos num mercado turbulento.
Sensibilidade dos parâmetros: a selecção dos parâmetros do período da EMA tem um impacto significativo no desempenho da estratégia e os parâmetros otimizados podem não manter um bom desempenho em dados fora da amostra.
Falta de filtragem: Esta estratégia não tem filtragem adicional dos sinais de negociação, e todos os sinais gerados serão negociados, o que pode resultar em algumas negociações de baixa qualidade.
Posição fixa: atualmente, a estratégia abre uma posição fixa de 1 unidade de cada vez, não tendo um controlo dinâmico da posição baseado no risco, e a gestão do risco não é suficientemente perfeita.
Introduzir a filtragem de tendências: com base nos sinais da EMA, adicionar indicadores de filtragem da força da tendência, como ATR e ADX, para filtrar os sinais de tendências fracas e períodos turbulentos.
Introduzir a filtragem da volatilidade: com base na filtragem da tendência, a filtragem da volatilidade, como a largura da banda de Bollinger, pode ser introduzida para filtrar sinais de baixa qualidade que possam ser causados por alta volatilidade.
Otimizar o stop-loss: atualmente, a estratégia não possui uma lógica de stop-loss clara.
Posição dinâmica: com base na volatilidade das variedades, na proporção do valor da conta, etc., o número de posições abertas pela estratégia pode ser controlado dinâmicamente para alcançar rendimentos absolutos mais elevados, reduzindo o risco.
Optimização dos parâmetros: Para diferentes variedades e períodos diferentes, os parâmetros ótimos da EMA podem ser diferentes e a otimização dos parâmetros deve ser realizada separadamente de acordo com as características das variedades para melhorar a aplicabilidade da estratégia.
Esta estratégia identifica pontos de virada da tendência, comparando as combinações de arranjos longos e curtos de 4 EMAs com diferentes períodos para capturar o início da formação da tendência. A ideia é simples e clara. Suas vantagens estão em sua ampla gama de aplicabilidade, lógica clara e parâmetros flexíveis, e pode rastrear as tendências bem; mas ao mesmo tempo, também tem o atraso inerente dos indicadores EMA, bem como problemas como sensibilidade de parâmetros, falta de filtragem e posição fixa. No futuro, a robustez e rentabilidade desta estratégia podem ser melhoradas a partir de aspectos como a introdução de filtragem de tendência e volatilidade, otimização de stop-loss, posição dinâmica e otimização de parâmetros para torná-la mais completa e confiável.
/*backtest start: 2023-03-05 00:00:00 end: 2024-03-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © n1ghthawk //@version=5 strategy("donmo's 4ema", overlay=true, margin_long=100, margin_short=100) float long = na float short = na lowestEMAPeriodInput = input.int(8, "Lowest EMA") lowEMAPeriodInput = input.int(13, "Low EMA") medEMAPeriodInput = input.int(21, "Med EMA") highEMAPeriodInput = input.int(55, "High EMA") lowestEMA = ta.ema(close, lowestEMAPeriodInput) lowEMA = ta.ema(close, lowEMAPeriodInput) medEMA = ta.ema(close, medEMAPeriodInput) highEMA = ta.ema(close, highEMAPeriodInput) emaLongCondition = highEMA<medEMA and highEMA<lowEMA and highEMA<lowestEMA emaShortCondition = highEMA>medEMA and highEMA>lowEMA and highEMA>lowestEMA longCondition = ta.change(emaLongCondition) shortCondition = ta.change(emaShortCondition) notInTrade = strategy.position_size <= 0 if longCondition and emaLongCondition and notInTrade long:=high strategy.entry("EL", strategy.long) if shortCondition and emaShortCondition short:=low strategy.close("EL") plot(long+3,title = 'long', color = color.green, linewidth = 4, style = plot.style_cross) plot(short-3,title = 'short', color = color.red, linewidth = 4, style = plot.style_cross) plot(lowestEMA, title = "lowestEMA", color=color.blue) plot(lowEMA, title = "lowEMA", color=color.green) plot(medEMA, title = "medEMA", color=color.orange) plot(highEMA, title = "highEMA", color=color.red)