Estrategia a corto plazo de seguimiento de oscilaciones

El autor:¿ Qué pasa?, Fecha: 2024-01-18 16:29:34
Las etiquetas:

img

Resumen general

Esta estrategia utiliza los cambios en los precios más altos y más bajos de las líneas K para juzgar la dirección e intensidad de la oscilación del mercado, y combina la media móvil para juzgar la tendencia general para implementar operaciones a corto plazo.

Principio de la estrategia

Esta estrategia primero juzga los cambios en los precios más altos y más bajos de las líneas K en relación con la línea K anterior. Si el precio más alto sube, se registra como 1. Si el precio más bajo cae, se registra como -1, de lo contrario se registra como 0. Luego, calcula el valor medio de los cambios en los precios más altos y más bajos dentro de un determinado ciclo para juzgar la dirección e intensidad de la oscilación del mercado.

Al mismo tiempo, la estrategia registra los precios más altos y más bajos en el ciclo más reciente.

La dirección de entrada está determinada por la media móvil. Ir largo por encima del carril superior y ir corto por debajo del carril inferior. Los niveles de stop loss y take profit se forman al juzgar los niveles clave de precios.

Análisis de ventajas

La mayor ventaja de esta estrategia es hacer pleno uso de las características de las fluctuaciones a corto plazo para obtener ganancias. Al determinar el stop loss y tomar ganancias en función de los niveles clave de precios, la estrategia se ejecuta bajo reglas claras. Al mismo tiempo, combina el juicio de tendencia para filtrar los mercados desfavorables y evitar pérdidas innecesarias.

Análisis de riesgos

Los principales riesgos a los que se enfrenta esta estrategia son:

  1. No hay ganancias si el mercado no fluctúa.

  2. Pérdidas innecesarias causadas por precios que superan el nivel de stop loss.

  3. El juicio erróneo de la tendencia puede perder oportunidades o hacer operaciones en la dirección opuesta.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Ajustar el ciclo de la media móvil para adaptarlo a las características de las diferentes variedades.

  2. Optimizar el intervalo de stop profit y stop loss para equilibrar las ganancias y pérdidas.

  3. Añadir otros indicadores para el juicio para evitar operaciones incorrectas.

  4. Añadir pérdida de parada automática para controlar la pérdida máxima.

Resumen de las actividades

En general, esta estrategia es una que aprovecha las fluctuaciones a corto plazo. Hace pleno uso de los pequeños movimientos de precios para obtener ganancias. Al mismo tiempo, controla estrictamente los riesgos y reduce las pérdidas de manera oportuna cuando la tendencia es desfavorable. Es adecuado para los inversores que buscan rendimientos estables con una actitud relativamente prudente. Con los ajustes de parámetros apropiados, puede lograr buenos resultados en mercados fluctuantes.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-16 22:45:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's ZZ-3 Strategy", shorttitle = "ZZ-3 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 = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
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")

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if uplevel > 0 and dnlevel > 0 and revers == true
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = uplevel, when=(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.