Desvio médio móvel duplo combinado com a tendência do indicador ATR Seguindo estratégia

Autora:ChaoZhang, Data: 2023-11-16 11:25:23
Tags:

img

Resumo

Esta estratégia usa os sinais de cruz de ouro e cruz morta formados por médias móveis duplas da EMA, combinados com o indicador ATR para julgar a volatilidade do mercado, para implementar uma estratégia de baixa tendência de compra-alta venda. Quando a linha rápida cruza acima da linha lenta e o indicador ATR é menor que o dia anterior, é considerado um sinal de alta para ir longo. Quando a linha rápida cruza abaixo da linha lenta e o indicador ATR é maior que o dia anterior, é considerado um sinal de baixa para ir curto.

Estratégia lógica

  1. Usar médias móveis EMA duplas de comprimento 20 e 55. Quando a linha rápida cruza acima da linha lenta e gera uma cruz de ouro, é considerado um sinal de alta. Quando a linha rápida cruza abaixo da linha lenta e gera uma cruz morta, é considerado um sinal de baixa.

  2. O indicador ATR reflete a volatilidade e o nível de risco do mercado. Quando o ATR é menor que o dia anterior, ele indica que a volatilidade do mercado está enfraquecendo e é adequado para ir longo. Quando o ATR é maior que o dia anterior, ele indica que a volatilidade do mercado está aumentando e é adequado para ir curto.

  3. Apenas vá longo quando a linha rápida dourado cruza a linha lenta e o ATR é menor do que o dia anterior. Apenas vá curto quando a linha rápida morto cruza a linha lenta e o ATR é maior do que o dia anterior. Isso evita intervir quando a volatilidade do mercado é alta.

  4. O indicador ATR também é usado para definir os níveis de stop loss e take profit. O stop loss é definido no preço atual menos ATR multiplicado pelo multiplicador de stop loss. O take profit é definido no preço atual mais ATR multiplicado pelo multiplicador de take profit.

  5. O multiplicador padrão de stop loss é 3xATR e o multiplicador padrão de take profit é 3xATR. Isso permite que o stop loss e o take profit sigam dinamicamente a volatilidade do mercado.

Vantagens da estratégia

  1. A utilização de um sistema de média móvel dupla proporciona uma confirmação mais forte do estado longo/curto, evitando-se ser enganado por falhas que ocorrem frequentemente no mercado.

  2. A introdução do indicador ATR permite que a estratégia só se envolva quando a volatilidade é baixa.

  3. O sistema dinâmico ATR stop loss/take profit permite que as paradas e os objetivos sejam definidos de acordo com o nível de volatilidade do mercado, evitando que as paradas estejam muito próximas ou que os objetivos sejam muito baixos.

  4. É possível definir o cruzamento da média móvel como um mecanismo de saída adicional, o que pode otimizar ainda mais a rentabilidade do sistema.

  5. Os níveis dinâmicos de stop loss e take profit baseados no ATR se encaixam melhor com a lógica de negociação de tendência.

Riscos da Estratégia

  1. As médias móveis duplas apresentam algum atraso nos sinais, o que pode fazer com que as tendências de curto prazo sejam mais fortes.

  2. Quando a volatilidade é elevada, o ATR aumenta e pode perder oportunidades de entrada.

  3. Para longos períodos de retenção, o stop loss pode chegar muito perto.

  4. As médias móveis apresentam um desempenho fraco em mercados com variações agitadas.

  5. Os parâmetros ATR devem ser ajustados para diferentes produtos e prazos, pois os parâmetros incorretos afetarão negativamente o desempenho.

Áreas de melhoria

  1. Teste diferentes combinações de médias móveis de comprimento para encontrar parâmetros que correspondam às características de tendência do produto.

  2. Incorporar outros indicadores como MACD, KD para confirmar os sinais cruzados da média móvel e melhorar a Entscheidungssicherheit.

  3. Otimizar os parâmetros ATR através de backtesting para melhor corresponder às características de volatilidade do produto.

  4. Fazer com que o fator multiplicador ATR seja ajustável para ajustar dinamicamente o stop loss/take profit de acordo com a força da tendência.

  5. Incorporar um indicador de força da tendência para reduzir os requisitos de stop loss em tendências fracas e aumentar o lucro em tendências fortes.

Resumo

O foco para a otimização é ajustar a média móvel e os parâmetros ATR para combinar com as características do produto, e projetar mecanismos dinâmicos de stop loss/take profit para seguir mudanças na força da tendência.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






Mais.