La Estrategia de Negociación de promedios móviles de cruce de precios adaptativo es un método de negociación cuantitativo basado en el Hull Moving Average (HMA). Esta estrategia genera señales de compra y venta utilizando cruces de precios con el HMA, al tiempo que implementa niveles fijos de stop-loss y take-profit para gestionar el riesgo y la recompensa. La estrategia emplea un HMA de 104 períodos como su indicador principal, combinado con cruces de precios para desencadenar operaciones.
El núcleo de esta estrategia es el uso del Hull Moving Average (HMA) como indicador principal.
La estrategia rastrea las posiciones abiertas para garantizar que no se abran nuevas posiciones mientras una existente está activa.
La estrategia de negociación de promedios móviles adaptativos es un método de negociación cuantitativo simple pero efectivo. Al aprovechar las ventajas de la media móvil de Hull, esta estrategia puede capturar las tendencias del mercado mientras protege el capital a través de medidas fijas de gestión de riesgos. Aunque la estrategia tiene algunos riesgos potenciales, se puede mejorar y adaptar aún más a través de la optimización continua.
/*backtest start: 2024-01-01 00:00:00 end: 2024-03-23 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SHIESTD", overlay=true) // Function to calculate Hull Moving Average (HMA) hma(src, length) => wma1 = ta.wma(src, length) wma2 = ta.wma(src, length / 2) hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length))) hma // Parameters hma_length = 104 // Calculate Hull Moving Average hma_value = hma(close, hma_length) // Plot HMA plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2) // Define SL and TP values in dollars long_sl_amount = 1.25 long_tp_amount = 37.5 short_sl_amount = 1.25 short_tp_amount = 37.5 // Number of contracts contracts = 2 // Function to calculate SL and TP prices based on entry price and dollar amounts long_sl_price(entry_price) => entry_price - long_sl_amount long_tp_price(entry_price) => entry_price + long_tp_amount short_sl_price(entry_price) => entry_price + short_sl_amount short_tp_price(entry_price) => entry_price - short_tp_amount // Trading conditions price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value) // Long and Short Conditions based on price intersecting HMA long_condition = ta.crossover(close, hma_value) short_condition = ta.crossunder(close, hma_value) // Track open positions var bool long_open = false var bool short_open = false // Handle Long Positions if (long_condition and not long_open) entry_price = close strategy.entry("Long", strategy.long, qty=contracts) strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price)) long_open := true // Handle Short Positions if (short_condition and not short_open) entry_price = close strategy.entry("Short", strategy.short, qty=contracts) strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price)) short_open := true // Reset flags when the position is closed if (strategy.opentrades == 0) long_open := false short_open := false