Sumber dimuat naik... memuat...

Strategi Dagangan Purata Bergerak Pintar Penembusan Trend Multi-Filter

Penulis:ChaoZhang, Tarikh: 2024-12-20 15:49:05
Tag:VWAPEMARSIADXATRHTFSMA

img

Ringkasan

Strategi ini adalah sistem perdagangan terobosan trend berdasarkan pelbagai penapis penunjuk teknikal. Ia menggabungkan beberapa penunjuk teknikal termasuk Exponential Moving Average (EMA), Volume Weighted Average Price (VWAP), Relative Strength Index (RSI), Average Directional Index (ADX), dan lain-lain, untuk menapis pecah palsu melalui pelbagai pengesahan isyarat dan meningkatkan ketepatan perdagangan. Strategi ini juga menggabungkan penilaian trend jangka masa yang lebih tinggi dan menggunakan skim stop-loss dan mengambil keuntungan dinamik berasaskan ATR untuk kawalan risiko yang berkesan.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan unsur-unsur utama berikut:

  1. Sistem Penghakiman Trend: Menggunakan persimpangan EMA 9-period dan 21-period untuk menangkap perubahan trend jangka pendek, sementara merujuk jangka masa 15-minit 50-period EMA untuk mengesahkan arah trend yang lebih besar.
  2. Pengesahan Momentum Harga: Menggunakan penunjuk RSI untuk pengesahan momentum, memerlukan RSI> 55 untuk panjang dan RSI<45 untuk pendek.
  3. Pengesahan Kekuatan Trend: Menggabungkan penunjuk ADX untuk menilai kekuatan trend, yang memerlukan ADX> 25 untuk memastikan kesahihan trend.
  4. Pengesahan Kedudukan Harga: Menggunakan VWAP sebagai rujukan untuk kedudukan harga, memerlukan harga berada di kedudukan VWAP yang betul.
  5. Pengesahan Jumlah: Memerlukan jumlah dagangan menjadi 1.5 kali lebih besar daripada jumlah purata 10 tempoh untuk memastikan penyertaan pasaran yang mencukupi.
  6. Pengurusan Risiko: Mengira saiz kedudukan secara dinamik berdasarkan peratusan tetap ekuiti akaun dan ATR, menggunakan 1.5x ATR untuk stop-loss dan 3x ATR untuk mengambil keuntungan.

Kelebihan Strategi

  1. Mekanisme pengesahan isyarat berbilang sangat mengurangkan gangguan dari isyarat palsu.
  2. Gabungan analisis jangka masa yang lebih tinggi dan lebih rendah meningkatkan ketepatan penilaian trend.
  3. Pengurusan kedudukan dinamik dan tetapan stop-loss/take-profit mencapai kawalan risiko yang baik.
  4. Penggunaan volume breakout sebagai pengesahan perdagangan meningkatkan kebolehpercayaan perdagangan.
  5. Penyesuaian parameter yang kuat memudahkan pengoptimuman untuk keadaan pasaran yang berbeza.

Risiko Strategi

  1. Pelbagai penapis boleh menyebabkan kehilangan beberapa peluang perdagangan yang sah.
  2. Boleh menghasilkan isyarat perdagangan yang kerap di pasaran yang berbeza.
  3. Pengoptimuman parameter boleh membawa kepada data sejarah yang berlebihan.
  4. Hentian ATR mungkin terlalu luas di pasaran yang sangat tidak menentu.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan mekanisme parameter adaptif untuk menyesuaikan parameter secara dinamik berdasarkan keadaan pasaran.
  2. Tambah modul pengenalan persekitaran pasaran untuk menggunakan kombinasi parameter yang berbeza dalam persekitaran pasaran yang berbeza.
  3. Sertakan penapis masa dagangan untuk mengelakkan tempoh yang sangat tidak menentu.
  4. Mengoptimumkan nisbah stop-loss dan mengambil keuntungan, mempertimbangkan penyesuaian dinamik berdasarkan turun naik pasaran.
  5. Tambah penanda kekuatan trend untuk mengamalkan strategi pengurusan kedudukan yang berbeza pada tahap kekuatan yang berbeza.

Ringkasan

Strategi ini membina sistem dagangan yang agak lengkap melalui sinergi pelbagai penunjuk teknikal. Kelebihannya utama terletak pada peningkatan ketepatan dagangan melalui pengesahan isyarat berbilang dimensi sambil menggunakan kaedah pengurusan risiko saintifik untuk melindungi keselamatan modal. Walaupun terdapat batasan tertentu, melalui pengoptimuman dan peningkatan berterusan, strategi ini mempunyai potensi untuk mencapai pulangan yang stabil dalam dagangan sebenar.


/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend-Filtered Scalping Strategy", overlay=true, shorttitle="TFSS")

// Inputs
emaShort     = input.int(9, title="EMA Short", minval=1)
emaLong      = input.int(21, title="EMA Long", minval=1)
rsiLength    = input.int(14, title="RSI Length", minval=1)
atrLength    = input.int(14, title="ATR Length", minval=1)
adxLength    = input.int(20, title="ADX Length", minval=1)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1)
volMultiplier = input.float(1.5, title="Volume Spike Multiplier", minval=1.0)
riskPercent  = input.float(1, title="Risk % of Equity", minval=0.1, step=0.1)

// Higher Time Frame for Trend Filter
htfTimeframe = input.timeframe("15", title="Higher Time Frame")
ema50HTF     = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, 50))

// Indicators
ema9  = ta.ema(close, emaShort)
ema21 = ta.ema(close, emaLong)
vwap  = ta.vwap(close)
rsi   = ta.rsi(close, rsiLength)
atr   = ta.atr(atrLength)
volAvg = ta.sma(volume, 10)

// ADX Calculation with Smoothing
[_, _, adx] = ta.dmi(adxLength, adxSmoothing)

// Entry Conditions
longCondition = (ta.crossover(ema9, ema21) and close > vwap and rsi > 55 and adx > 25 and close > ema50HTF and volume > volAvg * volMultiplier)
shortCondition = (ta.crossunder(ema9, ema21) and close < vwap and rsi < 45 and adx > 25 and close < ema50HTF and volume > volAvg * volMultiplier)

// Position Sizing Based on Risk %
capitalPerTrade = (strategy.equity * (riskPercent / 100)) / atr
longStop  = close - 1.5 * atr
longTarget = close + 3 * atr
shortStop = close + 1.5 * atr
shortTarget = close - 3 * atr

// Entry Logic
if longCondition and not strategy.opentrades
    strategy.entry("Long", strategy.long, qty=capitalPerTrade)
    strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTarget)

if shortCondition and not strategy.opentrades
    strategy.entry("Short", strategy.short, qty=capitalPerTrade)
    strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTarget)

// Alerts
alertcondition(longCondition, title="Long Entry Alert", message="Long Condition Triggered!")
alertcondition(shortCondition, title="Short Entry Alert", message="Short Condition Triggered!")

// Plot Indicators
plot(ema9, title="EMA 9", color=color.green)
plot(ema21, title="EMA 21", color=color.red)
plot(vwap, title="VWAP", color=color.blue)
plot(ema50HTF, title="HTF EMA 50", color=color.purple)
hline(55, "RSI Long Threshold", color=color.green)
hline(45, "RSI Short Threshold", color=color.red)


Berkaitan

Lebih lanjut