
La estrategia es una estrategia de oscilación que se aplica a mercados de tendencia como las criptomonedas y las acciones, y utiliza un marco de tiempo más grande, como 8 horas. La estrategia utiliza varios promedios móviles, incluidos SMA, EMA, VWMA, ALMA, SMMA, LSMA y VWMA, que se aplican a los máximos y mínimos respectivamente, formando dos canales de promedios.
Hacer más cuando el precio de cierre es superior al promedio aplicado a los puntos altos; hacer menos cuando el precio de cierre es inferior al promedio aplicado a los puntos bajos.
La estrategia utiliza 7 diferentes indicadores de promedios móviles, incluidos SMA, EMA, VWMA, ALMA, SMMA, LSMA y VWMA. Estos promedios móviles se aplican respectivamente al precio más alto y al precio más bajo de la línea K, generando dos promedios.
El promedio que se aplica al precio más alto se denomina avg_high y el promedio que se aplica al precio más bajo se denomina avg_low. Los dos promedios forman un canal.
Cuando el precio de cierre es mayor que el avg_high, se hace más; cuando el precio de cierre es menor que el avg_low, se hace más.
La línea de parada es avg_low y la línea de parada es el precio de apertura.(1+tp_long); cuando se hace un espacio libre, el límite de pérdida es avg_high y el límite de pérdida es el precio de apertura(1-tp_short)。
La mayor ventaja de esta estrategia consiste en la utilización de varios indicadores de media móvil para aumentar la probabilidad de obtener ganancias. Los indicadores de media móvil de diferentes períodos y métodos de cálculo reaccionan a los precios de manera diferente, y en combinación pueden formar una señal de negociación más confiable.
Otra ventaja es que se trata de una estrategia de canal. El canal ascendente y descendente limita el alcance del stop loss, reduce el riesgo y es más adecuado para la estrategia de swing.
La estrategia tiene dos riesgos principales:
Se utilizan varias combinaciones de indicadores de promedios móviles, la configuración de los parámetros es más compleja y requiere una gran cantidad de pruebas y optimización para encontrar la combinación de parámetros óptima.
La estrategia es propensa a generar pérdidas y señales de negociación con múltiples brechas no efectivas en mercados de tendencia horizontal y no clara.
Para reducir estos riesgos, es necesario elegir las variedades de operaciones que muestran una tendencia clara, al mismo tiempo que se realiza una gran cantidad de retroalimentación y optimización de la combinación de parámetros para encontrar la configuración de parámetros que mejor se adapte a las condiciones actuales del mercado.
La estrategia también necesita ser optimizada en los siguientes aspectos:
Prueba más tipos de medias móviles para encontrar mejores combinaciones. Puedes considerar SMA, EMA, KAMA, TEMA, etc.
Optimización de parámetros para la longitud de las medias móviles y la anchura de los canales para encontrar la configuración óptima de los parámetros.
Prueba diferentes configuraciones de stop loss. Se puede considerar trailing stop o stop loss dinámico.
Combine los indicadores de tendencia para evitar el comercio frecuente en mercados sin tendencias claras, como ADX, ATR, etc.
Optimización de la lógica de entrada y salida, configuración de condiciones de filtro adicionales y reducción de transacciones no válidas.
La estrategia es una estrategia de seguimiento de tendencias de swing que mejora la probabilidad de obtener ganancias a través de varios indicadores de medias móviles y reduce el riesgo mediante el uso de canales ascendentes y descendentes. La estrategia se aplica a las variedades de operaciones con tendencias evidentes y es más eficaz después de optimizar los parámetros.
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99
//@version=4
strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)
////////////////////////////////SETUP///////////////////////////////////////////
sma_high = sma(high, length_ma)
ema_high = ema(high, length_ma)
wma_high = wma(high, length_ma)
alma_high = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)
avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7
///////////////////////////////////////////
sma_low = sma(low, length_ma)
ema_low = ema(low, length_ma)
wma_low = wma(low, length_ma)
alma_low = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)
avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7
////////////////////////////PLOTTING////////////////////////////////////////////
plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)
long= close > avg_high
short = close < avg_low
tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)
tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)
if(time_cond)
strategy.entry("long",1,when=long)
strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
strategy.close("long", when=crossunder(low,avg_low))
strategy.entry("short",0,when=short)
strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
strategy.close("short",when=crossover(high,avg_high))