Esta estrategia utiliza el indicador Distance Close Bars (DCB) para determinar la tendencia de precios y el indicador RSI rápido como filtro, implementa el stop loss de seguimiento para la tendencia después de la negociación. También utiliza el principio de martingale para el tamaño de la posición. Adecuado para la negociación de tendencias a mediano y largo plazo.
Calcular el lastg y el lastr que representan el cierre de la última barra verde y el cierre de la última barra roja.
Calcular dist como la diferencia entre lastg y lastr.
Calcular el adist como SMA de 30 períodos de dist.
Generar una señal comercial cuando dist es mayor que 2 veces adist.
Utilice el indicador RSI rápido para filtrar la señal, evitando una falsa ruptura.
Entrar en operaciones a un porcentaje fijo del capital si la señal no presenta ninguna posición.
Martingale para escalar después de la pérdida.
Posición cerrada cuando se activa el stop loss o el take profit.
El indicador DCB refleja eficazmente las tendencias a medio y largo plazo.
El filtro RSI rápido evita las pérdidas por fallas.
El trailing stop bloquea los beneficios y controla los riesgos.
Martingale aumenta la posición después de la pérdida para obtener un mayor beneficio.
Los parámetros razonables se adaptan a los diferentes entornos del mercado.
DCB puede generar señales equivocadas, necesita otros filtros.
Martingale puede amplificar las pérdidas, requiere una estricta gestión de riesgos.
La configuración incorrecta de stop loss puede llevar a pérdidas excesivas.
El tamaño de las posiciones debe limitarse para evitar el exceso de apalancamiento.
Las configuraciones incorrectas del contrato pueden llevar a una gran pérdida en el mercado extremo.
Optimice los parámetros del DCB para la mejor combinación.
Pruebe otros indicadores para reemplazar el filtro RSI rápido.
Optimice el stop loss y tome ganancias para una mayor tasa de ganancias.
Optimice los parámetros de Martingale para reducir el riesgo.
Prueba en diferentes productos para una mejor asignación de activos.
Utilice el aprendizaje automático para optimizar dinámicamente los parámetros.
Esta es una estrategia general de seguimiento de tendencia madura. DCB determina la dirección de la tendencia y filtra rápidamente las señales RSI para evitar entradas incorrectas. Stop loss and take profit controla efectivamente la pérdida de una sola operación. Pero todavía hay riesgos, los parámetros necesitan una mayor optimización para reducir el riesgo y mejorar la estabilidad. La lógica es clara y fácil de entender, adecuada para los traders de tendencia a medio y largo plazo.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Distance Strategy v1.0", shorttitle = "Distance str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(true, defval = true, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") usersi = input(true, defval = true, title = "Use RSI-Filter") periodrsi = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limitrsi = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit") 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(close), 0), periodrsi) fastdown = rma(-min(change(close), 0), periodrsi) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Distance bar = close > open ? 1 : close < open ? -1 : 0 lastg = bar == 1 ? close : lastg[1] lastr = bar == -1 ? close : lastr[1] dist = lastg - lastr adist = sma(dist, 30) plot(lastg, linewidth = 3, color = lime) plot(lastr, linewidth = 3, color = red) up = bar == -1 and dist > adist * 2 dn = bar == 1 and dist > adist * 2 //RSI Filter rsidn = fastrsi < limitrsi or usersi == false rsiup = fastrsi > 100 - limitrsi or usersi == false //Signals up1 = up and rsidn dn1 = dn and rsiup exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) //Arrows plotarrow(up1 ? 1 : na, colorup = blue, colordown = blue) plotarrow(dn1 ? -1 : na, colorup = blue, colordown = blue) //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] signalup = up1 if signalup 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))) signaldn = dn1 if signaldn 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()