Strategi Kitaran Aliran Schaff dengan Momentum Mengikuti


Tarikh penciptaan: 2023-11-01 16:08:35 Akhirnya diubah suai: 2023-11-01 16:08:35
Salin: 2 Bilangan klik: 855
1
fokus pada
1617
Pengikut

Strategi Kitaran Aliran Schaff dengan Momentum Mengikuti

Gambaran keseluruhan

Strategi ini berdasarkan kepada indikator kitaran trend Schaff, yang digabungkan dengan prinsip overbought dan oversold dari Stoch RSI, untuk menilai dan mengikuti trend melalui indikator dinamik. Apabila harga menembusi ke dalam zona overbought, buat lebih banyak; apabila harga jatuh ke dalam zona overbought, buat kosong. Strategi ini menangkap titik perubahan dalam trend harga, menyesuaikan kedudukan secara dinamik, dan mengesan pergerakan harga.

Prinsip Strategi

    1. Hitung MACD, di mana Fast Length mempunyai nilai lalai 23 dan Slow Length mempunyai nilai lalai 50. MACD mencerminkan perbezaan antara purata bergerak jangka pendek dan jangka panjang untuk menentukan pergerakan harga.
    1. MACD diproses oleh Stoch RSI untuk membentuk nilai K, di mana Cycle Length mempunyai nilai lalai 10, yang mencerminkan indikator pergerakan MACD yang lebih baik daripada yang lebih baik.
    1. Rata-rata bergerak bertimbangan kepada nilai K, membentuk nilai D, di mana 1st % D Length adalah 3, dan noise dalam nilai K telah dihapuskan.
    1. Nilai D sekali lagi diproses oleh Stoch RSI untuk membentuk nilai STC awal, di mana nilai lalai 2nd % D Length adalah 3, membentuk isyarat overbought dan oversold yang tepat.
    1. Rata-rata bergerak bertimbangan kepada nilai STC awal, yang akan menghasilkan nilai STC akhir, berkisar antara 0-100 ◦ STC lebih tinggi daripada 75 adalah kawasan yang terlalu banyak dibeli, dan lebih rendah daripada 25 adalah kawasan yang terlalu banyak dijual ◦
    1. Apabila STC dari bawah ke atas mencecah 25, buat lebih; apabila STC dari atas ke bawah mencecah 75, buat kosong.

Kelebihan Strategik

    1. Indeks STC menggabungkan reka bentuk Stoch RSI untuk mengenal pasti kawasan overbought dan oversold dengan jelas dan membentuk isyarat trend yang lebih kuat.
    1. Dengan penapis RSI Stoch yang berganda, penyaringan palsu boleh dilakukan dengan berkesan.
    1. STC membentuk julat standard 0-100 yang memudahkan pembentukan isyarat perdagangan mekanisasi.
    1. Retrospeksi strategi ini mewujudkan penanda penembusan visual dan amaran tetingkap terjun teks yang dapat menangkap peluang perdagangan dengan jelas dan intuitif.
    1. Strategi ini menggunakan kombinasi parameter yang dioptimumkan untuk mengawal perdagangan yang tidak penting dan mengelakkan terlalu sensitif.

Risiko Strategik

    1. Indeks STC sensitif terhadap parameter, dan perlu menyesuaikan kombinasi parameter untuk pelbagai mata wang dan tempoh masa untuk menyesuaikan diri dengan ciri-ciri pasaran.
    1. Strategi perdagangan terobosan mudah dirampas dan perlu menetapkan stop loss untuk mengawal risiko.
    1. Penembusan palsu di pasaran yang kurang turun naik boleh mencetuskan isyarat yang salah, dan perlu disaring dengan penunjuk seperti jumlah trafik gabungan.
    1. Strategi ini hanya berdasarkan kepada indikator STC dan boleh digabungkan dengan faktor-faktor lain untuk menentukan pengesahan trend dan mengelakkan terbalikkan.
    1. Perhatian perlu diberikan kepada tahap rintangan sokongan utama untuk mengelakkan isyarat salah di kawasan tersebut.

Arah pengoptimuman strategi

    1. Mengoptimumkan kombinasi parameter MACD untuk menyesuaikan diri dengan tempoh dan mata wang yang berbeza.
    1. Optimumkan nilai K dan nilai D parameter Stoch RSI, meluruskan keluk STC.
    1. Gabungan penunjuk kadar pertukaran untuk mengelakkan penembusan palsu di pasaran yang kurang cair.
    1. Menambah penghakiman indikator lain untuk mengesahkan isyarat trend, seperti Blink.
    1. Menambah mekanisme hentian kerugian, seperti hentian bergerak atau hentian ATR.
    1. Penyesuaian kedudukan masuk, contohnya masuk semula selepas penembusan, memastikan trend disahkan.

ringkaskan

Strategi kitaran trend Schaff menentukan kawasan overbought dan oversold melalui indikator momentum dan dengan ini menilai perubahan trend jangka pendek dalam harga. Strategi ini mudah dan jelas, boleh disesuaikan dengan parameter pasaran yang berbeza, tetapi juga terdapat risiko tersandung.

Kod 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)