A estratégia de negociação de média móvel de cruzamento de preços adaptativa é um método de negociação quantitativo baseado na média móvel de Hull (HMA). Esta estratégia gera sinais de compra e venda usando cruzamento de preços com a HMA, ao mesmo tempo em que implementa níveis fixos de stop-loss e take-profit para gerenciar risco e recompensa.
O núcleo desta estratégia é o uso da Hull Moving Average (HMA) como indicador primário.
A estratégia rastreia as posições abertas para garantir que nenhuma nova posição seja aberta enquanto uma existente estiver ativa.
A estratégia de negociação de média móvel adaptativa de cruzamento de preços é um método de negociação quantitativo simples, mas eficaz. Ao alavancar as vantagens da média móvel de Hull, esta estratégia pode capturar as tendências do mercado enquanto protege o capital através de medidas de gerenciamento de risco fixo. Embora a estratégia tenha alguns riscos potenciais, ela pode ser melhorada e adaptada por meio de otimização contínua.
/*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