STC MA ATR Integrated Trend Trading Strategy (Strategi Perdagangan Tren Terintegrasi)

Penulis:ChaoZhang, Tanggal: 2023-10-17 14:34:10
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator teknis STC, Moving Average MA dan Average True Range ATR untuk menilai tren dan menerapkan perdagangan pelacakan tren yang relatif stabil.

Prinsip Strategi

  1. Indikator STC menilai pembalikan tren. Ini memanfaatkan garis cepat dikurangi garis lambat, kemudian memproses penyelarasan sekunder, membentuk sinyal tren yang konsisten. Sinyal beli datang ketika indikator melintasi di atas sumbu 0, dan sinyal jual di bawah sumbu 0.

  2. Moving Average MA menilai arah tren. Ketika harga saham melintasi di atas MA, itu menandakan tren naik, memberikan sinyal posisi holding long. Ketika harga melintasi di bawah MA, itu menandakan tren turun, memberikan sinyal holding posisi short.

  3. Indikator ATR menetapkan stop loss dan take profit. ATR dapat secara dinamis menyesuaikan stop loss dan take profit points berdasarkan volatilitas pasar. Dan ATR bertindak sebagai sinyal untuk arah perdagangan itu sendiri, naik dalam tren naik dan turun dalam tren turun.

  4. Strategi ini mengambil sinyal STC sebagai waktu utama untuk masuk, menggunakan MA sebagai penilaian tren tambahan, dan ATR untuk stop loss dan take profit.

Analisis Keuntungan

  1. Strategi ini menggabungkan beberapa indikator untuk menilai tren dan titik pembalikan, meningkatkan keakuratan sinyal perdagangan.

  2. STC dapat menangkap sinyal pembalikan dan menghindari terjebak dalam tren. MA menyaring sinyal pembalikan yang tidak pasti untuk memastikan mengikuti tren utama.

  3. ATR menetapkan stop loss dan take profit dinamis berdasarkan volatilitas pasar, menghindari kerugian besar.

  4. Kombinasi dari beberapa indikator membentuk kemampuan melacak tren yang kuat.

Analisis Risiko

  1. STC memiliki keterlambatan waktu, yang mungkin kehilangan waktu yang optimal untuk pembalikan harga.

  2. MA cenderung tertinggal selama perubahan harga yang keras, yang dapat menghasilkan sinyal yang salah.

  3. Stop loss ATR dapat dipukul dalam hitungan detik.

  4. Lebih banyak indikator berarti lebih banyak peluang untuk mencapai stop loss. Parameter harus disesuaikan untuk menghindari stop loss yang tidak perlu.

Arahan Optimasi

  1. Sesuaikan parameter STC untuk menemukan kombinasi responsif yang lebih cepat untuk pembalikan.

  2. Mengoptimalkan parameter periode MA untuk pelacakan tren yang lebih baik.

  3. Dampak uji dari kelipatan ATR yang berbeda.

  4. Cobalah mengganti STC dengan indikator lain agar lebih cocok.

  5. Memperkenalkan algoritma pembelajaran mesin untuk optimasi otomatis multi-parameter.

  6. Pertimbangkan tren siklus besar dan membedakan tahap yang berbeda.

Ringkasan

Strategi STC MA ATR menggabungkan 3 indikator untuk menangkap titik pembalikan tren untuk perdagangan pelacakan tren yang stabil. Kombinasi indikator menyaring sinyal palsu dan mengendalikan risiko dengan stop loss / take profit. Ini memiliki ketahanan dan stabilitas yang kuat. Peningkatan lebih lanjut dapat dicapai melalui optimasi parameter dan pengenalan algoritma. Secara keseluruhan ini adalah pilihan strategi yang dapat diandalkan dan moderat.


/*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

Lebih banyak