Strategi Siklus Tren Schaff dengan Mengikuti Momentum


Tanggal Pembuatan: 2023-11-01 16:08:35 Akhirnya memodifikasi: 2023-11-01 16:08:35
menyalin: 2 Jumlah klik: 855
1
fokus pada
1617
Pengikut

Strategi Siklus Tren Schaff dengan Mengikuti Momentum

Ringkasan

Strategi ini didasarkan pada indikator siklus tren Schaff, yang menggabungkan prinsip overbought dan oversold dari Stoch RSI, untuk menilai dan mengikuti tren melalui indikator dinamis. Ketika harga menembus zona overbought, lakukan overbought; Ketika harga jatuh dari zona overbought ke zona overbought, lakukan overbought. Strategi ini menangkap titik perubahan tren harga, menyesuaikan posisi secara dinamis, dan melacak pergerakan harga.

Prinsip Strategi

    1. Hitung MACD, di mana Fast Length default adalah 23, Slow Length default adalah 50. MACD mencerminkan perbedaan antara rata-rata bergerak jangka pendek dan jangka panjang, yang digunakan untuk menilai pergerakan harga.
    1. MACD diproses oleh Stoch RSI untuk menghasilkan nilai K, di mana Cycle Length default adalah 10, yang mencerminkan overbought dan oversold dari indikator momentum MACD.
    1. Untuk nilai K, rata-rata bergerak berbobot, membentuk nilai D, di mana 1st %D Length default adalah 3, menghapus kebisingan dalam nilai K.
    1. Nilai D diproses lagi oleh Stoch RSI untuk membentuk nilai STC awal, di mana 2nd % D Length default adalah 3, untuk membentuk sinyal overbought dan oversold yang tepat.
    1. Untuk STC awal, rata-rata bergerak berbobot, yang menghasilkan nilai STC akhir, berkisar antara 0 dan 100. STC di atas 75 adalah zona overbought, dan di bawah 25 adalah zona oversold.
    1. Ketika STC dari bawah ke atas melampaui 25, lakukan lebih banyak; ketika STC dari atas ke bawah melampaui 75, lakukan kosong.

Keunggulan Strategis

    1. Indikator STC yang menggabungkan desain Stoch RSI dapat dengan jelas mengidentifikasi area overbought dan oversold untuk membentuk sinyal tren yang lebih kuat.
    1. Dengan filter RSI Stoch ganda, penembusan palsu dapat disaring secara efektif.
    1. STC membentuk kisaran standarisasi 0-100 yang dapat memfasilitasi pembentukan sinyal perdagangan mekanis.
    1. Strategi Retargeting memungkinkan pencoblosan visual dan peringatan pop-up teks untuk menangkap peluang perdagangan dengan jelas dan intuitif.
    1. Strategi ini menggunakan kombinasi parameter yang dioptimalkan untuk secara efektif mengendalikan transaksi yang tidak penting dan menghindari terlalu sensitif.

Risiko Strategis

    1. Indeks STC sensitif terhadap parameter, dan perlu menyesuaikan kombinasi parameter untuk berbagai mata uang dan periode waktu yang berbeda untuk menyesuaikan dengan karakteristik pasar.
    1. Strategi penembusan perdagangan mudah ditiru dan perlu pengaturan stop loss untuk mengendalikan risikonya.
    1. Penembusan palsu di pasar dengan likuiditas rendah dapat memicu sinyal yang salah, yang perlu disaring dengan kombinasi indikator seperti volume lalu lintas.
    1. Strategi ini hanya didasarkan pada indikator STC, yang dapat dikombinasikan dengan faktor-faktor lain untuk menentukan konfirmasi tren, menghindari terbaliknya stop loss.
    1. Perhatian harus diberikan pada titik-titik resistensi pendukung yang penting untuk menghindari sinyal yang salah di daerah tersebut.

Arah optimasi strategi

    1. Mengoptimalkan kombinasi parameter MACD untuk menyesuaikan dengan siklus dan mata uang yang berbeda.
    1. Optimalkan nilai K dan nilai D dari parameter Stoch RSI untuk meluruskan kurva STC.
    1. Menggabungkan indikator volume transaksi untuk menghindari terobosan palsu di pasar dengan likuiditas rendah.
    1. Menambahkan penilaian indikator lainnya untuk mengkonfirmasi sinyal tren, seperti Brinks.
    1. Menambahkan mekanisme stop loss, seperti stop loss mobile atau stop loss ATR.
    1. Penyesuaian posisi masuk, misalnya masuk kembali setelah terobosan, untuk memastikan konfirmasi tren.

Meringkaskan

Strategi Schaff Trend Cycle Strategi Schaff Trend Cycle Strategi Schaff Trend Cycle Strategi Schaff Trend Cycle Strategi Schaff Trend Cycle Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff Strategi Schaff

Kode Sumber Strategi
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("Schaff Trend Cycle", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source",  defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)

k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))

d = ema(k, d1Length)

kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

//stcColor = not highlightBreakouts ? (stc > stc[1] ? green : red) : #ff3013
//stcPlot = plot(stc, title="STC", color=stcColor, transp=0)

upper = input(75, defval=75)
lower = input(25, defval=25)

transparent = color(white, 100)

upperLevel = plot(upper, title="Upper", color=gray)
// hline(50, title="Middle", linestyle=dotted)
lowerLevel = plot(lower, title="Lower", color=gray)

fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)

upperFillColor = stc > upper and highlightBreakouts ? green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? red : transparent

//fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
//fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)

plotshape(crossover(stc, lower) ? lower : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=0)
plotshape(crossunder(stc, upper) ? upper : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=0)

alertcondition(long_final, "Long", message="Long")
alertcondition(short_final,"Short", message="Short")

plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)