
Strategi ini menggunakan indikator teknis saham STC, moving average MA dan rata-rata real volatility ATR, yang digabungkan dengan beberapa indikator teknis untuk menilai tren, untuk mencapai perdagangan yang lebih stabil dan mengikuti tren.
Indikator STC menilai pembalikan tren. Indikator ini menggunakan garis cepat untuk memperlambat garis, lalu melakukan pengolahan kedua, membentuk sinyal tren yang konsisten. Ketika indikator melewati sumbu 0 di atas, itu adalah sinyal beli, dan ketika melewati sumbu 0 di bawah, itu adalah sinyal jual.
Moving Average MA menentukan arah tren. Ketika harga saham melewati MA ke atas, dianggap sebagai masih dalam tren naik, untuk sinyal memegang banyak tiket. Ketika harga melewati MA ke bawah, dianggap sebagai tren turun, untuk sinyal memegang tiket kosong.
Indikator ATR menetapkan stop loss. ATR dapat menyesuaikan stop loss dan stop loss berdasarkan volatilitas pasar. ATR digunakan sebagai sinyal arah perdagangan, ATR naik pada fase multihead dan ATR turun pada fase kosong.
Strategi ini menggunakan STC untuk membalikkan keputusan sebagai titik jual beli utama, dengan MA sebagai penilaian tambahan untuk tren, dengan ATR untuk stop loss. Ketika STC mengeluarkan sinyal beli, jika MA juga naik, ATR naik, maka bukalah lebih banyak; Jika STC mengeluarkan sinyal jual, jika MA adalah turun, ATR turun, maka bukalah kosong.
Strategi ini menggabungkan berbagai indikator untuk menilai tren dan titik balik, meningkatkan akurasi sinyal perdagangan.
Indikator STC dapat menangkap sinyal reversal, menghindari perdagangan yang ditargetkan. Indikator MA memfilter sinyal reversal yang tidak stabil, memastikan mengikuti tren utama.
Indikator ATR dapat mengatur stop loss berdasarkan fluktuasi pasar, menghindari kerugian besar. Dan menggunakan ATR sebagai sinyal untuk menilai tren.
Kombinasi multi-indikator menghasilkan kemampuan pelacakan tren yang kuat, dan retrospeksi sejarah memiliki kemampuan keuntungan yang stabil yang baik.
Indikator STC memiliki keterlambatan waktu dan mungkin melewatkan saat terbaik untuk membalikkan harga.
Indikator MA cenderung terbelakang pada saat harga berubah tajam, dan dapat menghasilkan sinyal yang salah.
Stop loss ATR dapat diputar ke dalam detik, dengan relaksasi ATR yang sesuai, atau ditutup sementara dalam tren besar.
Kombinasi multi-indikator, meskipun meningkatkan tingkat kemenangan, juga meningkatkan peluang untuk memicu stop loss. Parameter harus disesuaikan dengan tepat untuk mengurangi stop loss yang tidak perlu.
Menyesuaikan parameter STC untuk mencari kombinasi parameter yang lebih cepat merespons pembalikan
Optimalkan parameter siklus MA agar lebih baik untuk melacak tren
Pengaruh parameter untuk menguji strategi dari berbagai ATR
Mencoba indikator lain untuk menggantikan STC dan mencari indikator yang lebih cocok
Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan beberapa parameter secara otomatis
Peningkatan penilaian terhadap tren siklus besar, membedakan fase siklus besar yang berbeda
Strategi STC MA ATR menggunakan tiga indikator untuk menangkap titik balik tren, untuk mencapai perdagangan pelacakan tren yang stabil. Kombinasi indikator memfilter sinyal palsu, risiko pengendalian stop loss, memiliki kecocokan dan stabilitas yang kuat. Dengan pengoptimalan parameter dan pengenalan algoritma, kinerja strategi dapat ditingkatkan lebih lanjut.
/*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