Estrategia de trading con backtesting del centro de gravedad


Fecha de creación: 2023-12-12 16:56:51 Última modificación: 2023-12-12 16:56:51
Copiar: 0 Número de Visitas: 677
1
Seguir
1621
Seguidores

Estrategia de trading con backtesting del centro de gravedad

Descripción general

La estrategia de retracción de peso es una estrategia de negociación basada en promedios móviles. Calcula la posición central de la barra de precios, la posición del centro de peso, y construye un canal de precios como un corredor para la cotización del activo. La estrategia se puede modificar en la configuración de entrada para hacer más y hacer menos.

Principio de estrategia

La estrategia calcula la posición del centro de gravedad a través de la función de regresión lineal. En concreto, calcula el valor de regresión lineal del precio de cierre del ciclo de longitud, es decir, el centro de la curva de precio. Luego, sobre esta base, se mueve hacia arriba y hacia abajo el porcentaje% para construir un canal de precio. Los límites inferiores en el canal de precio actúan como señales de plus y de baja, respectivamente.

Análisis de las ventajas

Se trata de una estrategia muy sencilla, con ventajas como:

  1. La idea es clara y la implementación es fácil de entender.
  2. Los resultados de las respuestas fueron positivos, con una cierta viabilidad en combate.
  3. La configuración de los parámetros es flexible y puede adaptarse a diferentes entornos de mercado mediante el ajuste de los parámetros.
  4. Se puede configurar el modo de reversión para un funcionamiento bidireccional.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Puede haber riesgos de sobreadaptación en el proceso de retroalimentación. Los parámetros en el disco físico necesitan ser re-optimizados.
  2. El fracaso de la brecha puede causar grandes pérdidas.
  3. La frecuencia de las transacciones puede ser alta, por lo que es necesario controlar el uso de los fondos.

Se puede controlar el riesgo ajustando los parámetros Bands, Length, etc. También se puede configurar un stop loss para limitar la pérdida máxima.

Dirección de optimización

La estrategia puede ser optimizada aún más:

  1. La combinación de indicadores de tendencia filtra las señales y evita el comercio en contra.
  2. Aumentar el mecanismo de detención de pérdidas.
  3. Optimización de la configuración de los parámetros para mejorar la rentabilidad.
  4. Aumentar el control de la posición y reducir el riesgo.

Resumir

La estrategia de trading de retracción de foco es una estrategia de ruptura simple. Tiene un pensamiento claro, una gran capacidad de acción y un ajuste de parámetros flexible. Al mismo tiempo, existe un cierto riesgo que requiere un control de optimización adecuado.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/03/2018
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Center Of Gravity Backtest", shorttitle="CFO", overlay = true)
Length = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)
xLG2r = xLG + ((close * Percent) / 100) * 2
xLG2s = xLG - ((close * Percent) / 100) * 2
xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
pos = iff(close > xSignalR, 1,
       iff(close < xSignalS, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLG, color=blue, title="CFO")
plot(xLG1r, color=green, title="LG1r")
plot(xLG2r, color=green, title="LG2r")
plot(xLG1s, color=red, title="LG1s")
plot(xLG2s, color=red, title="LG2s")