Estrategia de ruptura rápida del índice Powell


Fecha de creación: 2023-10-24 11:51:56 Última modificación: 2023-10-24 11:51:56
Copiar: 0 Número de Visitas: 628
1
Seguir
1617
Seguidores

Estrategia de ruptura rápida del índice Powell

Descripción general

La estrategia se basa en el indicador RSI y la entidad de silicio EMA para realizar operaciones de ruptura rápida. Utiliza la forma rápida del RSI y la entidad de silicio grande para identificar señales de reversión.

Principio de estrategia

  1. Calcula el indicador RSI, ciclo 7, con RMA para lograr la forma de aceleración.

  2. Calcula el EMA del tamaño de la entidad, ciclo 30, como referencia del tamaño de la entidad.

  3. Si el RSI cruza el límite (default 30), y la entidad de la línea K actual es mayor que el tamaño promedio de la entidad 14, haga más.

  4. Si el RSI está por debajo del límite de penetración (default 70), y la entidad de la línea K actual es mayor que el tamaño promedio de la entidad 14, hacer un vacío.

  5. Si ya está posicionado, el RSI vuelve a cerrar la posición al cruzar el límite.

  6. Se puede configurar la longitud del RSI, el límite, el precio de referencia, etc.

  7. Se pueden configurar parámetros como el tamaño de la entidad, el ciclo EMA, el multiplicador de chroot de almacenaje, etc.

  8. Se puede configurar el número de raíces de la horca de oro/horca muerta del RSI.

Análisis de las ventajas

  1. El indicador RSI utiliza las propiedades de reversión para capturar las señales de reversión en el momento oportuno.

  2. La RMA implementa una forma de aceleración del RSI que hace que la reversión sea más sensible.

  3. En combinación con un filtro de entidad de línea K de gran tamaño, evita el arbitraje de la oscilación de pequeño alcance.

  4. Los datos de detección son abundantes y de alta fiabilidad.

  5. Los parámetros se pueden personalizar para adaptarse a diferentes entornos de mercado.

  6. La lógica de la transacción es clara y sencilla.

Análisis de riesgos

  1. El indicador RSI tiene un desvío de retroalimentación, el efecto en el disco duro está por ser verificado.

  2. Las grandes entidades de línea K no pueden filtrar completamente los mercados convulsionados.

  3. Los parámetros por defecto pueden no ser adecuados para todas las variedades y necesitan ser optimizados.

  4. La probabilidad de éxito puede ser baja, y la presión psicológica de una pérdida continua es necesaria.

  5. El riesgo de fracaso de la brecha debe detenerse en el momento oportuno.

Dirección de optimización

  1. Optimización de los parámetros del RSI para adaptarse a diferentes ciclos y variedades.

  2. Optimización del ciclo EMA de la entidad de la línea K, y del tamaño de la entidad de la línea plana.

  3. Optimización de los multiplicadores reales de las posiciones abiertas y control de la frecuencia de entrada.

  4. Aumentar la pérdida móvil y garantizar la ganancia.

  5. Aumentar el filtro de tendencias y evitar el comercio en contra.

  6. Optimizar las estrategias de gestión de fondos y controlar el riesgo individual.

Resumir

La estrategia en su conjunto es una estrategia de reversión muy simple y directa. Utiliza al mismo tiempo la reversión de los indicadores RSI y el poder destructivo de las grandes entidades de la línea K para entrar rápidamente en el mercado en caso de una ruptura.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()