Estratégia de Visão Dinâmica do EMAherokuapp


Data de criação: 2023-12-07 17:20:44 última modificação: 2023-12-07 17:20:44
cópia: 0 Cliques: 621
1
focar em
1619
Seguidores

Estratégia de Visão Dinâmica do EMAherokuapp

Visão geral

A estratégia combina os indicadores EMA e RSI para identificar oportunidades de correção de curto prazo para o Bitcoin. Utiliza principalmente o EMA como gráfico principal e o RSI como indicador de julgamento auxiliar, procurando por formas de correção mais visíveis. Produz um sinal de negociação quando o preço cai ou se reinicia na linha de equilíbrio EMA.

Princípio da estratégia

A estratégia usa principalmente a linha EMA de 50 ciclos e o indicador RSI de 25 ciclos. A linha EMA é considerada o principal indicador gráfico, o RSI é usado para determinar o excesso de compra e venda e auxiliar na geração de sinais de negociação. Quando o preço se move de cima para baixo, o sinal de venda é gerado; Quando o preço se move de baixo para cima, o sinal de compra é gerado quando o indicador RSI mostra um sinal de não-excesso de compra.

Após a entrada de uma transação, a estratégia define simultaneamente a posição de parada e parada. A distância de parada pode ser definida, assumindo 5,1%; A distância de parada também pode ser definida, assumindo 9,6% . Isso pode efetivamente reduzir o valor máximo de perda individual.

Em geral, a estratégia baseia-se principalmente na forma da linha EMA, auxiliada pelo indicador RSI para evitar a sobrevenda e a sobrevenda, além de possuir um controle de parada de perda adequado para a captura de um ajuste de curto de BTC.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Os sinais de estratégia são mais claros e não geram muitos erros de entrada aleatórios. A combinação de EMA e RSI torna os sinais mais claros e confiáveis, e não depende apenas de um único indicador.

  2. A estratégia de controle de parada de perda automática, que permite controlar efetivamente cada perda, é uma ferramenta de controle de risco muito importante.

  3. Os parâmetros da estratégia podem ser otimizados. O comprimento do EMA, o comprimento do RSI e outros parâmetros podem ser ajustados, permitindo que o usuário encontre a melhor combinação de parâmetros para diferentes mercados.

  4. A estratégia permite a retrospectiva. Pode-se definir um intervalo de tempo de retrospectiva diretamente na estratégia, para verificar a estratégia.

Análise de Riscos

A estratégia também apresenta alguns riscos, principalmente em relação aos seguintes aspectos:

  1. BT Bitcoin mercado é violento, o stop loss pode ser ultrapassado. Apesar da estratégia de definir o stop loss, mas no Bitcoin grande mercado, o preço de movimento é maior, a linha de stop loss pode ser ultrapassado diretamente.

  2. Risco de retração. A estratégia não considera o controle de retração global. A estratégia produzirá uma certa retração se houver um ajuste de longo prazo.

  3. O efeito do sinal é fraco sob o cenário geral. Em um cenário geral comparativo selvagem, o preço do BTC terá um movimento de onda maior e mais longo. Nesse caso, o efeito do sinal de curto prazo será fraco e fácil de ser manipulado.

Os riscos podem ser controlados e mitigados através das seguintes medidas:

  1. A largura de suspensão apropriada. Se for o caso, a distância de suspensão apropriada pode ser ampliada, por exemplo, para cerca de 10%, para evitar que a suspensão seja muito fácil de ser quebrada.

  2. Em combinação com outros indicadores filtrados. Indicadores de tendências, como o alinhamento linear, podem ser adicionados, evitando a utilização da estratégia em situações de ajuste de longo prazo.

  3. Otimizar o conjunto de parâmetros. Pode testar a configuração de parâmetros em diferentes fases do mercado, criar várias combinações de parâmetros e alternar os parâmetros quando a situação for grave para melhorar a qualidade do sinal.

Direção de otimização

A estratégia também tem espaço para uma maior otimização, que pode ser iniciada em vários aspectos:

  1. Aumentar o controle de retração global. Pode-se definir a taxa máxima de retração, como 20%, e a estratégia de suspender a negociação quando essa retração é atingida, para evitar perdas excessivas.

  2. Aumentar o controle da frequência de abertura de posições. Pode limitar o número de aberturas de posições por unidade de tempo da estratégia, como no máximo duas vezes por hora, evitando transações excessivamente frequentes.

  3. Optimizar a configuração de parâmetros. Teste combinações de parâmetros em diferentes situações de mercado, crie vários modelos de parâmetros, selecione os parâmetros apropriados de acordo com a situação atual no disco rígido, para aumentar a eficácia da estratégia.

  4. A estratégia pode ser usada com outras combinações de indicadores, como tendências e volatilidade, para formar uma base mais abrangente e confiável para a entrada no sistema de negociação.

Resumir

Em geral, a estratégia se baseia principalmente na configuração de ajuste de curto prazo do BTC, utilizando EMA e RSI para produzir um sinal de negociação mais claro, além de ter controle de stop loss e stop loss para aproveitar efetivamente as oportunidades de arbitragem trazidas pelo deslizamento de curto prazo do BTC. No entanto, a estratégia é mais adequada como auxiliar de linha curta, e a combinação de outras estratégias é mais eficaz e pode gerar ganhos extras mais estáveis.

Código-fonte da estratégia
/*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)