
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.
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:
El histograma MACD se vuelve en rojo (Enter múltiple) y se vuelve en verde (Enter en blanco)
Entrar en blanco cuando el precio está cerca de la base del canal y el MACD está por debajo del eje cero
El precio está cerca de la cima del canal y el MACD está por encima del eje cero
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.
Verificación combinada de varios indicadores para evitar falsas brechas
Combinación de indicadores de diferentes marcos de tiempo para determinar mejor la dirección de la tendencia
Introducción de un mecanismo de suspensión de pérdidas para el control efectivo de las pérdidas individuales
Optimización de parámetros con espacio limitado y fácil optimización excesiva
La configuración de los parámetros del canal de precios es demasiado baja, lo que hace que se pierda mucho.
Los puntos de parada son demasiado pequeños y se sufrirán grandes pérdidas.
La solución:
Utiliza el método de “walk forward” para evitar la optimización de los parámetros
Configuración de los parámetros de la vía de precios como parámetros de adaptación
Introducción de la pérdida de fluctuación para ajustar dinámicamente la distancia de pérdida
Optimización de la combinación de parámetros MACD
Cálculo autoadaptativo de los parámetros de la vía de optimización de precios
Añadir más condiciones de filtración para evitar falsas brechas y aumentar la eficiencia
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.
/*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)