Strategi Perdagangan Trend Gabungan STC MA ATR


Tarikh penciptaan: 2023-10-17 14:34:10 Akhirnya diubah suai: 2023-10-17 14:34:10
Salin: 0 Bilangan klik: 845
1
fokus pada
1617
Pengikut

Strategi Perdagangan Trend Gabungan STC MA ATR

Gambaran keseluruhan

Strategi ini menggunakan indikator teknikal saham STC, purata bergerak MA dan rata-rata kadar turun naik sebenar ATR, digabungkan dengan pelbagai indikator teknikal untuk menilai trend, untuk mencapai perdagangan trend yang lebih stabil.

Prinsip Strategi

  1. Penunjuk STC menentukan pembalikan trend. Penunjuk ini menggunakan garis cepat untuk melambatkan garis, dan kemudian melakukan pemprosesan kedua untuk membentuk isyarat trend yang konsisten. Apabila penunjuk melewati 0 sumbu, ia adalah isyarat beli, dan apabila ia melewati 0 sumbu, ia adalah isyarat jual.

  2. MA bergerak menentukan arah trend. Apabila harga saham naik melalui MA, ia dianggap sebagai masih dalam pergerakan yang meningkat, untuk memegang isyarat lebih banyak. Apabila harga turun melalui MA, ia dianggap sebagai pergerakan yang menurun, untuk memegang isyarat kosong.

  3. Indikator ATR menetapkan stop loss. ATR boleh menyesuaikan titik stop loss secara dinamik mengikut turun naik pasaran. ATR digunakan sebagai isyarat arah perdagangan, ATR naik pada tahap berbilang, ATR turun pada tahap kosong.

  4. Strategi mengambil peluang dengan keputusan STC untuk berbalik sebagai titik jual beli utama, dengan MA sebagai keputusan trend bantu, dengan ATR untuk menghentikan kerugian. Apabila STC mengeluarkan isyarat beli, jika MA juga naik, ATR naik, maka bukalah lebih banyak pesanan; Jika STC mengeluarkan isyarat jual, jika MA adalah turun, ATR menurun, maka bukalah kosong.

Analisis kelebihan

  1. Strategi ini menggunakan pelbagai indikator untuk menilai trend dan titik balik, meningkatkan ketepatan isyarat perdagangan.

  2. Penunjuk STC dapat menangkap isyarat pembalikan dan mengelakkan perdagangan daripada ditarik. Penunjuk MA menyaring isyarat pembalikan yang tidak stabil dan memastikan trend utama.

  3. Indeks ATR boleh menetapkan stop loss stop loss berdasarkan turun naik pasaran, mengelakkan kerugian besar. Dan menggunakan ATR sebagai isyarat penentuan trend sebagai bantuan.

  4. Kombinasi pelbagai indikator, boleh membentuk keupayaan trend yang lebih kuat, pengesanan sejarah mempunyai kemampuan keuntungan yang lebih stabil.

Analisis risiko

  1. Indeks STC berada di belakang masa, mungkin terlepas masa terbaik untuk harga berbalik.

  2. Indikator MA cenderung berada di belakang apabila harga berubah secara mendadak, dan mungkin memberi isyarat yang salah.

  3. Hentian ATR mungkin dikeluarkan pada saat kedua, dengan kelonggaran ATR yang sesuai, atau ditutup sementara dalam trend besar.

  4. Walaupun kombinasi pelbagai indikator meningkatkan kadar kemenangan, ia juga meningkatkan peluang untuk mencetuskan hentian, parameter harus disesuaikan dengan betul untuk mengurangkan hentian yang tidak perlu.

Arah pengoptimuman

  1. Menyesuaikan parameter STC untuk mencari kombinasi parameter yang lebih cepat bertindak balas

  2. Optimumkan parameter kitaran MA untuk mengesan trend dengan lebih baik

  3. Pengaruh parameter untuk strategi yang diuji dengan pelbagai ATR

  4. Cuba gantikan STC dengan penunjuk lain untuk mencari penunjuk yang lebih sesuai

  5. Menambah algoritma pembelajaran mesin untuk mengoptimumkan pelbagai parameter secara automatik

  6. Meningkatkan penilaian mengenai trend kitaran besar, membezakan tahap yang berbeza dalam kitaran besar

ringkaskan

Strategi STC MA ATR menggunakan tiga indikator untuk menangkap titik perubahan trend, untuk mencapai perdagangan trend yang stabil. Kombinasi indikator memfilter isyarat palsu, risiko kawalan hentian hentian, dengan kecocokan dan kestabilan yang kuat. Dengan pengoptimuman parameter dan pengenalan algoritma, prestasi strategi dapat dipertingkatkan lagi.

Kod sumber strategi
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Romedius

//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)

// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA
    
AAAAA(EEEEEE, BBBB, BBBBB) => 
    //AAA=input(0.5)
    var AAA = 0.5
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close,BBBB,BBBBB)     
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC    
    CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) 
    DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) 
    DDDD = ta.lowest(DDD, EEEEEE) 
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD     
    DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) 
    EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
    EEEEE

mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end

// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")

xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)

atr_sig = pos == -1 ? false : true
// ATR stops end

// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end

// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")

atr_stop = if close < xATRTrailingStop
    close - (close - xATRTrailingStop) * sl_mult
else
    close + (xATRTrailingStop - close) * sl_mult

longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
    strategy.close("Long")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
    strategy.close("Short")
    
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)

ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)

stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end