Estrategia de trading multi-temporal basada en canales de precios y MACD


Fecha de creación: 2023-12-08 15:15:37 Última modificación: 2023-12-08 15:15:37
Copiar: 0 Número de Visitas: 616
1
Seguir
1621
Seguidores

Estrategia de trading multi-temporal basada en canales de precios y MACD

Descripción general

La estrategia combina el indicador de canal de precios y el indicador MACD para permitir el seguimiento de tendencias y el juicio de sobreventa y sobreventa en múltiples marcos de tiempo, para tomar decisiones de compra y venta. La estrategia combina al mismo tiempo un stop loss para administrar el riesgo.

Principio de estrategia

El indicador de canal de precios construye un canal de precios basado en la línea media EMA de los precios más altos y más bajos, para juzgar la tendencia a través de la ruptura del canal de precios; el indicador MACD juzga la tendencia a la pluralidad de aire, por encima del eje cero es el mercado de múltiples cabezas, por debajo es el mercado de cabezas vacías.

Las señales de negociación de esta estrategia provienen de los siguientes aspectos:

  1. El histograma MACD se vuelve en rojo (Enter múltiple) y se vuelve en verde (Enter en blanco)

  2. Entrar en blanco cuando el precio está cerca de la base del canal y el MACD está por debajo del eje cero

  3. El precio está cerca de la cima del canal y el MACD está por encima del eje cero

  4. En el MACD, el eje cero se mueve hacia arriba y hacia abajo. En el MACD, el eje cero se mueve hacia abajo.

La señal de salida proviene de la configuración de parada de pérdidas.

Ventajas estratégicas

  1. Verificación combinada de varios indicadores para evitar falsas brechas

  2. Combinación de indicadores de diferentes marcos de tiempo para determinar mejor la dirección de la tendencia

  3. Introducción de un mecanismo de suspensión de pérdidas para el control efectivo de las pérdidas individuales

Riesgo estratégico

  1. Optimización de parámetros con espacio limitado y fácil optimización excesiva

  2. La configuración de los parámetros del canal de precios es demasiado baja, lo que hace que se pierda mucho.

  3. Los puntos de parada son demasiado pequeños y se sufrirán grandes pérdidas.

La solución:

  1. Utiliza el método de “walk forward” para evitar la optimización de los parámetros

  2. Configuración de los parámetros de la vía de precios como parámetros de adaptación

  3. Introducción de la pérdida de fluctuación para ajustar dinámicamente la distancia de pérdida

Dirección de optimización de la estrategia

  1. Optimización de la combinación de parámetros MACD

  2. Cálculo autoadaptativo de los parámetros de la vía de optimización de precios

  3. Añadir más condiciones de filtración para evitar falsas brechas y aumentar la eficiencia

Resumir

La estrategia integra las ventajas del indicador de canal de precios y el indicador MACD, la configuración de parámetros razonables y el espacio de optimización son grandes, el juicio de tendencia y el juicio de sobreventa son mejores, el mecanismo de parada de pérdidas controla el riesgo de pérdidas individuales, es una estrategia de negociación más estable. Se puede mejorar posteriormente en términos de optimización de parámetros, adición de condiciones de filtración y optimización del mecanismo de parada de pérdidas.

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

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
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 )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.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)