Sumber dimuat naik... memuat...

Siklus Trend Schaff dengan Strategi Crossover Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-12-12 17:43:19
Tag:

img

Ringkasan

Strategi ini dinamakan Schaff Trend Cycle with Double Moving Average Crossover Strategy. Idea utama adalah untuk menentukan kedudukan panjang dan pendek berdasarkan penunjuk Schaff Trend Cycle (STC) dan crossover purata bergerak berganda. Khususnya, apabila STC keluar dari kawasan overbought atau oversold, harga berada di atas purata bergerak eksponensial pantas, dan EMA pantas berada di atas EMA perlahan, kedudukan panjang dibuka. Sebaliknya, kedudukan pendek dibuka.

Logika Strategi

Strategi ini bergantung terutamanya pada dua penunjuk teknikal:

  1. Indikator Trend: Indikator STC untuk menentukan arah trend. STC merangkumi garis indikator MACD, Stochastic, dan STC. Penembusan ke atas dari zon 0-25 menandakan trend bullish, sementara penembusan ke bawah dari zon 75-100 menandakan trend bearish.

  2. Crossover purata bergerak: Purata bergerak mudah pantas (periode lalai 35) melintasi di atas / di bawah SMA perlahan (periode lalai 200). Isyarat menaik dipicu apabila SMA pantas melintasi di atas SMA perlahan. Isyarat menurun dipicu pada crossover bertentangan.

Logik isyarat dagangan ditakrifkan sebagai berikut:

  1. Isyarat panjang: STC pecah di atas garisan 25, SMA pantas di atas SMA perlahan, dan harga penutupan di atas SMA pantas.

  2. Isyarat pendek: STC pecah di bawah garis 75, SMA pantas di bawah SMA perlahan, dan harga penutupan di bawah SMA pantas.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Isyarat perdagangan yang boleh dipercayai daripada menggabungkan trend dan indikator purata bergerak.

  2. Tempoh purata bergerak yang boleh disesuaikan. Tempoh MA boleh dioptimumkan untuk keadaan pasaran yang berbeza.

  3. Risiko yang boleh dikawal. STC mengenal pasti tahap overbought / oversold untuk mengelakkan membeli puncak dan menjual bahagian bawah. Henti sasaran menetapkan julat keuntungan / kerugian 400 mata.

Analisis Risiko

Terdapat beberapa risiko yang perlu dipertimbangkan:

  1. Potensi untuk STC palsu breakouts. perlu disahkan oleh tindakan harga.

  2. Lebih banyak isyarat palsu dari persimpangan MA.

  3. Hanya berdagang dalam satu arah pada satu masa. Mengehadkan ruang untuk kedudukan terbuka.

  4. Tidak ada penanganan risiko spread dalam perdagangan FX margin. Spread boleh menjadi besar dalam perdagangan langsung.

Pengoptimuman

Laluan pengoptimuman yang mungkin termasuk:

  1. Sesuaikan STC overbought / oversold parameter.

  2. Mengoptimumkan tempoh MA untuk meningkatkan kebolehpercayaan isyarat silang.

  3. Tambah penapis tambahan seperti Bollinger Bands untuk mengurangkan perdagangan pecah palsu.

  4. Melaksanakan logik perdagangan dua arah untuk meningkatkan kapasiti.

  5. Tambah logik stop loss untuk mengawal kerugian setiap perdagangan.

Kesimpulan

Ringkasnya, strategi ini menggabungkan trend dan indikator crossover purata bergerak untuk menentukan arah trend dan masa kemasukan. Dengan kawalan risiko yang betul, ia dapat mencapai pulangan yang baik. Logik yang mudah membuatnya mudah difahami dan dioptimumkan di pelbagai keadaan pasaran, sesuai untuk pemula.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Shaff Trend Cycle coded by Alex Orekhov (everget)
// Strategy and its additional conditions provided by greenmask
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("STC", shorttitle="STC")

fastLength = input(title="MACD Fast Length", type=input.integer, defval=23)
slowLength = input(title="MACD Slow Length", type=input.integer, defval=50)
cycleLength = input(title="Cycle Length", type=input.integer, defval=10)
d1Length = input(title="1st %D Length", type=input.integer, defval=3)
d2Length = input(title="2nd %D Length", type=input.integer, defval=3)
src = close
highlightBreakouts = input(title="Highlight Breakouts ?", type=input.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] ? color.green : color.red) : #ff3013
stcPlot = plot(stc, title="STC", color=stcColor, transp=0)
upper = 75
lower = 25
transparent = color.new(color.white, 100)
upperLevel = plot(upper, title="Upper", color=color.gray)
hline(50, title="Middle", linestyle=hline.style_dotted)
lowerLevel = plot(lower, title="Lower", color=color.gray)

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

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

fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
targetvalue = input(title="Target/stop", type=input.integer, defval=400)

ma1length = input(title="SMA1", type=input.integer, defval=35)
ma2length = input(title="SMA2", type=input.integer, defval=200)
ma1 = ema(close,ma1length)
ma2 = ema(close,ma2length)

bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1
bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1

if (bullbuy)
    strategy.entry("Riposte", strategy.long, ordersize)
    strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)

if (bearsell)
    strategy.entry("Riposte", strategy.short, ordersize)
    strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)

//plotshape(bullbuy,  title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")
//plotshape(bearsell,  title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")
















Lebih lanjut