
Se trata de una estrategia de negociación personalizada que combina el índice de dinámica y la filtración de entidades de la línea K. Utiliza el índice de dinámica aleatoria, el RSI rápido y los tres indicadores técnicos de filtración de entidades de la línea K para lograr una ruptura de dinámica principal, al tiempo que considera la estrategia de sobrecompra y sobreventa.
La estrategia utiliza los siguientes tres indicadores para evaluar las señales de negociación:
El índice de dinámica aleatoria (SMI): combina la distancia entre las entidades de la línea K y la posición relativa de los precios de cierre para determinar si la dinámica de los precios es fuerte o débil. Cuando se cruza la línea de límite en el SMI, se genera una señal de compra, y cuando se cruza la línea de límite, se genera una señal de venta.
RSI rápido ((línea de 7 días): determina el estado de sobreventa y sobreventa del precio. Cuando el RSI está por debajo de 20 genera una señal de compra para la sobreventa, y cuando está por encima de 80 genera una señal de venta para la sobreventa.
Filtración de entidades de línea K: calcula el tamaño promedio de entidades de línea K en 10 días, y es válido cuando las entidades de línea K de hoy superan un tercio de ese promedio, evitando la señal de invalidez.
Esta estrategia primero juzga la señal de SMI y RSI, y si cumple con los requisitos de señal de uno de los indicadores, luego determina si la señal es válida en combinación con el filtro de la entidad de la línea K, y si es válida, genera una señal de negociación.
La estrategia tiene las siguientes ventajas:
La combinación de varios indicadores permite un juicio más preciso y confiable.
Aumentar el filtro de entidad de la línea K para evitar señales no válidas.
La combinación de los juicios de sobrecompra y sobreventa hace que sea más fácil captar señales en los puntos de inflexión de tendencias.
La mayor cantidad de transacciones bidireccionales aumenta las oportunidades de ganancias.
El uso de posiciones de negociación parciales para evitar pérdidas excesivas en una sola transacción.
La estrategia también tiene sus riesgos:
Los indicadores son propensos a generar señales erróneas que causan pérdidas. Se puede reducir la señal errónea mediante la optimización de los parámetros.
Algunas posiciones de trading no pueden aprovechar las oportunidades de tendencia en cada dirección. Se puede obtener un mayor rendimiento al ampliar las posiciones de trading.
El SMI, como indicador principal, es sensible a la configuración de los parámetros, y una configuración incorrecta puede perder oportunidades de negociación o aumentar la señal errónea.
Las transacciones de dos vías son múltiples, las operaciones son frecuentes y los costos de las transacciones aumentan.
Esta estrategia puede ser optimizada en las siguientes direcciones:
Optimización de los parámetros de SMI y RSI para encontrar la combinación óptima de parámetros.
Aumentar la amplificación de posiciones y el mecanismo de gestión de posiciones para obtener mayores ganancias en la tendencia.
Aumentar las estrategias de stop loss y reducir el riesgo de pérdidas individuales.
La combinación de más indicadores para determinar la confiabilidad de la señal, reduce las señales falsas.
La adopción de contratos eficientes para reducir los costos de las transacciones.
La estrategia utiliza tres indicadores técnicos para filtrar el SMI, el RSI rápido y la línea K. Para lograr una estrategia de negociación personalizada basada en el dinamismo, que tenga en cuenta el exceso de compra y venta. Tiene ventajas como el juicio preciso, la identificación de señales efectivas, la combinación de compras y ventas excesivas y operaciones con exceso de espacio, pero también hay algunos riesgos de sensibilidad a los parámetros, no puede aprovechar al máximo las tendencias y operar con frecuencia. A través de la optimización continua de la configuración de parámetros, aumentar la posición y la gestión de stop loss, reducir las señales erróneas, etc., la estrategia puede obtener mejores resultados comerciales.
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Stochastic Strategy v1.2", shorttitle = "Stochastic str 1.2", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usesmi = input(true, defval = true, title = "Use SMI Strategy")
usersi = input(true, defval = true, title = "Use RSI Strategy")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(5, "SMI Percent K Length")
b = input(3, "SMI Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
fromyear = input(2017, defval = 2017, 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(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,b),b)
avgdiff = ema(ema(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)
//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Signals
up1 = SMI < -1 * limit and close < open and body and usesmi
dn1 = SMI > limit and close > open and body and usesmi
up2 = fastrsi < 20 and close < open and body and usersi
dn2 = fastrsi > 80 and close > open and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if up1 or up2
if strategy.position_size < 0
strategy.close_all()
strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 or dn2
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()