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.
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.
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.
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.
Strategi ini mengambil sinyal STC sebagai waktu utama untuk masuk, menggunakan MA sebagai penilaian tren tambahan, dan ATR untuk stop loss dan take profit.
Strategi ini menggabungkan beberapa indikator untuk menilai tren dan titik pembalikan, meningkatkan keakuratan sinyal perdagangan.
STC dapat menangkap sinyal pembalikan dan menghindari terjebak dalam tren. MA menyaring sinyal pembalikan yang tidak pasti untuk memastikan mengikuti tren utama.
ATR menetapkan stop loss dan take profit dinamis berdasarkan volatilitas pasar, menghindari kerugian besar.
Kombinasi dari beberapa indikator membentuk kemampuan melacak tren yang kuat.
STC memiliki keterlambatan waktu, yang mungkin kehilangan waktu yang optimal untuk pembalikan harga.
MA cenderung tertinggal selama perubahan harga yang keras, yang dapat menghasilkan sinyal yang salah.
Stop loss ATR dapat dipukul dalam hitungan detik.
Lebih banyak indikator berarti lebih banyak peluang untuk mencapai stop loss. Parameter harus disesuaikan untuk menghindari stop loss yang tidak perlu.
Sesuaikan parameter STC untuk menemukan kombinasi responsif yang lebih cepat untuk pembalikan.
Mengoptimalkan parameter periode MA untuk pelacakan tren yang lebih baik.
Dampak uji dari kelipatan ATR yang berbeda.
Cobalah mengganti STC dengan indikator lain agar lebih cocok.
Memperkenalkan algoritma pembelajaran mesin untuk optimasi otomatis multi-parameter.
Pertimbangkan tren siklus besar dan membedakan tahap yang berbeda.
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