Strategi Perdagangan Purata Bergerak Menyambung Harga adalah kaedah perdagangan kuantitatif berdasarkan Purata Bergerak Hull (HMA). Strategi ini menghasilkan isyarat beli dan jual menggunakan persilangan harga dengan HMA, sambil melaksanakan paras stop-loss dan mengambil keuntungan tetap untuk menguruskan risiko dan ganjaran. Strategi ini menggunakan HMA 104 tempoh sebagai penunjuk utamanya, digabungkan dengan persilangan harga untuk mencetuskan perdagangan.
Inti strategi ini adalah penggunaan Hull Moving Average (HMA) sebagai penunjuk utama. HMA adalah purata bergerak lanjutan yang bertindak balas dengan cepat terhadap perubahan harga sambil mengurangkan lag. Logik strategi adalah seperti berikut:
Strategi ini mengesan kedudukan terbuka untuk memastikan tidak ada kedudukan baru dibuka semasa yang sedia ada aktif.
Strategi perdagangan purata bergerak penyambungan harga adalah kaedah perdagangan kuantitatif yang mudah namun berkesan. Dengan memanfaatkan kelebihan purata bergerak Hull, strategi ini dapat menangkap trend pasaran sambil melindungi modal melalui langkah pengurusan risiko tetap. Walaupun strategi ini mempunyai beberapa risiko berpotensi, ia boleh ditingkatkan dan disesuaikan dengan pengoptimuman berterusan. Bagi peniaga yang mencari penyelesaian perdagangan automatik, ini adalah rangka kerja strategi asas yang berbaloi untuk dipertimbangkan.
/*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