Adaptive Price-Crossing Moving Average Trading Strategy adalah metode perdagangan kuantitatif yang didasarkan pada Hull Moving Average (HMA). Strategi ini menghasilkan sinyal beli dan jual menggunakan price crossover dengan HMA, sambil menerapkan stop-loss dan take-profit level tetap untuk mengelola risiko dan reward. Strategi ini menggunakan HMA 104 periode sebagai indikator utamanya, dikombinasikan dengan price crossover untuk memicu perdagangan.
Inti dari strategi ini adalah penggunaan Hull Moving Average (HMA) sebagai indikator utama. HMA adalah rata-rata bergerak lanjutan yang merespon dengan cepat terhadap perubahan harga sambil mengurangi lag. Logika strategi adalah sebagai berikut:
Strategi ini melacak posisi terbuka untuk memastikan tidak ada posisi baru yang dibuka sementara yang sudah ada aktif.
Adaptive Price-Crossing Moving Average Trading Strategy adalah metode perdagangan kuantitatif yang sederhana namun efektif. Dengan memanfaatkan keuntungan dari Hull Moving Average, strategi ini dapat menangkap tren pasar sambil melindungi modal melalui langkah-langkah manajemen risiko tetap. Meskipun strategi ini memiliki beberapa risiko potensial, strategi ini dapat ditingkatkan dan disesuaikan lebih lanjut melalui optimalisasi berkelanjutan.
/*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