
Strategi perdagangan garis lurus silang harga yang menyesuaikan diri adalah kaedah perdagangan kuantitatif berdasarkan Hull Moving Average (HMA). Strategi ini menggunakan harga dan persilangan HMA untuk menghasilkan isyarat beli dan jual, sambil menetapkan tahap berhenti dan berhenti yang tetap untuk menguruskan risiko dan keuntungan. Strategi ini menggunakan HMA 104 kitaran sebagai petunjuk utama, yang dikombinasikan dengan persilangan harga untuk mencetuskan perdagangan.
Inti strategi ini adalah menggunakan purata bergerak Hull ((HMA) sebagai penunjuk utama. HMA adalah purata bergerak maju yang dapat bertindak balas dengan cepat terhadap perubahan harga sambil mengurangkan kelewatan. Logik strategi adalah seperti berikut:
Strategi untuk memastikan tidak membuka semula kedudukan dengan mengesan kedudukan yang dibuka. Apabila satu dagangan dipadamkan, sistem menetapkan semula isyarat, yang membolehkan isyarat perdagangan baru berlaku.
Strategi perdagangan rantaian rantaian rantaian harga yang menyesuaikan diri adalah kaedah perdagangan kuantitatif yang mudah dan berkesan. Dengan memanfaatkan kelebihan purata bergerak Hull, strategi ini dapat menangkap trend pasaran sambil melindungi dana melalui langkah-langkah pengurusan risiko yang tetap. Walaupun ada beberapa risiko yang berpotensi dalam strategi, prestasi dan kesesuaian dapat ditingkatkan lagi dengan pengoptimuman dan penambahbaikan yang berterusan.
/*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