Estrategia de cruce lineal de posiciones cortas y largas


Fecha de creación: 2024-03-27 17:52:02 Última modificación: 2024-03-27 17:52:02
Copiar: 0 Número de Visitas: 576
1
Seguir
1617
Seguidores

Estrategia de cruce lineal de posiciones cortas y largas

Descripción general

La estrategia de cruce lineal múltiple es una estrategia de análisis técnico que se basa en un modelo de regresión lineal para predecir el movimiento futuro de los precios de las acciones. El principio básico de la estrategia es que el movimiento de los precios de las acciones suele seguir una cierta tendencia lineal y, mediante el cálculo de la regresión lineal de los precios, se puede predecir el precio futuro.

Principio de estrategia

La estrategia primero calcula la regresión lineal del precio de las acciones durante un período de tiempo. La regresión lineal utiliza el mínimo de la multiplicadora para formar una línea recta que representa la tendencia de los cambios de precio a lo largo del tiempo. La estrategia luego traza una línea de precios de pronóstico y el precio actual en el gráfico.

La estrategia define dos señales:

  1. Hacer una señal múltiple: se activa cuando el precio de la previsión está sobre el precio actual
  2. La señal de vacío: se activa cuando el precio previsto se desvía del precio actual.

Cuando aparezca una señal de hacer más, la estrategia abrirá una posición para hacer más; cuando aparezca una señal de hacer menos, la estrategia cerrará la posición.

Los pasos clave de la estrategia son los siguientes:

  1. Cálculo de la regresión lineal del precio en un período de tiempo
  2. Dibujar en un gráfico las líneas de precios previstas y los precios actuales
  3. Definición de señales de hacer más y hacer menos
  4. Hacer más posiciones cuando se dispara una señal
  5. La señal de despeje se activa para hacer la posición libre.

Análisis de las ventajas

Las estrategias de cruce lineal multifásico tienen las siguientes ventajas:

  1. Simple y eficaz: La estrategia tiene una lógica clara, es fácil de implementar y capta tendencias lineales en los precios.
  2. Amplia aplicabilidad: las estrategias pueden generar señales de negociación tanto en situaciones de tendencia como en situaciones de crisis.
  3. Optimizabilidad: Las estrategias contienen algunos parámetros clave, como el ciclo de regresión lineal, la media móvil, etc., que pueden mejorar la performance de la estrategia mediante la optimización de estos parámetros.

Análisis de riesgos

A pesar de las ventajas de la estrategia de cruce lineal multiespacial, también tiene algunos riesgos:

  1. Riesgo de identificación de tendencias: cuando el movimiento de los precios no sigue una tendencia lineal, por ejemplo, una tendencia de oscilación, la estrategia puede generar una señal errónea. Se puede reducir el riesgo mediante la combinación de otros indicadores, como el MACD.
  2. Riesgo de configuración de parámetros: la estrategia es sensible a la configuración de parámetros, los parámetros incorrectos pueden causar pérdidas. Por lo tanto, se requiere una adecuada revisión y optimización de los parámetros antes de la puesta en marcha.
  3. Riesgo de sobreajuste: si se optimiza demasiado los parámetros, puede ocasionar que las estrategias sobreajusten los datos históricos y tengan un mal desempeño en el futuro. Los métodos para evitar el sobreajuste incluyen mantenerlo simple, pruebas fuera del conjunto de datos, etc.

Dirección de optimización

  1. Combinación con otros indicadores: la señal de regresión lineal puede combinarse con otros indicadores técnicos como MACD, Brinband, etc., para mejorar la precisión de la señal.
  2. Optimización de parámetros dinámicos: se puede diseñar un mecanismo de adaptación de un conjunto de parámetros, ajustando los parámetros dinámicamente según las condiciones del mercado para mejorar la adaptabilidad.
  3. Incorporar un módulo de control de riesgo: Incorporar medidas de control de riesgo en la estrategia, como el control de pérdidas y la gestión de fondos, para reducir el riesgo de una sola operación y aumentar los beneficios acumulados.
  4. Optimización del aprendizaje automático: los algoritmos de aprendizaje automático pueden optimizar continuamente los modelos de regresión lineal para que sus predicciones sean más precisas.

Resumir

La estrategia de cruce lineal multifásico se basa en la regresión lineal del precio para generar señales de negociación mediante la comparación de precios y precios actuales. La lógica de la estrategia es simple y clara, puede capturar tendencias lineales en los precios y se aplica a todo tipo de situaciones. Al mismo tiempo, la estrategia es fácil de implementar y optimizar, puede ajustar los parámetros de forma flexible, combinar otros indicadores, agregar módulos de control de riesgo, etc., para mejorar continuamente el rendimiento de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)