Estratégia do EMA

Autora:ChaoZhang, Data: 2023-12-07 17:20:44
Tags:

img

Resumo

Esta estratégia combina os indicadores EMA e RSI para identificar oportunidades de ajuste de curto prazo no Bitcoin. Ele usa principalmente a EMA como a principal ferramenta gráfica e o RSI como um indicador de julgamento auxiliar para encontrar padrões de ajuste óbvios. Os sinais de negociação são gerados quando o preço quebra abaixo ou sobe acima da linha EMA. Ele também tem controles de stop loss e take profit que podem ser parametrizados.

Princípio da estratégia

A estratégia usa principalmente a linha EMA de 50 períodos e o indicador RSI de 25 períodos. A linha EMA é considerada o principal indicador gráfico e o RSI é usado para determinar as condições de sobrecompra e sobrevenda para ajudar a gerar sinais de negociação. Um sinal de venda é gerado quando o preço cai abaixo da linha EMA e um sinal de compra é gerado quando o preço rompe acima da linha EMA e o indicador RSI mostra um sinal não sobrecomprado (valor RSI inferior a 70).

Após entrar em uma negociação, a estratégia também define os níveis de stop loss e take profit. A distância de stop loss é ajustável, por defeito para 5,1%; a distância de take profit também é ajustável, por defeito para 9,6%. Isso limita efetivamente a perda máxima por negociação.

Em resumo, a estratégia se baseia principalmente em padrões de linha EMA, complementados por indicadores RSI para evitar condições de sobrecompra e sobrevenda, enquanto possui controles de stop loss e take profit.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A combinação de EMA e RSI torna os sinais mais confiáveis em vez de depender apenas de um único indicador.

  2. O controle de stop loss e take profit é incorporado, o que limita efetivamente a perda por negociação e é uma ferramenta de controle de risco muito importante.

  3. Os parâmetros da estratégia podem ser otimizados. comprimento EMA, comprimento RSI e mais são parâmetros ajustáveis. Os usuários podem encontrar os conjuntos de parâmetros ideais para diferentes condições de mercado.

  4. A estratégia permite definir um intervalo de datas de backtest internamente para verificar o desempenho.

Análise de riscos

A estratégia apresenta igualmente alguns riscos, principalmente:

  1. O BT Bitcoin tem movimentos voláteis, as paradas podem ser executadas. Embora as paradas sejam definidas, o BT Bitcoin geralmente tem grandes oscilações de preço que podem tirar paradas levando a perdas maiores do que o esperado.

  2. Risco de utilização: a estratégia não considera o controlo geral da utilização, podendo ocorrer utilização durante períodos de ajustamento prolongados.

  3. Sinais mais fracos em tendências fortes. As tendências do BT Bitcoin podem se tornar bastante estendidas durante certas condições de mercado. Os sinais de curto prazo tendem a ter um desempenho inferior, levando a serem parados de boas negociações.

Para controlar e mitigar estes riscos:

  1. Permitir intervalos de stop loss mais amplos. Durante condições de tendência fortes, o intervalo de stop loss pode ser ampliado, por exemplo, para 10%, para evitar ser interrompido prematuramente.

  2. Adicionar outros filtros de indicadores. Podem ser adicionados indicadores de tendência para evitar a realização de operações durante períodos de consolidação prolongados.

  3. Otimizar os parâmetros. Os parâmetros de teste são definidos em diferentes condições de mercado. Os parâmetros de comutação são definidos quando surgem fortes tendências para melhorar a qualidade do sinal.

Orientações de otimização

Há ainda mais espaço para otimizar esta estratégia:

  1. Pode definir uma percentagem máxima de retirada, como 20%, que suspende a negociação quando atingido para limitar as perdas.

  2. Limitar a frequência de entrada. Pode restringir o número de negociações por unidade de tempo, como 2 negociações por hora no máximo, para evitar o excesso de negociação.

  3. Optimize parâmetros. Teste combinações de parâmetros para diferentes condições de mercado. Crie modelos de parâmetros para alternar em tempo real correspondendo às condições atuais.

  4. Combinar com outros indicadores, integrar tendências, volatilidade e outras métricas para criar regras mais abrangentes de entrada no sistema de negociação.

Resumo

No geral, a estratégia depende principalmente de padrões de ajuste de curto prazo do BT Bitcoin, usando a EMA e o RSI para gerar sinais de negociação claros, enquanto tem controles de stop loss e take profit.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
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/
// © mmoiwgg

//@version=4
strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0)
emarsiSource = input(close, title="EMA+RSI Source")
condSource = input(high, title="Long+Short Condition Source")
emaVal = ema(emarsiSource, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(emarsiSource, rsiLength)

//Safety 
emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0)
emaSource2 = input(close, title="Safety EMA Source")
ema = ema(emaSource2, emaLength2)
emaColorSource2 = close
emaBSource2 = close

// Backtest+Dates
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)        // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest end window
window()  => time >= start and time <= finish ? true : false       // create function - add window() to entry/exit/close

// Conditions
exit_long = crossover(emaVal, condSource)
longCond = crossunder(emaVal, condSource) and close > ema

//Stoploss + TakeProfit
sl = input(0.051, step=0.001, title="Stop Loss")
tp = input(0.096, step=0.001, title="Take Profit")

// Plots Colors
colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red
emaColorSource = input(close, title="Line Color Source")
emaBSource = input(close, title="Line Color B Source")

// Plots
plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1)
plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3)
plotcandle(open, high, low, close, color=colors)


//Strategy Entry+Exits
strategy.entry("long",1,when=window() and longCond)
strategy.close("long",when=window() and exit_long)
strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)


Mais.