
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.
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.
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.
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.
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.
Strategi ini menggunakan pelbagai indikator untuk menilai trend dan titik balik, meningkatkan ketepatan isyarat perdagangan.
Penunjuk STC dapat menangkap isyarat pembalikan dan mengelakkan perdagangan daripada ditarik. Penunjuk MA menyaring isyarat pembalikan yang tidak stabil dan memastikan trend utama.
Indeks ATR boleh menetapkan stop loss stop loss berdasarkan turun naik pasaran, mengelakkan kerugian besar. Dan menggunakan ATR sebagai isyarat penentuan trend sebagai bantuan.
Kombinasi pelbagai indikator, boleh membentuk keupayaan trend yang lebih kuat, pengesanan sejarah mempunyai kemampuan keuntungan yang lebih stabil.
Indeks STC berada di belakang masa, mungkin terlepas masa terbaik untuk harga berbalik.
Indikator MA cenderung berada di belakang apabila harga berubah secara mendadak, dan mungkin memberi isyarat yang salah.
Hentian ATR mungkin dikeluarkan pada saat kedua, dengan kelonggaran ATR yang sesuai, atau ditutup sementara dalam trend besar.
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.
Menyesuaikan parameter STC untuk mencari kombinasi parameter yang lebih cepat bertindak balas
Optimumkan parameter kitaran MA untuk mengesan trend dengan lebih baik
Pengaruh parameter untuk strategi yang diuji dengan pelbagai ATR
Cuba gantikan STC dengan penunjuk lain untuk mencari penunjuk yang lebih sesuai
Menambah algoritma pembelajaran mesin untuk mengoptimumkan pelbagai parameter secara automatik
Meningkatkan penilaian mengenai trend kitaran besar, membezakan tahap yang berbeza dalam kitaran besar
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.
/*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