Esta estrategia utiliza promedios móviles para formar un canal de precios y generar señales cuando el precio rompe las bandas del canal.
Calcule las medias móviles, con opciones como SMA/EMA/WMA/RMA.
La banda superior es cierto incremento porcentual de la media móvil.
Opciones para el comercio solo largo, solo corto o bidireccional.
Establezca puntos de stop loss y take profit. El punto de take profit es cierto incremento porcentual del precio de entrada. El punto de stop loss es cierto decremento porcentual del precio de entrada.
Es sencillo de implementar la determinación de tendencias utilizando promedios móviles.
Los parámetros ajustables se adaptan a los diferentes períodos de retención y preferencias de riesgo.
Las direcciones largas/cortas opcionales se adaptan a las diversas condiciones del mercado.
El porcentaje fijo de stop loss y take profit permite la controlabilidad.
Suelen quedar atrapados cuando la tendencia cambia abruptamente.
El ajuste inadecuado de los parámetros corre el riesgo de sobre-negociación o retraso.
El porcentaje fijo de pérdidas/ganancias no es flexible.
Aumento de la frecuencia de las operaciones y de los costes de las comisiones con operaciones bidireccionales.
Optimizar los parámetros de la media móvil para equilibrar el retraso y el ruido.
Optimizar el ancho de banda del canal para que coincida con la frecuencia de volatilidad del mercado.
Prueba diferentes configuraciones de stop loss y take profit.
Añadir indicadores de tendencia y oscilación para medir las condiciones generales del mercado.
Implementar filtros de tiempo para evitar los impactos de eventos significativos.
La estrategia logra una tendencia simple siguiendo los canales de media móvil, pero necesita una optimización de parámetros y un control de riesgos más fuertes.
/*backtest start: 2023-08-17 00:00:00 end: 2023-09-16 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/ // © TaylorTneh //@version=4 // strategy("Moving Average Band Taylor V1",shorttitle="MA Band+",overlay=true,default_qty_type=strategy.cash,default_qty_value=1000,initial_capital=1000,currency=currency.USD,commission_value=.1) price = input(close, title="Source") mabtype = input(title="Moving Average Type", defval="RMA", options=["SMA", "EMA", "RMA", "WMA"]) malen = input(10, "MA Period : 10") magap = input(0.6, "Band Gap : 0.6", minval = -10, maxval = 10, step = 0.1) mabup = if mabtype == "SMA" sma(high, malen) else if mabtype == "EMA" ema(high, malen) else if mabtype == "WMA" wma(high, malen) else if mabtype == "RMA" rma(high, malen) mabdn = if mabtype == "SMA" sma(low, malen) else if mabtype == "EMA" ema(low, malen) else if mabtype == "WMA" wma(low, malen) else if mabtype == "RMA" rma(low, malen) upex = mabup * (1 + magap/100) dnex = mabdn * (1 - magap/100) plot(upex, "Upper MA Band", color.orange) plot(dnex, "Lower MA Band", color.orange) //-------------------------------------------- (Strategy) strategy.entry("Long", strategy.long, stop = upex) strategy.entry("Short", strategy.short, stop = dnex) //Long Only//strategy.entry("Long", strategy.long, stop = upex) //Long Only//strategy.exit("Short", stop = dnex) //Short Only//strategy.entry("Short", strategy.short, stop = dnex) //Short Only//strategy.exit("Long", stop = upex) //-------------------------------------------- (Take Profit & Stop Lose) stopPer = input(500.0, title='# Stop Loss %', type=input.float) / 100 takePer = input(500.0, title='# Take Profit %', type=input.float) / 100 //Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) if strategy.position_size > 0 strategy.exit(id="L-TP/SL", stop=longStop, limit=longTake) if strategy.position_size < 0 strategy.exit(id="S-TP/SL", stop=shortStop, limit=shortTake) //-------------------------------------------- (Sample Time Filter Strategy) //fromyear = input(2018, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") //toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") //frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") //tomonth = input(10, defval = 10, minval = 01, maxval = 12, title = "To Month") //fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") //today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //strategy.entry("Long", strategy.long, stop = upex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) //strategy.entry("Short", strategy.short, stop = dnex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) //--------------------------------------------