Esta estrategia genera señales comerciales comparando el indicador RSI de una criptomoneda con el indicador RSI de un índice de criptomercado para juzgar el valor relativo de la criptomoneda frente al mercado de criptomonedas.
La estrategia permite seleccionar primero un índice de mercado de criptomonedas, como la capitalización total de mercado, la capitalización total de mercado excluyendo Bitcoin, la capitalización de mercado de otras monedas, etc. También selecciona un marco de tiempo más alto del índice de criptomonedas, por defecto a diario. Luego calcula el RSI de la criptomoneda seleccionada y el RSI del índice de criptomonedas, y genera un índice de fuerza relativa basado en su relación. Cuando el índice de fuerza relativa cruza por encima del parámetro especificado, se genera una señal de compra. Cuando cruza por debajo, se genera una señal de venta.
La lógica central es que cuando el RSI de la criptomoneda es más fuerte que el índice de criptomonedas, significa que la moneda está relativamente infravalorada en comparación con el mercado, y tiene el potencial de sobrevalorarse, por lo que puede ser comprada.
La mayor ventaja de esta estrategia es que utiliza el índice de fuerza relativa, que permite una valoración más precisa de las criptomonedas, en lugar de depender únicamente de los indicadores técnicos de una sola moneda para tomar decisiones, evitando la trampa de mirar las cosas de forma aislada.
El índice de fortaleza relativa tiene en cuenta el impacto del entorno general del mercado en las monedas individuales, y puede capturar el ritmo de rotación del mercado y las rotaciones de los sectores, y extraer monedas valiosas del mercado.
Además, la estrategia proporciona múltiples selecciones de índices, que pueden optimizarse para diferentes entornos de mercado para garantizar la eficacia de la estrategia.
El principal riesgo de esta estrategia es que el índice de resistencia relativa es simplemente una herramienta de valoración y no puede evitar por completo los riesgos comerciales derivados de los patrones técnicos de las monedas individuales.
Por ejemplo, si la moneda ha entrado en un patrón de reversión superior obvio de cabeza y hombros, y la estructura del mercado ha cambiado, confiar únicamente en las señales de compra de fuerza relativa podría conducir a pérdidas.
Por lo tanto, la estrategia debe combinar los patrones técnicos de las propias criptomonedas individuales para evitar operaciones desfavorables en puntos técnicos críticos.
Otro riesgo es que si el índice seleccionado es inapropiado y tiene una baja correlación con la criptomoneda, entonces el poder indicador del índice de fuerza relativa se vería en gran medida comprometido.
La estrategia se puede optimizar en los siguientes aspectos:
Agregue estrategias de stop loss para reducir las pérdidas a tiempo cuando los precios se inviertan.
Optimice la selección de índices, empareje diferentes índices para diferentes monedas para aumentar la correlación.
Añadir múltiples combinaciones de marcos de tiempo, como confirmar señales diarias con señales de 4 horas, para aumentar la confiabilidad de la señal.
Añadir algoritmos de aprendizaje automático para determinar adaptativamente el umbral del índice de resistencia relativa, en lugar de usar parámetros fijos.
Incorporar otros indicadores como análisis de sentimiento, análisis fundamental para formar un sistema de valoración más completo.
La estrategia del índice de fortaleza relativa juzga la valoración relativa de las criptomonedas comparando su fortaleza con los índices del mercado y genera señales comerciales. Su ventaja radica en incorporar dimensiones de análisis de mercado y capturar los ritmos del mercado. Pero también tiene riesgos que necesitan optimización, como agregar stop loss, combinaciones de marcos de tiempo, umbral adaptativo, etc. para mejorar el rendimiento. Si se implementa correctamente, esta estrategia puede desempeñar un papel importante en el comercio algorítmico de criptomonedas.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('RSI correlation with cryptoindices [strategy version]', overlay=false) // Testing Start dates testStartYear = input(2016, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false len = input(4, title='length of rsi comparison') correlationcrossover = input(1, title='correlation crossover') IndexSwitch = input.string('CRYPTOCAP:TOTAL2', title='Index selection', options=['CRYPTOCAP:TOTAL2', 'CRYPTOCAP:TOTAL', 'CRYPTOCAP:OTHERS', 'CRYPTOCAP:USDT', 'CRYPTOINDEX:CIX100', 'CRYPTOCAP:BTC.D', 'CRYPTOCAP:BTC']) IndexHTF = input.string('120', title='higher time frame reference index', options=['1', '2', '5', '10', '15', '30', '45', '60', '90', '120', '150', '240', '360', '720', 'D', '3D', 'W', 'M']) switchColor = input(true, 'Color Hull according to trend?') ref = request.security(IndexSwitch, IndexHTF, close[1], lookahead=barmerge.lookahead_on) RSI_ref = ta.rsi(ref, len) RSI_close = ta.rsi(close, len) relative = RSI_ref / RSI_close plot(relative, color=color.new(color.blue, 0)) long = ta.crossover(relative, correlationcrossover) short = ta.crossunder(relative, correlationcrossover) corr = plot(correlationcrossover, color=color.new(color.green, 0), linewidth=1) hullColor = switchColor ? relative > correlationcrossover ? #00ff00 : #ff0000 : #ff9800 //PLOT ///< Frame Fi1 = plot(relative, title='relative', color=hullColor, linewidth=1, transp=50) fill(Fi1, corr, title='Band Filler', color=hullColor, transp=50) if long and testPeriod() strategy.entry("long", strategy.long) if short and testPeriod() strategy.entry("long", strategy.short) // alertcondition(long, title='long', message='long') // alertcondition(short, title='short', message='short')