
Esta estrategia es una estrategia de comercio de oscilación en línea corta que combina el indicador de la media de la EMA y el indicador CCI para identificar las tendencias de corto en el mercado y los estados de sobreventa y sobreventa para capturar oportunidades de fluctuaciones en los precios de la línea corta.
La estrategia utiliza principalmente las tres líneas medias del 10o EMA, 21o EMA y 50o EMA, así como el indicador CCI para determinar el tiempo de entrada y salida.
La lógica es la siguiente: Cuando la media corta (EMA de 10 días) cruza la media de mediano plazo (EMA de 21 días) y la media corta es superior a la media de largo plazo (EMA de 50 días), y el indicador CCI es mayor que 0, considere una señal de más; cuando la media corta cruza la media de mediano plazo y la media corta está por debajo de la media de largo plazo, y el indicador CCI es menor que 0, considere una señal de menos.
La lógica de la posición plana es la posición plana cuando la línea media a corto plazo vuelve a cruzar la línea media a mediano plazo.
La combinación de un sistema de línea media y el indicador CCI permite identificar la dirección de la tendencia de las fluctuaciones de los precios de las líneas cortas y los estados de sobreventa y sobreventa.
El uso de forks de línea recta y forks muertos para juzgar entradas y exists es sencillo y práctico.
Los parámetros y la configuración del ciclo del indicador CCI son más razonables y permiten eliminar algunas señales falsas.
El uso de líneas medias con múltiples períodos de tiempo permite obtener mejores oportunidades de operación en una ciudad convulsa.
Las operaciones de línea corta son muy volátiles y pueden tener más pérdidas continuas.
La configuración incorrecta de los parámetros del indicador CCI puede aumentar las señales falsas.
La estrategia podría tener varias pérdidas menores durante el balance de la crisis.
Solo es adecuado para los operadores que operan con frecuencia en líneas cortas, no es adecuado para la tenencia de líneas largas.
Las respuestas a los riesgos correspondientes incluyen: optimización de los parámetros CCI, ajuste de la posición de stop loss, aumento de las condiciones FILTER, etc.
Se puede probar una combinación de líneas medias EMA de diferentes longitudes, optimizando los parámetros.
Se pueden agregar otros indicadores o condiciones de filtro para filtrar algunas señales falsas. Por ejemplo, MACD, KDJ, etc.
Se pueden controlar las pérdidas individuales mediante el seguimiento dinámico del stop loss.
Se puede combinar con indicadores de tendencia de períodos de tiempo más altos para evitar operaciones de contravalor.
Esta estrategia en su conjunto es una típica estrategia de oscilación de la línea corta, que utiliza el punto de equilibrio del indicador de equilibrio en combinación con el estado de sobrecompra y sobreventa del indicador CCI para capturar oportunidades de reversión a corto plazo de los precios. La estrategia es adecuada para el comercio frecuente de la línea corta, pero requiere soportar cierta presión de parada.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
strategy("Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
exponential = input(true, title="Exponential MA")
// the risk management inputs
inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
src = close
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma21 = exponential ? ema(src, 21) : sma(src, 21)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
xCCI = cci(close, 200)
//buy_cond = cross(ma21, ma50) and ma10 > ma21 and (xCCI > 0)
//sell_cond = cross(ma21, ma50) and ma10 < ma21 and (xCCI < 0)
buy_cond = ma10 > ma21 and ma10 > ma50 and xCCI > 0
sell_cond = ma10 < ma21 and ma10 < ma50 and xCCI < 0
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => buy_cond
exitLong() => ma10 < ma21
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => sell_cond
exitShort() => ma10 > ma21
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())
// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//longCondition = buy_cond
//if(longCondition)
// strategy.entry("Long", strategy.long)
// strategy.exit("Close Long", "Long", when = exitLong())
//shortCondition = sell_cond
//if(shortCondition)
// strategy.entry("Short", strategy.short)
// strategy.exit("Close Short", "Short", when = exitShort())
//plotshape(buy_cond, style=shape.flag, color=green, size=size.normal)
//plotshape(sell_cond, style=shape.flag, color=red, size=size.normal)
c1 = buy_cond==1 ? lime : sell_cond==1 ? red : #a3a3a3 // color
plot( ma10, color=red, style=line, title="10", linewidth=1)
plot( ma21, color=orange, style=line, title="21", linewidth=1)
plot( ma50, color=c1, style=line, title="50", linewidth=3)
//alertcondition(buy_cond, title = "Buy Condition", message = "Buy Condition Alert")
//alertcondition(sell_cond, title = "Sell Condition", message = "Sell Condition Alert")