La estrategia identifica las oportunidades de entrada en la línea larga a través del indicador SuperTrend. Utiliza el ATR medio real y el multiplicador para determinar el soporte dinámico y entrar en posiciones largas. La estrategia se centra en las oportunidades de negociación en posiciones largas.
Las subidas y bajadas se calculan según el ciclo y el multiplicador de ATR. Cuando el precio se eleva, se sube, y cuando se baja, se baja.
Para calcular la tendencia actual, 1 representa un alza, -1 representa una bajada. Cuando el precio rompe la vía ascendente, la tendencia gira hacia abajo, lo que desencadena una señal de compra; cuando rompe la vía descendente, la tendencia gira hacia abajo, lo que desencadena una señal de venta.
Combinando las medias móviles como filtro de tendencia, se requiere un precio superior a la MA para comprar cuando se rompe la vía ascendente y un precio inferior a la MA para vender cuando se rompe la vía descendente, para evitar falsas rupturas.
Visualizar las tendencias de las marcas de asistencia, las señales de negociación, etc., para ayudar a juzgar.
La estrategia tiene las siguientes ventajas:
El uso de indicadores SuperTrend permite el seguimiento dinámico de los cambios en los precios y la reflexión de los cambios de tendencia en tiempo real.
El método de ATR puede ajustar el stop loss según las fluctuaciones del mercado, lo que es beneficioso para bloquear las ganancias.
Combinado con la eliminación de brechas falsas de MA, puede filtrar eficazmente el ruido de las señales de comercio de los mercados de turbulencias.
El diseño visual muestra las estrategias de negociación y la situación del mercado de forma intuitiva y sencilla de usar.
El punto de inflexión de la tendencia es muy adecuado para mantener posiciones en la línea larga.
El principal riesgo de esta estrategia es:
Los indicadores SuperTrend son sensibles a los parámetros y se ajustan con frecuencia en múltiples líneas aéreas, lo que puede ocasionar operaciones frecuentes.
En caso de temblor, la línea de parada se activa con frecuencia.
Sin tener en cuenta el costo de la transacción, los fondos pequeños se ven más afectados por los costos de la transacción.
No hay un stop loss y el riesgo de retiro es mayor.
La ola de tendencia puede haber perdido algunas oportunidades.
El riesgo puede reducirse de la siguiente manera:
Optimización de los parámetros ATR para reducir la frecuencia de ajuste de múltiples líneas aéreas.
Aumentar el filtro de la línea K equivalente para evitar el deterioro de las ondas de alta frecuencia.
Establezca un Stop Loss para proteger las ganancias.
Ajuste adecuado de la media móvil para equilibrar el efecto de filtración.
Optimización de la gestión de fondos y reducción de los costos de transacción.
La estrategia puede ser optimizada en los siguientes aspectos:
Prueba diferentes fuentes de precios, como el precio de cierre, el precio más alto, etc.
Pruebe con otros indicadores de stop loss dinámicos, como el de la salida de Chandelier.
Aumentar el módulo de gestión de posiciones y optimizar la eficiencia del uso de fondos.
El tiempo de entrada refinado en combinación con el indicador de volatilidad.
Añadir módulos de stop loss y de suspensión para controlar el riesgo.
Parámetros de ajuste para diferentes mercados.
Explorar algoritmos de aprendizaje automático para la optimización de parámetros.
Combinación de otros indicadores para mejorar la precisión del filtrado.
La estrategia utiliza SuperTrend para integrar el stop loss dinámico para determinar la tendencia, y se complementa con MA para filtrar la tendencia para identificar el momento de compra de la línea larga. El diseño visual simplifica la operación. A través de la optimización de la configuración de parámetros y la extensión de funciones, puede convertirse en una estrategia de negociación de línea larga estable y fiable.
/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 999)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
strategy.close("BUY")
strategy.entry("SELL", strategy.short, when = window())
buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)