
Strategi ini disebut strategi crossover rata-rata yang melintasi trend yang melintasi trend, dan ide utamanya adalah untuk menilai lebih banyak shorting. Secara khusus, strategi ini menggunakan indikator siklus tren Schaff (Schaff Trend Cycle, STC) dan crossover rata-rata ganda.
Strategi ini didasarkan pada dua indikator teknis:
Indikator tren: Indikator STC, menentukan arah tren. Indikator STS terdiri dari indikator MACD, indikator Stoch, dan garis indikator STC.
Persilangan rata-rata: persilangan rata-rata bergerak sederhana cepat (default cycle 35) dan rata-rata bergerak sederhana lambat (default cycle 200). Di atas garis cepat melewati garis lambat untuk sinyal multihead, di bawah garis cepat melewati garis lambat untuk sinyal kosong.
Logika penilaian sinyal perdagangan untuk strategi ini adalah sebagai berikut:
Melakukan lebih banyak sinyal: Melakukan lebih banyak ketika indikator STC melintasi garis 25 ke atas, dan rata-rata bergerak cepat sederhana lebih tinggi dari rata-rata bergerak cepat sederhana, dan harga lebih tinggi dari rata-rata bergerak cepat sederhana.
Sinyal Keluar: Indikator STC melintasi garis 75 ke bawah, dan rata-rata bergerak cepat sederhana lebih rendah dari rata-rata bergerak cepat sederhana, dan harga lebih rendah dari rata-rata bergerak cepat sederhana.
Strategi ini memiliki keuntungan sebagai berikut:
Kombinasi indikator tren dan indikator rata-rata, sinyal perdagangan lebih dapat diandalkan. Indikator STC menentukan arah tren besar, indikator ganda rata-rata menentukan masuk tertentu.
Parameter garis rata-rata dapat disesuaikan. Parameter garis rata-rata dapat disesuaikan dengan pasar, dan strategi dapat dioptimalkan.
Risiko dapat dikontrol. Indikator STC menilai zona overbought dan oversold, menghindari penarikan di zona ekstrim. Target Stop Loss diatur dalam 400 titik Stop Loss Range.
Strategi ini juga memiliki beberapa risiko:
Indikator STC dapat mengalami false breakout. Pertimbangan harus dilakukan dengan entitas harga.
Persilangan garis rata-rata dapat menghasilkan lebih banyak sinyal palsu. Parameter siklus garis rata-rata perlu disesuaikan.
Hanya melakukan transaksi satu arah. Ruang terbatas.
Risiko slippage yang tidak ditangani dalam transaksi sekuritas forex. Slippage di real mungkin lebih besar.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Menyesuaikan parameter STC untuk mengoptimalkan penilaian overbought dan oversold.
Optimalkan siklus rata-rata, meningkatkan keandalan sinyal silang.
Menambahkan indikator filter lain, filter penembusan palsu.
Meningkatkan logika transaksi dua arah. Mengurangi risiko spasial.
Tambahkan logika stop loss. Kontrol kerugian tunggal.
Strategi ini menggunakan indikator tren dan indikator silang rata untuk menentukan arah tren dan titik masuk spesifik. Dengan memastikan kondisi kontrol risiko tertentu, keuntungan yang lebih baik dapat diperoleh. Model strategi ini sederhana dan jelas, mudah dipahami, dan mudah untuk menyesuaikan parameter dan mengoptimalkan fungsi sesuai dengan pasar yang berbeda, cocok untuk belajar dan aplikasi 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")