Estrategia de cobertura de alta frecuencia basada en el color de la barra MACD y la regresión lineal

El autor:¿ Qué pasa?, Fecha: 2023-10-27 10:42:54
Las etiquetas:

img

Resumen general

Esta estrategia combina el color de la barra MACD y los indicadores de regresión lineal para lograr una negociación de reversión de alta frecuencia, que es especialmente adecuada para el arbitraje y la cobertura a corto plazo.

Estrategia lógica

La estrategia consta de los siguientes componentes principales:

  1. Cuando el color de la barra MACD es verde, indica una tendencia al alza, por lo que no se deben colocar órdenes cortas. Cuando la barra MACD es roja, indica una tendencia a la baja, por lo que no se deben colocar órdenes largas.

  2. Regresión lineal como el indicador clave de la señal de negociación. Ir largo cuando el precio cruza por encima de la línea de regresión lineal y ir corto cuando el precio cruza por debajo de la línea.

  3. Canal PAC formado por la EMA de precios altos, bajos y cerrados para determinar la dirección de la línea de regresión lineal.

  4. EMA 89 como la línea de stop loss. Cierre las posiciones cuando el precio cruza de nuevo por encima de esta línea.

La lógica de las señales comerciales es:

Señal largo: la regresión lineal cruza la banda inferior del PAC Y la regresión lineal está inclinada hacia arriba Y la barra MACD no es roja.

Señal corto: la regresión lineal se cruza por debajo de la banda superior PAC Y la regresión lineal está inclinada hacia abajo Y la barra MACD no es verde.

Señal de salida: el precio cruza por debajo de la EMA 89.

Esta estrategia combina el juicio de tendencia y los niveles clave de precios para lograr operaciones de cobertura de alta frecuencia.

Análisis de ventajas

  1. El color de la barra MACD ayuda a determinar la tendencia principal y evita el comercio en contra de la tendencia.

  2. La regresión lineal es suave y filtra el ruido.

  3. El canal EMA define claramente el sesgo alcista/bajista.

  4. El stop loss se establece razonablemente para maximizar las ganancias.

  5. La alta frecuencia de negociación lo hace adecuado para el comercio algorítmico.

  6. Logran operaciones de cobertura y pueden beneficiarse de mercados de rango.

Análisis de riesgos

  1. Los parámetros de regresión lineal y el canal necesitan optimización, de lo contrario pueden fallar.

  2. El stop loss puede activarse con frecuencia durante grandes oscilaciones de precios.

  3. La alta frecuencia del comercio significa que los costos de transacción pueden ser sustanciales.

  4. El MACD tiene un cierto retraso y puede perder inversiones de tendencia a corto plazo.

  5. Los canales de la EMA también necesitan una optimización continua para adaptarse a las condiciones cambiantes del mercado.

Direcciones de optimización

  1. Ajustar la regresión lineal y los parámetros del canal para adaptarse mejor a los diferentes instrumentos.

  2. Ampliar el rango de stop loss manteniendo la relación beneficio/riesgo por encima de 1.

  3. Optimice los parámetros MACD para capturar más señales a corto plazo.

  4. Pruebe otros indicadores para reemplazar la regresión lineal, como las bandas de Bollinger.

  5. Añadir dimensionamiento de la posición para evitar pérdidas excesivas de un solo sentido.

  6. Incorpore otros indicadores como el RSI para filtrar algunas señales comerciales.

Conclusión

Esta estrategia combina múltiples indicadores técnicos para lograr el comercio de cobertura de alta frecuencia. Su fortaleza radica en la captura de inversiones a corto plazo con controles de riesgo razonables, lo que la hace muy adecuada para las condiciones de mercado de rango. Al mismo tiempo, se necesitan ciertas optimizaciones y mejoras de parámetros para evitar el sobreajuste. Con una gestión adecuada, puede convertirse en una estrategia de comercio de alta frecuencia muy práctica.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop) 

Más.