
Gambaran keseluruhan
Strategi ini menggunakan pelbagai indikator teknikal, termasuk indeks moving average (EMA), moving average convergence spread (MACD), SuperTrend, indeks arah purata (ADX) dan purata gelombang sebenar (ATR), untuk menilai trend pasaran, turun naik dan isyarat perdagangan melalui kombinasi indikator ini, dengan harapan mendapat pulangan yang baik dalam perdagangan cryptocurrency. Strategi ini menggunakan kelebihan indikator yang berbeza, berusaha untuk menyeimbangkan penilaian trend, penilaian goyah dan kawalan risiko, dan dengan itu memberikan isyarat perdagangan yang boleh dipercayai kepada pedagang.
Prinsip Strategi
- Menggunakan persilangan EMA 12 dan 26 sebagai asas untuk menilai trend, apabila EMA 12 di atas EMA 26 menunjukkan trend menaik, sebaliknya menunjukkan trend menurun.
- Menggunakan indikator MACD sebagai penilaian tambahan, apabila carta lurus MACD lebih besar daripada 0, bukaan posisi dilakukan dengan isyarat EMA multihead; apabila carta lurus MACD lebih kecil daripada 0, bukaan posisi dilakukan dengan isyarat EMA kosong.
- Indikator ADX untuk menentukan sama ada pasaran berada dalam keadaan trend, apabila ADX lebih besar daripada 15 dianggap bahawa pasaran berada dalam tempoh trend.
- Untuk menilai turun naik pasaran menggunakan ATR, pasaran dianggap dalam keadaan turun naik tinggi apabila ATR lebih besar daripada 0.5 kali ATR 20 hari.
- Memperkenalkan indikator SuperTrend sebagai syarat berhenti, melonggarkan kedudukan teratas apabila harga jatuh di bawah SuperTrend, melonggarkan kedudukan teratas apabila harga menembusi SuperTrend.
- Apabila syarat EMA, MACD, ADX dan ATR dipenuhi, kedudukan dibuka berdasarkan isyarat overhead atau kosong; kedudukan ditutup apabila keadaan berhenti SuperTrend dicetuskan.
Kelebihan Strategik
- Portfolio pelbagai indikator: Strategi ini menggunakan pelbagai indikator teknikal untuk menganalisis pasaran dari pelbagai dimensi seperti trend, gegaran dan kawalan risiko, meningkatkan kebolehpercayaan isyarat perdagangan.
- Keputusan Trend: Dengan gabungan EMA dan MACD, strategi dapat menilai arah trend pasaran dengan lebih baik, memberikan asas untuk keputusan perdagangan.
- Kawalan risiko: memperkenalkan indikator ADX dan ATR untuk menilai kekuatan dan turun naik trend di pasaran, mengawal risiko perdagangan hingga tahap tertentu.
- Mekanisme Hentikan Kerugian: Menggunakan petunjuk SuperTrend sebagai syarat hentikan kerugian, dapat secara berkesan mengehadkan kerugian maksimum dalam satu perdagangan, melindungi dana perdagangan.
- Fleksibiliti parameter: parameter indikator dalam strategi ini boleh disesuaikan secara fleksibel mengikut keadaan pasaran yang berbeza dan jenis perdagangan untuk menyesuaikan diri dengan keadaan pasaran yang berubah.
Risiko Strategik
- Pengoptimuman parameter: Strategi ini melibatkan pelbagai parameter dan parameter, seperti kitaran EMA, parameter MACD, nilai ADX, dan sebagainya. Pilihan parameter ini mempunyai kesan penting terhadap kesan strategi dan memerlukan pengoptimuman dan pengendalian parameter berulang.
- Kebolehan beradaptasi pasaran: Strategi ini mungkin tidak berfungsi dengan baik dalam keadaan pasaran tertentu, seperti pasaran yang bergolak atau titik perubahan trend, di mana strategi ini mungkin menghantar isyarat perdagangan yang salah.
- Titik tergelincir dan kos dagangan: Strategi ini mungkin menghasilkan isyarat dagangan yang lebih kerap di pasaran yang bergelincir tinggi, yang menyebabkan titik tergelincir dan kos dagangan yang lebih tinggi, yang menjejaskan hasil strategi.
- Batasan pengembalian: Hasil pengembalian strategi mungkin mempunyai batasan tertentu, keadaan pasaran dalam perdagangan sebenar mungkin berbeza dengan data sejarah, dan prestasi strategi dalam operasi dalam talian mungkin tidak sepenuhnya sesuai dengan hasil pengembalian.
Arah pengoptimuman strategi
- Pengoptimuman parameter dinamik: mengoptimumkan parameter penting dalam strategi secara dinamik untuk keadaan pasaran dan jenis perdagangan yang berbeza, meningkatkan daya serap dan kestabilan strategi.
- Pengenalan penunjuk sentimen pasaran: berdasarkan penunjuk sedia ada, pengenalan penunjuk yang mencerminkan sentimen pasaran, seperti indeks panik (VIX) dan sebagainya, untuk analisis kuantitatif sentimen pasaran, membantu keputusan perdagangan.
- Peningkatan mekanisme penangguhan: Berdasarkan penangguhan SuperTrend, pengenalan kaedah penangguhan lain, seperti penangguhan bergerak, penangguhan peratusan, dan lain-lain, meningkatkan fleksibiliti dan keberkesanan penangguhan.
- Pengurusan kedudukan yang dioptimumkan: Mengubah saiz kedudukan secara dinamik mengikut kekuatan dan turun naik trend pasaran, meningkatkan kedudukan apabila trend jelas, mengurangkan kedudukan di pasaran yang bergolak, meningkatkan kecekapan penggunaan dana.
- Analisis pelbagai kerangka masa: menggabungkan isyarat dari pelbagai kerangka masa, seperti garis hari, garis 4 jam, dan lain-lain, untuk mengesahkan pelbagai isyarat perdagangan, meningkatkan kebolehpercayaan isyarat.
ringkaskan
EMA-MACD-SuperTrend-ADX-ATR strategi isyarat perdagangan pelbagai indikator adalah strategi perdagangan kuantitatif yang menggunakan pelbagai petunjuk teknikal secara komprehensif. Melalui kombinasi indikator seperti EMA, MACD, ADX dan ATR, strategi dapat menganalisis pasaran dari pelbagai dimensi seperti trend, gegaran dan kawalan risiko, memberikan isyarat perdagangan yang boleh dipercayai kepada peniaga.
Kod sumber strategi
/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA-MACD-SuperTrend-ADX-ATR Strategy",
overlay = true,
initial_capital = 1000,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 70)
//MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)
//Plot Candlesticks
candlestickscolor = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252))
plotcandle(open, high, low, close,
color = candlestickscolor,
bordercolor = candlestickscolor)
//EMA
ema12 = ta.ema(close, 12)
ema26 = ta.ema(close, 26)
//Plot EMA
plot(ema26, color= #EE6969, linewidth = 2)
plot(ema12, color= #B4CBF0, linewidth = 2)
//Average Directional Index (ADX) Calculation
trueRange = ta.rma(ta.tr, 14)
plusDM = ta.rma(math.max(high - high[1], 0), 14)
minusDM = ta.rma(math.max(low[1] - low, 0), 14)
plusDI = 100 * ta.rma(plusDM / trueRange, 14)
minusDI = 100 * ta.rma(minusDM / trueRange, 14)
adxValue = 100 *ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI), 14)
//Trend Confirmation (ADX)
trending = adxValue > 15
//Volatility Filter (ATR)
atrValue = ta.atr(14)
volatility = atrValue > 0.5 * ta.atr(20)
//SuperTrend
atrlength = input.int(10, "ATR Length", step = 1)
factor = input.float(3, "Factor", step = 0.1)
[supertrend, direction] = ta.supertrend(factor, atrlength)
supertrend := barstate.isfirst ? na : supertrend
//Plot SuperTrend
uptrend = plot(direction < 0 ? supertrend : na,
"Up Trend", color = color.green, style = plot.style_linebr, linewidth = 1)
downtrend = plot(direction > 0 ? supertrend : na,
"Down Trend", color = color.red, style = plot.style_linebr, linewidth = 1)
bodymiddle = plot(barstate.isfirst ? na : (open + close)/2, "Body Middle", display = display.none)
fill(bodymiddle, uptrend, color.new(color.green, 90), fillgaps = false)
fill(bodymiddle, downtrend, color.new(color.red, 90), fillgaps = false)
//Entry Conditions
longCondition = ta.crossover(ema12, ema26) and trending and volatility and hist > 0
shortCondition = ta.crossunder(ema12, ema26) and trending and volatility and hist < 0
long_SL_Con = ta.crossunder(close, supertrend)
short_SL_Con = ta.crossover(close, supertrend)
//Plot Signal
plotshape(longCondition,
title='Buy', text='Buy',
location= location.belowbar,
style=shape.labelup, size=size.tiny,
color=color.green, textcolor=color.new(color.white, 0))
plotshape(shortCondition,
title='Sell', text='Sell',
location= location.abovebar,
style=shape.labeldown, size=size.tiny,
color=color.red, textcolor=color.new(color.white, 0))
//Backtest
start = timestamp(2020, 1, 1, 0, 0, 0)
end = timestamp(2024, 1, 1, 0, 0, 0)
backtestperiod = time >= start and time <= end
if longCondition and backtestperiod
strategy.entry("Buy", strategy.long)
if long_SL_Con and backtestperiod
strategy.close("Buy")
if shortCondition and backtestperiod
strategy.entry("Sell", strategy.short)
if short_SL_Con and backtestperiod
strategy.close("Sell")