Sumber dimuat naik... memuat...

Strategi Dagangan Purata Bergerak yang Beradaptasi-Melalui Harga

Penulis:ChaoZhang, Tarikh: 2024-09-26 16:12:36
Tag:HMASLTP

img

Ringkasan

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.

Prinsip Strategi

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:

  1. Mengira HMA 104 tempoh.
  2. Buka kedudukan panjang apabila harga melintasi HMA.
  3. Buka kedudukan pendek apabila harga melintasi HMA.
  4. Tetapkan paras stop-loss ($1.25) dan mengambil keuntungan ($37.5) untuk setiap perdagangan.
  5. Gunakan 2 kontrak untuk setiap perdagangan.

Strategi ini mengesan kedudukan terbuka untuk memastikan tidak ada kedudukan baru dibuka semasa yang sedia ada aktif.

Kelebihan Strategi

  1. Kebolehsesuaian: HMA menyesuaikan diri dengan cepat dengan perubahan pasaran, mengurangkan isyarat palsu.
  2. Pengurusan Risiko: Menggunakan paras stop-loss dan mengambil keuntungan yang tetap, mengawal risiko untuk setiap perdagangan dengan berkesan.
  3. Kesederhanaan: Peraturan perdagangan jelas, mudah difahami dan dilaksanakan.
  4. Perdagangan dua arah: Mengambil peluang naik dan turun, meningkatkan potensi keuntungan.
  5. Automasi: Strategi boleh sepenuhnya automatik, mengurangkan campur tangan manusia dan pengaruh emosi.

Risiko Strategi

  1. Perdagangan kerap: Boleh menghasilkan isyarat perdagangan yang berlebihan di pasaran yang tidak menentu, meningkatkan kos transaksi.
  2. Stop-Loss / Take-Profit tetap: Mungkin tidak sesuai untuk semua keadaan pasaran, berpotensi keluar terlalu awal atau kehilangan trend besar dalam beberapa kes.
  3. Bergantung pada satu penunjuk tunggal: Bergantung hanya pada HMA mungkin kurang berprestasi dalam persekitaran pasaran tertentu.
  4. Lag: Walaupun HMA mengurangkan lag, ia masih mungkin tidak bertindak balas dengan mencukupi pada titik perubahan yang tajam.
  5. Kekurangan Penapisan Alam Sekitar Pasaran: Tidak mengambil kira trend pasaran keseluruhan atau turun naik, berpotensi berdagang dalam keadaan pasaran yang tidak sesuai.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan Penunjuk Tambahan: Gabungkan dengan penunjuk teknikal lain (seperti RSI atau MACD) untuk mengesahkan isyarat dan meningkatkan ketepatan.
  2. Stop-Loss/Take-Profit Dinamis: Sesuaikan tahap stop-loss dan take-profit berdasarkan turun naik pasaran untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  3. Tambah Penapis Pasaran: Masukkan penapis kekuatan trend atau turun naik untuk mengelakkan perdagangan dalam keadaan pasaran yang tidak menguntungkan.
  4. Mengoptimumkan Parameter HMA: Uji tempoh HMA yang berbeza untuk mencari parameter yang paling sesuai untuk pasaran tertentu.
  5. Melaksanakan Pengurusan Posisi: Sesuaikan saiz perdagangan secara dinamik berdasarkan risiko pasaran dan saiz akaun.
  6. Tambah Penapis Masa: Elakkan perdagangan semasa tempoh turun naik pasaran yang tinggi, seperti semasa siaran data ekonomi penting.

Ringkasan

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


Berkaitan

Lebih lanjut