Esta estrategia se basa en la ruptura del canal y utiliza el cruce de la media móvil como señal de salida.
Calcular el máximo máximo y el mínimo mínimo durante ciertos períodos para construir el canal superior e inferior.
Ir largo cuando el precio se rompe por encima del canal superior; ir corto cuando el precio se rompe por debajo del canal inferior.
Calcular las líneas SMA rápidas y lentas.
Si es largo, cierre largo cuando el SMA rápido cruza por debajo del SMA lento; Si es corto, cierre corto cuando el SMA rápido cruza por encima del SMA lento.
La combinación del canal y del sistema de promedios móviles puede mejorar la rentabilidad.
El canal juzga la rotación y el SMA juzga el agotamiento de la tendencia.
El filtro SMA evita las flechas y reduce las operaciones innecesarias.
El rango de canales ajustable se adapta a diferentes períodos y volatilidad.
Un rango de canal inadecuado puede fallar o generar un fallo.
Los parámetros de SMA incorrectos pueden salir temprano o tarde.
Necesita un tamaño razonable de posición para limitar la pérdida única.
Esté atento a las fugas válidas, evite perseguir al alza/vender bajo.
Parámetros de ensayo para optimizar el rango de canales y los períodos SMA.
Añadir filtro de tendencia para mejorar la tasa de éxito de la ruptura.
Añadir dimensionamiento de posición como fracción fija y Martingale.
Añadir un stop loss para controlar una sola pérdida.
Esta estrategia capitaliza en el canal y la SMA para lograr ganancias constantes en tendencias fuertes. Pero las pérdidas de la sierra deben evitarse y el tamaño de la posición es crítico.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-13 00:00:00 period: 1m basePeriod: 1m 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/ // © anshuanshu333 //@version=4 // strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000) length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7) fastSMA = sma(close,9) slowSMA = sma(close,21) upBound = highest(high, length) downBound = lowest(low, length) boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open) boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open) u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1) l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1) plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2) plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1) fill(u,l, transp=95) plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1) if (boundLongEntry ) strategy.entry("LE", long = true) if (boundShortEntry) strategy.entry("SE", long = false) SmaLongExit = crossunder(fastSMA,slowSMA) SmaShortExit = crossover(fastSMA,slowSMA) //Close TRades if (strategy.position_size > 0) strategy.close(id="LE",when= SmaLongExit) if (strategy.position_size < 0) strategy.close(id="SE",when= SmaShortExit)