
La estrategia es una estrategia de seguimiento de pérdidas dinámicas basado en la media doble de EMA. Utiliza las líneas de 9 y 20 días para determinar la dirección de la tendencia del mercado, en combinación con el indicador RSI para filtrar las rupturas falsas. Al mismo tiempo, utiliza el indicador ATR para calcular las paradas y paradas dinámicas.
La estrategia utiliza la EMA de 9 días como la media corta y la EMA de 20 días como la media media media para determinar la tendencia de los precios. Cuando los precios se elevan por encima de la media corta y el cierre es superior al máximo del día anterior y el RSI es superior a 30, se hace más; cuando los precios se elevan por debajo de la media corta y el cierre es inferior al mínimo del día anterior y el RSI es inferior a 70, se hace más.
El punto de parada se establece como el precio de cierre menos 1.5 veces el valor de ATR, el punto de parada se establece como el precio de cierre más el valor de ATR multiplicado por el coeficiente de parada. Al mismo tiempo, se establece un punto de parada de seguimiento de tendencia usando 2 veces el ATR.
La estrategia en general es una estrategia de posición de línea media y larga más estable. Combina los principales trends de mercado de los dos EMA para evitar que las decisiones sean influenciadas por el ruido del mercado a corto plazo. La inclusión del indicador RSI también filtra los falsos brechas en cierta medida. Además, el mecanismo de stop loss también permite a la estrategia ajustar su nivel de stop loss en función de la volatilidad del 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)