Strategi Perdagangan Purata Pergerakan Crossover Harga Adaptif

HMA SL TP
Tarikh penciptaan: 2024-09-26 16:12:36 Akhirnya diubah suai: 2024-09-26 16:12:36
Salin: 2 Bilangan klik: 441
1
fokus pada
1617
Pengikut

Strategi Perdagangan Purata Pergerakan Crossover Harga Adaptif

Gambaran keseluruhan

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.

Prinsip Strategi

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:

  1. HMA dikira 104 kitaran.
  2. Apabila harga naik ke atas melalui HMA, anda boleh membuat lebih banyak dagangan.
  3. Apabila harga turun melalui HMA, buka posisi kosong.
  4. Tetapkan tahap stop loss tetap ($1.25) dan stop loss ($37.5) untuk setiap dagangan.
  5. Setiap transaksi menggunakan 2 kontrak.

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.

Kelebihan Strategik

  1. Ketabahan: HMA dapat menyesuaikan diri dengan cepat dengan perubahan pasaran, mengurangkan isyarat palsu.
  2. Pengurusan risiko: Menggunakan tahap stop loss dan stop loss yang tetap untuk mengawal risiko setiap dagangan.
  3. Sederhana dan jelas: Peraturan transaksi jelas, mudah difahami dan dilaksanakan.
  4. Perdagangan dua hala: menangkap peluang naik dan turun pada masa yang sama, meningkatkan potensi keuntungan.
  5. Automasi: Strategi boleh diotomatiskan sepenuhnya, mengurangkan campur tangan manusia dan kesan emosi.

Risiko Strategik

  1. Perdagangan yang kerap: Dalam pasaran yang bergolak, terlalu banyak isyarat perdagangan boleh dihasilkan, meningkatkan kos perdagangan.
  2. Hentian/Pendirian Tetap: Mungkin tidak sesuai untuk semua keadaan pasaran, dalam beberapa kes mungkin keluar terlalu awal atau terlepas trend besar.
  3. Bergantung kepada satu indikator: Bergantung kepada HMA sahaja mungkin tidak berfungsi dengan baik dalam keadaan pasaran tertentu.
  4. Keterlambatan: Walaupun HMA mengurangkan keterlambatan, ia mungkin masih kurang bertindak balas pada titik perubahan mendadak.
  5. Kurangnya penapisan keadaan pasaran: tidak mengambil kira trend atau turun naik pasaran secara keseluruhan, dan mungkin berdagang dalam keadaan pasaran yang tidak sesuai.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk tambahan: digabungkan dengan penunjuk teknikal lain (seperti RSI atau MACD) untuk mengesahkan isyarat dan meningkatkan ketepatan.
  2. Hentian / Hentian Dinamis: Mengubah tahap hentian dan hentian mengikut turun naik pasaran untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Tambah penapis pasaran: tambahkan penapis kekuatan trend atau kadar turun naik untuk mengelakkan perdagangan dalam keadaan pasaran yang tidak menguntungkan.
  4. Optimumkan parameter HMA: Uji pelbagai kitaran HMA untuk mencari parameter yang paling sesuai untuk pasaran tertentu.
  5. Memperkenalkan pengurusan kedudukan: menyesuaikan skala dagangan secara dinamik mengikut risiko pasaran dan saiz akaun.
  6. Tambah penapis masa: Elakkan berdagang pada masa-masa ketika pasaran lebih bergolak, seperti semasa data ekonomi penting dikeluarkan.

ringkaskan

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.

Kod sumber strategi
/*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