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.
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.
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.
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.
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.
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.
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.
A introdução do indicador ATR permite que a estratégia só se envolva quando a volatilidade é baixa.
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.
É 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.
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.
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.
Quando a volatilidade é elevada, o ATR aumenta e pode perder oportunidades de entrada.
Para longos períodos de retenção, o stop loss pode chegar muito perto.
As médias móveis apresentam um desempenho fraco em mercados com variações agitadas.
Os parâmetros ATR devem ser ajustados para diferentes produtos e prazos, pois os parâmetros incorretos afetarão negativamente o desempenho.
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.
Incorporar outros indicadores como MACD, KD para confirmar os sinais cruzados da média móvel e melhorar a Entscheidungssicherheit.
Otimizar os parâmetros ATR através de backtesting para melhor corresponder às características de volatilidade do produto.
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.
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.
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)