Strategi Julat Purata Pergerakan Eksponen Suai


Tarikh penciptaan: 2024-02-26 14:58:32 Akhirnya diubah suai: 2024-02-26 14:58:32
Salin: 2 Bilangan klik: 655
1
fokus pada
1621
Pengikut

Strategi Julat Purata Pergerakan Eksponen Suai

Gambaran keseluruhan

Strategi ini menggunakan indeks linear rata-rata berat (EHMA) yang lebih cepat dikira dan saluran penyesuaian untuk membina strategi mengikuti trend. Oleh kerana EHMA dikira lebih cepat, ia dapat mengenal pasti trend perubahan harga dengan berkesan, dan mengelakkan pecah palsu menghasilkan isyarat perdagangan yang tidak perlu.

Prinsip Strategi

  1. Indeks purata linear bertimbangan EHMA berdasarkan parameter Period. Pengiraan EHMA adalah cepat dan berkesan untuk mengesan trend perubahan harga.

  2. Berdasarkan parameter RangeWidth, satu saluran penyesuaian diperluaskan di bawah dan di atas EHMA. Hanya apabila harga lebih tinggi daripada saluran atas atau lebih rendah daripada saluran bawah, perubahan trend dianggap dan isyarat perdagangan dikeluarkan.

  3. Untuk menilai hubungan harga dengan saluran. Harga lebih banyak apabila memakai saluran atas, kosong apabila melalui saluran bawah. Harga lebih banyak apabila memakai saluran bawah, kosong apabila memakai saluran bawah.

Analisis kelebihan

Strategi ini mempunyai kelebihan berbanding strategi purata bergerak biasa:

  1. Menggunakan algoritma EHMA untuk mengira purata. EHMA lebih sensitif terhadap tindak balas kepada trend perubahan harga, dapat mengenal pasti perubahan trend dengan berkesan, dan mengelakkan pecah palsu yang menyebabkan perdagangan yang tidak perlu.

  2. Saluran penyesuaian boleh menyaring turun naik harga secara berkesan. Isyarat perdagangan hanya dihasilkan apabila harga menentukan perubahan trend.

  3. Saluran lebar boleh disesuaikan secara fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Saluran lebar dapat menyaring lebih banyak gegaran dan mengurangkan frekuensi perdagangan; Saluran sempit dapat mengenali perubahan trend lebih awal dan meningkatkan frekuensi perdagangan.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Masih tidak dapat sepenuhnya mengelakkan penembusan palsu. Harga mungkin berpecah, langsung naik atau turun melalui jalur jalur. Perlu menyesuaikan parameter dengan betul untuk mengawal risiko.

  2. Saluran yang terlalu luas mungkin terlepas beberapa peluang perdagangan. Saluran yang lebih sempit dapat meningkatkan kepekaan.

  3. Jika saluran terlalu sempit, ia akan meningkatkan jumlah transaksi yang tidak sah. Anda boleh meluaskan lebar saluran dengan sewajarnya untuk meningkatkan kestabilan.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Parameter pengoptimuman Period. Sesuaikan kitaran pengiraan purata untuk menyesuaikan diri dengan ciri-ciri varieti dan carta kitaran yang berbeza.

  2. Parameter pengoptimuman RangeWidth. Sesuaikan ruang laluan mengikut tahap turun naik pasaran dan keutamaan risiko peribadi.

  3. Tambah strategi hentikan kerugian. Semasa memegang kedudukan, tetapkan titik hentikan yang munasabah, mengawal kerugian maksimum perdagangan tunggal dengan berkesan.

  4. Menapis Entries dalam kombinasi dengan petunjuk lain. Sebagai contoh, meningkatkan penilaian jumlah transaksi dan mengurangkan ketidakcekapan Entries.

  5. Penggunaan pelbagai jenis dan pengoptimuman parameter. Uji pada lebih banyak jenis dan kitaran, mengoptimumkan parameter umum.

ringkaskan

Strategi ini menggabungkan petunjuk EHMA dan petunjuk saluran penyesuaian diri, membentuk strategi mengikuti trend. Ia dapat mengenal pasti trend pasaran dengan berkesan, sambil menyaring turun naik harga dan mengelakkan perdagangan yang tidak perlu. Ia dapat menstabilkan keuntungan dalam pelbagai jenis dan kitaran selepas beberapa pengoptimuman parameter dan kawalan risiko.

Kod sumber strategi
/*backtest
start: 2023-02-25 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",1]]
*/

// Credit is due where credit is due:
// Hull Moving Average: developed by Alan Hull
// EHMA: coded by Twitter @borserman
// I've built on their work in an attempt to create a strategy more robust to fake moves
// @0xLetoII

//@version=4
strategy(
  title="EHMA Range Strategy",
  process_orders_on_close=true,
  explicit_plot_zorder=true,
  overlay=true, 
  initial_capital=1500, 
  default_qty_type=strategy.percent_of_equity, 
  commission_type=strategy.commission.percent, 
  commission_value=0.085,
  default_qty_value=100
  )
  

// Position Type
pos_type = input(defval = "Long", title="Position Type", options=["Both", "Long", "Short"])

// Inputs
Period = input(defval=180, title="Length")
RangeWidth = input(defval=0.02, step=0.01, title="Range Width")
sqrtPeriod = sqrt(Period)

// Function for the Borserman EMA
borserman_ema(x, y) =>
    alpha = 2 / (y + 1)
    sum = 0.0
    sum := alpha * x + (1 - alpha) * nz(sum[1])

// Calculate the Exponential Hull Moving Average
EHMA = borserman_ema(2 * borserman_ema(close, Period / 2) - borserman_ema(close, Period), sqrtPeriod)

// Create upper & lower bounds around the EHMA for broader entries & exits
upper = EHMA + (EHMA * RangeWidth)
lower = EHMA - (EHMA * RangeWidth)

// Plots
EHMAcolor = (close > EHMA ? color.green : color.red)
plot(EHMA, color=EHMAcolor, linewidth=2)
plot(lower, color=color.orange, linewidth=2)
plot(upper, color=color.blue, linewidth=2)


// Strategy
long = close > upper
exit_long = close < lower
short = close < lower
exit_short = close > upper


// Calculate start/end date and time condition
startDate  = input(timestamp("2017-01-01T00:00:00"))
finishDate = input(timestamp("2029-01-01T00:00:00"))
 
time_cond  = true


// Entries & Exits
if pos_type == "Both"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
if pos_type == "Long"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
if pos_type == "Short"
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)