
Esta estrategia está basada en el indicador CCI y ha diseñado un sistema de negociación automático que sigue las tendencias de forma flexible. Puede emitir señales de negociación en el eje 0 del indicador CCI o en el eje 0 del indicador CCI, o puede emitir señales a través de una banda de canales ascendente y descendente y una banda de canales cruzada. La estrategia puede establecer un porcentaje fijo de stop loss y stop loss, y tiene varias funciones, como el comercio por períodos de tiempo y el comercio por períodos de tiempo fijos por día.
Utiliza el cruce del eje 0 del indicador CCI para determinar la tendencia del mercado, el CCI en el eje 0 es una señal de alza, el CCI en el eje 0 es una señal de baja.
A través de la banda de canal de CCI arriba y abajo, cuando el CCI arriba atraviesa la banda de canal es una señal positiva, el CCI abajo atraviesa la banda de canal es una señal negativa. La banda de canal cruzada es una señal de parada.
Se puede configurar solo para operaciones en un período de tiempo específico, y se puede configurar para operaciones diarias en un período fijo cuando no se negocia.
Se puede configurar el índice de stop loss y stop loss.
Noticias de Alerta para el cierre de posiciones personalizadas.
Las estrategias son totalmente personalizadas y flexibles, y se pueden ajustar las estrategias de optimización, como los parámetros CCI, los parámetros de banda de paso y los parámetros de parada de pérdidas.
Utilizando el indicador CCI para determinar la tendencia del mercado, el CCI es sensible a los cambios de precios y puede capturar rápidamente los puntos de inflexión del mercado.
La banda de canal personalizada puede ajustarse a los parámetros de los diferentes mercados, y el stop loss de la banda de canal puede controlar el riesgo de manera efectiva.
Soporta múltiples configuraciones de horario de negociación, permite ajustar los parámetros de la estrategia según los diferentes períodos de tiempo y aprovechar las características de los diferentes períodos de tiempo para obtener beneficios adicionales.
Soporta la configuración fija de Stop Loss Stop, que permite predecir el ratio de ganancias y pérdidas, controlando el riesgo de las transacciones individuales.
Los parámetros son totalmente personalizables y pueden ser estratégicamente optimizados para diferentes variedades y condiciones de mercado para obtener mejores resultados.
Los indicadores CCI son sensibles a los cambios en los precios y pueden generar algunas señales falsas, que deben verificarse en combinación con los indicadores de ciclo más largo.
La proporción fija de stop loss no puede ajustarse a los cambios en el mercado, por lo que debe ajustarse de manera adecuada.
El tiempo de negociación fijo puede perder la oportunidad de ajustar la línea corta del mercado, y se debe elegir apropiadamente el período de tiempo en el que el comercio tiene valor.
Se requiere una optimización frecuente de los parámetros, que si no se optimiza correctamente puede conducir a una sobrecomercialización o a la pérdida de oportunidades comerciales.
La necesidad de combinar con la situación de la industria, el entorno macro y otros factores múltiples, no se puede evitar completamente el riesgo con la simple optimización de los parámetros.
La verificación se realiza en combinación con los indicadores de ciclo largo y corto para evitar que el CCI genere una falsa señal.
El uso de indicadores como ATR para establecer paradas de pérdidas dinámicas.
Prueba el efecto de los parámetros en diferentes períodos de tiempo y selecciona los momentos en que las operaciones son más efectivas.
Optimizar los parámetros de CCI, los parámetros de la banda de paso y adaptarse a los cambios en el mercado.
Se debe considerar la combinación de factores como la tendencia, la volatilidad y el volumen de transacciones para un juicio integral.
Seleccione el período de tiempo adecuado de acuerdo con las características de la variedad comercial.
Considerar la incorporación de algoritmos de aprendizaje automático para la optimización automática de las estrategias.
La estrategia en su conjunto es un sistema de comercio de seguimiento de tendencias muy flexible y personalizable. La estrategia tiene varias ventajas, como el uso de CCI para juzgar la tendencia, controlar el riesgo de la banda de corredores personalizados, establecer paradas y pérdidas fijas, elegir el período de negociación, etc. También hay que tener en cuenta que la CCI es susceptible a generar señales falsas, el porcentaje de paradas y pérdidas fijas no se puede ajustar dinámicamente. En el futuro, la estrategia puede mejorarse en términos de parámetros de optimización, selección de señales de negociación, selección de períodos de tiempo de alta eficiencia, etc.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N
//@version=4
strategy(title="CCI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
//CCI Code
length = input(20, minval=1, title="CCI Length")
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
// Strategy Backtesting
startDate = input(timestamp("2099-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')
time_cond = true
//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true
//Strategy Settings
//Strategy Settings - Enable Check Boxes
enableentry = input(true, title="Enter First Trade ASAP")
enableconfirmation = input(false, title="Wait For Cross To Enter First Trade")
enablezero =input(true, title="Use CCI Simple Cross Line For Entries & Exits")
enablebands = input(false, title="Use Upper & Lower Bands For Entries & Exits")
//Strategy Settings - Band Sources
ccisource = input(0, title="CCI Simple Cross")
upperbandsource =input(100, title="CCI Enter Long Band")
upperbandexitsource =input(100, title="CCI Exit Long Band")
lowerbandsource =input(-100, title="CCI Enter Short Band")
lowerbandexitsource =input(-100, title="CCI Exit Short Band")
//Strategy Settings - Crosses
simplecrossup = crossover(cci, ccisource)
simplecrossdown = crossunder(cci, ccisource)
uppercrossup = crossover(cci, upperbandsource)
lowercrossdown = crossunder(cci, lowerbandsource)
uppercrossdown = crossunder(cci, upperbandexitsource)
lowercrossup = crossover(cci, lowerbandexitsource)
upperstop = crossunder(cci, upperbandsource)
lowerstop = crossover(cci, lowerbandsource)
// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100
longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)
plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")
// Alert messages
message_enterlong = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
//Strategy Execution
//Strategy Execution - Simple Line Cross
if (cci > ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (cci < ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
if (simplecrossup and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (simplecrossdown and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Entry
if (uppercrossup and enablebands and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (lowercrossdown and enablebands and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Exit
if strategy.position_size > 0 and uppercrossdown and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowercrossup and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Upper and Lower Band Stops
if strategy.position_size > 0 and upperstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowerstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Close Trade At End Of Time Frame
if strategy.position_size > 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Stop Loss and Take Profit
if strategy.position_size > 0 and enablesl and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
if strategy.position_size > 0 and enabletp and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)