Strategi Dagangan Pullback Purata Pergerakan Dinamik


Tarikh penciptaan: 2024-02-27 14:38:45 Akhirnya diubah suai: 2024-02-27 14:38:45
Salin: 0 Bilangan klik: 584
1
fokus pada
1617
Pengikut

Strategi Dagangan Pullback Purata Pergerakan Dinamik

Gambaran keseluruhan

Strategi ini menggunakan sistem dua garis rata untuk mencari peluang terobosan yang berpotensi dalam saham atau mata wang digital tertentu. Prinsip dasarnya adalah membeli saham atau mata wang digital apabila garis rata jangka pendek bangkit dari bawah garis rata jangka panjang. Menjual saham atau mata wang digital apabila harga menguji semula garis rata jangka panjang.

Prinsip Strategi

Strategi ini menggunakan purata bergerak sederhana ((SMA) dari dua kitaran yang berbeza sebagai isyarat perdagangan. Kitaran SMA pertama lebih panjang, mewakili arah trend keseluruhan. Kitaran SMA kedua lebih pendek, digunakan untuk menangkap turun naik harga jangka pendek.

Apabila SMA jangka pendek memakai SMA jangka panjang dari bawah, mewakili harga dalam trend naik secara keseluruhan, oleh itu strategi membuka kedudukan multihead. Apabila harga turun untuk menguji semula SMA jangka panjang, menandakan berakhirnya pullback jangka pendek, ketika ini strategi mempertimbangkan untuk menghentikan kerugian atau mengambil keuntungan untuk menutup kedudukan.

Selain itu, strategi ini juga menetapkan syarat overbought dan overbought untuk mengelakkan dagangan dalam keadaan yang melampau. Hanya apabila kedua-dua syarat crossover dan penilaian yang munasabah dipenuhi secara serentak, kedudukan akan dibuka.

Kelebihan Strategik

  • Menggunakan sistem dua hala untuk mengenal pasti trend jangka pendek dan sederhana
  • Menggabungkan kelebihan trend-following dan trading backtracking
  • Pemasangan dalaman untuk penjual dan pembeli yang lebih baik, mengurangkan transaksi yang tidak perlu

Analisis risiko

  • Masa penghujung pengulangan adalah sukar untuk dinilai dan mungkin menyebabkan kerugian yang tidak diingini.
  • Tidak dapat berhenti dengan cepat apabila trend berubah, dan mungkin menanggung kerugian yang lebih besar
  • Tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang terlalu kerap atau konservatif

Pengoptimuman Strategi

Strategi ini masih boleh dioptimumkan lagi:

  1. Menggunakan alat-alat yang lebih canggih untuk melihat pergerakan dan trend harga, seperti Brinks, KD Indicator dan sebagainya
  2. Menggabungkan faktor-faktor lain untuk menentukan tarikh akhir penarikan balik, seperti perubahan dalam jumlah dagangan, kadar turun naik dan sebagainya
  3. Mengubah saiz kedudukan secara dinamik untuk memaksimumkan keuntungan
  4. Mengoptimumkan logik hentian, menggunakan KAMA, Awan Ichimoku dan timeframe yang lebih rendah untuk menentukan masa hentian

ringkaskan

Strategi ini mengintegrasikan kelebihan trend mengikuti dan meminda perdagangan, menggunakan sistem dua garis lurus untuk menilai peluang yang muncul. Pada masa yang sama, terbina dalam tertentu syarat overbuy oversell, dapat mengelakkan kedudukan yang tidak perlu dibuka. Ini adalah strategi perdagangan kuantitatif yang sangat praktikal, yang patut dikaji dan dioptimumkan.

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

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)