Esta é uma estratégia dinâmica de parada de trailers baseada em linhas de EMA duplas. Ele usa EMAs de 9 dias e 20 dias para determinar a direção da tendência do mercado, combinado com o indicador RSI para filtrar falhas. Ele também usa o indicador ATR para calcular níveis de stop loss dinâmicos e tomar lucro. Esta estratégia é adequada para participações de médio a longo prazo.
A estratégia usa a EMA de 9 dias como linha de curto prazo e a EMA de 20 dias como linha de médio prazo para determinar a tendência de preços. Ela fica longa quando o preço cruza acima da linha de curto prazo e o preço de fechamento é maior do que o máximo do dia anterior, com RSI inferior a 70 e fechar maior do que a EMA de 20 dias menos 1 ATR. Ela fica curta quando o preço cruza abaixo da linha de curto prazo e o preço de fechamento é menor do que o mínimo do dia anterior, com RSI maior do que 30 e fechar maior do que a EMA de 20 dias menos 1 ATR.
O stop loss é definido no preço de fechamento menos 1,5 vezes o ATR. O take profit é definido no preço de fechamento mais o ATR multiplicado por um coeficiente de take profit.
No geral, esta é uma estratégia de detenção relativamente estável de médio a longo prazo. Ele usa EMAs duplas para determinar a tendência principal do mercado, evitando ser afetado pelo ruído de curto prazo. A adição de RSI também filtra falhas de ruptura até certo ponto. Além disso, o mecanismo dinâmico stop loss / take profit permite que a estratégia ajuste com base na volatilidade do mercado. No entanto, ainda há riscos como atraso das médias móveis e potencial de penetração de stop loss. Precisamos encontrar a configuração ideal através de ajuste de parâmetros e otimização durante a aplicação prática.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CJTrade", overlay=true) short = ema(close, 9) medium = ema(close, 20) long = ema(close, 50) very_long = ema(close, 200) plot(short, color=color.gray, linewidth=1) plot(medium, color=color.red, linewidth=1) plot(long, color=color.black, linewidth=1) plot(very_long, color=color.blue, linewidth=1) rsiValue = rsi(close, 14) near20EMA = close > medium - atr(14) longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA strategy.entry("Long", strategy.long, when=longCond) strategy.entry("Short", strategy.short, when=shortCond) atrValue = atr(14) stopLossLevel = close - atrValue * 1.5 // Dynamic take profit level based on ATR takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1) takeProfitLevel = close + atrValue * takeProfitMultiplier // Trailing stop loss for long positions longTrailingStop = close - atrValue * 2 strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop) // Trailing stop loss for short positions shortTrailingStop = close + atrValue * 2 strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop) strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel) strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)