
Este artículo trata sobre una estrategia de negociación basada en una media móvil simple. La estrategia utiliza una media móvil de longitud de 17 para comparar con el precio de cierre.
La estrategia utiliza los siguientes parámetros para calcular la media móvil:
De acuerdo con estos parámetros, se llama a la función getMAType () para calcular el SMA de cierre de 17 ciclos.
Luego compara la relación entre el precio de cierre y la media móvil:
Cuando el precio de cierre cruza la media móvil desde abajo, genera una señal de más; cuando cruza desde arriba hacia abajo, genera una señal de menos.
Durante el ciclo de retracción, se abren más posiciones en caso de señales de más y más, y se abren posiciones en caso de señales de menos.
La mayor ventaja de esta estrategia es que la idea es muy simple y clara. Sólo un indicador para juzgar el cambio de tendencia a través de su cambio de dirección. La estrategia es fácil de entender, fácil de implementar y adecuada para los principiantes.
Además, los promedios móviles son indicadores de seguimiento de tendencias, que permiten un seguimiento eficaz de las tendencias cambiantes y evitan la interferencia del ruido a corto plazo en el mercado.
Se puede adaptar a diferentes períodos y diferentes variedades mediante ajustes de parámetros.
En primer lugar, la estrategia se basa en un solo indicador, y el criterio de evaluación es más simple y puede generar más señales erróneas.
Además, la estrategia es un sistema de seguimiento de tendencias que no puede funcionar en un mercado que se estabiliza y se agita.
Además, no se ha establecido un Stop Loss Stop, con el riesgo de que las pérdidas aumenten.
La solución consiste en combinar otros indicadores, optimizar la combinación de parámetros, reducir las señales erróneas. Configurar un stop loss, controlar el riesgo y optimizar la retirada.
Los siguientes aspectos pueden servir como ideas para optimizar la estrategia:
Ajustar los parámetros de las medias móviles, optimizar el número de ciclos. Por ejemplo, cambiar a 30 o 50 ciclos.
Prueba diferentes tipos de promedios móviles, como EMA, VIDYA, etc. Ellos son diferentes en cuanto a su sensibilidad a los cambios en los precios.
La combinación con otros indicadores puede ser, por ejemplo, con el MACD, para determinar la fuerza o la debilidad, o con el RSI, para reducir las señales erróneas.
Aumentar el mecanismo de stop loss. Establecer un stop loss móvil de un porcentaje fijo o un valor de ATR. Controlar las pérdidas individuales.
Aumentar el mecanismo de suspensión. Establecer el porcentaje de ganancias objetivo. Maximizar las ganancias.
Estas optimizaciones permiten una mayor estabilidad en el rendimiento de la estrategia y evitan una retirada excesiva.
Este artículo analiza una estrategia de negociación simple basada en una media móvil de 17 períodos. La fuente de la señal de la estrategia es simple, fácil de entender y implementar, pertenece a un sistema típico de seguimiento de tendencias. A través de una interpretación en profundidad de la estrategia, se analizan sus ventajas y riesgos, y se da una idea de optimización en varias dimensiones.
/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Simple 17 BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
///////////// Moving Average /////////////
source = input(title="MA Source", defval=ohlc4)
maType = input(title="MA Type", defval="sma", options=["sma", "ema", "swma", "wma", "vwma", "rma"])
length = input(title="MA Length", defval=17)
///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) =>
res = sma(close, 1)
if maType == "ema"
res := ema(sourceType, maLen)
if maType == "sma"
res := sma(sourceType, maLen)
if maType == "swma"
res := swma(sourceType)
if maType == "wma"
res := wma(sourceType, maLen)
if maType == "vwma"
res := vwma(sourceType, maLen)
if maType == "rma"
res := rma(sourceType, maLen)
res
MA = getMAType(maType, source, length)
/////////////// Strategy ///////////////
long = close > MA
short = close < MA
last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("L", strategy.long, when=long_signal)
strategy.entry("S", strategy.short, when=short_signal)
/////////////// Plotting ///////////////
p1 = plot(MA, color = long ? color.lime : color.red, linewidth=2)
p2 = plot(close, linewidth=2)
fill(p1, p2, color=strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)