Más allá de las nubes estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-03 16:10:33
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador de Super Tendencia para ayudar en la colocación de órdenes, y filtra por capas de nubes y colores de velas para colocar órdenes límite para aumentar la rentabilidad.

Estrategia lógica

  1. Calcular el promedio de los precios más altos y más bajos durante el período ATR como referencia.

  2. Calcular las bandas superior e inferior basándose en el multiplicador del factor.

  3. Cuando el cierre esté por encima de la banda superior, marque como 1; por debajo de la banda inferior, marque como -1. De lo contrario, mantenga el estado anterior.

  4. Ajuste dinámico de la línea de stop loss en función de la posición del precio de cierre en relación con las bandas superior/inferior.

  5. Calcular el intervalo de la capa de nubes basándose en un cierto porcentaje del intervalo de banda superior/inferior.

  6. Para largo, necesidad de cerrar < abierto cuando la Super Tendencia es 1.

  7. Poner órdenes de compra de límite en el precio de cierre de barras anteriores para largo.

  8. Filtrar por rango de tiempo, cerrar todas las posiciones disponibles.

Análisis de ventajas

Esta estrategia combina el concepto de Super Trend y la nube, lo que permite capturar rápidamente la tendencia después de que comience la tendencia.

  1. Super Tendencia es sensible y sigue las tendencias con fuerza.

  2. El filtro de las capas de nube reduce las pérdidas de las falsas fugas.

  3. El color del candelabro ayuda a evitar inversiones.

  4. Las órdenes de límite disminuyen el impacto del deslizamiento y aumentan la tasa de ganancia.

  5. El intervalo de tiempo y la gestión de posiciones personalizables se adaptan a diferentes necesidades comerciales.

Análisis de riesgos

También hay algunos riesgos a tener en cuenta:

  1. Los parámetros incorrectos de la Super Tendencia pueden causar demasiada sensibilidad y golpes.

  2. Un rango de nubes excesivo puede filtrar las señales válidas de ruptura, lo que afecta a la rentabilidad.

  3. Las órdenes de límite pueden no llenarse durante la alta volatilidad, oportunidades perdidas.

  4. Ningún stop loss puede evitar completamente el riesgo sistémico y las enormes pérdidas.

  5. Los posiciones más grandes también amplifican las pérdidas.

Direcciones de optimización

Esta estrategia puede mejorarse en los siguientes aspectos:

  1. Prueba de diferentes mercados e instrumentos para obtener parámetros óptimos de Super Trend.

  2. Ajustar dinámicamente el nivel de stop loss en función de la volatilidad del mercado.

  3. Optimizar el alcance de la nube para equilibrar el filtrado de ruido y la retención de señal.

  4. Añadir un módulo de dimensionamiento de posiciones a las posiciones de dimensionamiento dinámico basado en las condiciones del mercado.

  5. Utilice diferentes conjuntos de parámetros para diferentes sesiones de negociación para adaptarse a los ritmos del mercado.

  6. Eficacia del ensayo cuando se combina con otros indicadores.

Conclusión

En conclusión, esta estrategia tiene una lógica clara y una ventaja obvia en la captura de tendencias. Pero ninguna estrategia puede evitar completamente los riesgos sistémicos. Necesita controlar el tamaño de las posiciones, mantener la optimización para minimizar los riesgos en el comercio en vivo y maximizar la ventaja. Esta estrategia tiene un gran potencial para nuevas pruebas y mejoras para adaptarse a la dinámica cambiante del mercado.


/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v2.0 Limit", shorttitle = "STL str", overlay = true, 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, 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")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = 0.0
dn = 0.0
up := Trend != 1 ? 0 : Trend == 1 and close < open ? close : up[1]
dn := Trend != -1 ? close * 1000 : Trend == -1 and close > open ? close : dn[1]

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if true
    strategy.entry("Long", strategy.long, needlong ? lot : 0, limit = up, when = (Trend == 1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort ? lot : 0, limit = dn, when = (Trend == -1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Más.