
A estratégia é uma estratégia de rastreamento de stop loss dinâmico baseada na linha média de duas EMAs. Ela usa a linha de 9 dias e a linha de 20 dias para determinar a direção da tendência do mercado, em combinação com o indicador RSI para filtrar a falsa ruptura.
A estratégia usa a EMA de 9 dias como a média curta e a EMA de 20 dias como a média média média para determinar a tendência dos preços. Quando os preços atravessam a média curta e fecham acima do máximo do dia anterior e o RSI está acima de 30, faz mais; Quando os preços atravessam a média curta e fecham abaixo do mínimo do dia anterior e o RSI está abaixo de 70, faz mais.
O ponto de parada é definido como o valor de ATR menos 1,5 vezes o preço de fechamento, o ponto de parada é definido como o valor de ATR mais o preço de fechamento multiplicado pelo fator de parada. Ao mesmo tempo, o ponto de parada é definido como o stop tracking de tendência usando o dobro do ATR.
A estratégia, em geral, é uma estratégia de posição de linha média e longa mais estável. Combina a principal tendência do mercado de julgamento de EMA dupla, evitando que as decisões sejam influenciadas pelo ruído do mercado de curto prazo. A inclusão do indicador RSI também filtra os falsos breakouts até certo ponto. Além disso, o mecanismo de stop loss stop also permite que a estratégia ajuste seu próprio nível de stop loss de acordo com a volatilidade do mercado.
/*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)