Adaptive Price-Crossing Moving Average Trading Strategy - это количественный торговый метод, основанный на Hull Moving Average (HMA). Эта стратегия генерирует сигналы купли-продажи с использованием ценовых кроссоверов с HMA, реализуя при этом фиксированные уровни стоп-лосса и взятки прибыли для управления рисками и прибылью. Стратегия использует 104-периодную HMA в качестве основного индикатора, в сочетании с ценовыми кроссоверами для запуска сделок.
Основой этой стратегии является использование Hull Moving Average (HMA) в качестве основного индикатора. HMA - это продвинутая скользящая средняя, которая быстро реагирует на изменения цен при сокращении задержки. Логика стратегии следующая:
Стратегия отслеживает открытые позиции, чтобы гарантировать, что не открываются новые позиции, пока существующая активна. После закрытия сделки система перезагружает флаги, чтобы позволить новым торговым сигналам вступить в силу.
Adaptive Price-Crossing Moving Average Trading Strategy - это простой, но эффективный количественный торговый метод. Используя преимущества Hull Moving Average, эта стратегия может улавливать рыночные тенденции, защищая при этом капитал с помощью фиксированных мер управления рисками. Хотя стратегия имеет некоторые потенциальные риски, ее можно дальнейшее улучшать и адаптировать посредством непрерывной оптимизации.
/*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