
Idea teras strategi ini adalah menggabungkan indikator KST dan garis rata EMA, untuk menilai dan mengikuti trend. Beli apabila indikator KST muncul garpu emas dan lebih rendah daripada 0, dan jual apabila garpu mati muncul dan lebih tinggi daripada 0. Bersama-sama dengan garis rata EMA sebagai rintangan sokongan, isyarat perdagangan dikeluarkan hanya apabila harga penutupan menembusi garis rata EMA.
Mengira Indeks KST: Mengira Indeks ROC pada 10, 15, 20, dan 30 hari, kemudian mengagihkan jumlahnya, dan akhirnya mendapatkan Indeks KST melalui SMA 9 hari.
Hitung garis purata EMA: Hitung garis purata EMA dengan panjang 50
Menjana isyarat beli: Isyarat beli dihasilkan apabila garis cepat indikator KST melintasi garis perlahan (gold fork) dan berada di bawah 0, sementara harga penutupan berada di atas garis purata EMA.
Menjana isyarat jual: apabila garis cepat di bawah indikator KST menembusi garis perlahan (dead fork) dan lebih tinggi daripada 0, dan harga penutupan berada di bawah garis purata EMA, menghasilkan isyarat jual.
Tetapkan Hentian Bergerak: Tetapkan Hentian Bergerak sebagai 1% daripada nilai akaun untuk menghentikan Hentian automatik.
Indikator KST dapat mengenal pasti perubahan trend, EMA Garis Persamaan dapat mengesahkan arah trend, kedua-duanya digabungkan dapat menentukan masa ENTRY dengan tepat.
Menggunakan kelajuan 0 untuk menentukan arah KST, dan mengelakkan perdagangan yang tidak perlu.
EMA rata-rata berfungsi sebagai sokongan rintangan, lebih jauh menapis isyarat palsu, hanya masuk apabila menembusi EMA.
Ia juga boleh digunakan untuk menjimatkan wang dan menjimatkan masa.
Lebih sedikit parameter strategi, mudah dilaksanakan dan dioptimumkan.
Indikator KST mempunyai kelewatan dalam menilai perubahan trend, mungkin kehilangan beberapa peluang. Anda boleh memendekkan kitaran pengiraan atau mengoptimumkan cara berat badan.
EMA rata-rata mempunyai keterlambatan, dan mungkin tidak berfungsi pada titik perubahan trend. Anda boleh mencuba petunjuk lain atau kombinasi garis rata-rata ganda.
Tetapan stop loss yang terlalu longgar akan menyebabkan kerugian bertambah besar; terlalu ketat akan dihentikan oleh turun naik yang besar dalam semalam. Perlu diuji dengan teliti untuk mencari titik keseimbangan.
Isyarat strategi sering berlaku, dan kos transaksi mungkin lebih tinggi. Syarat kemasukan boleh dikurangkan dengan sewajarnya, mengurangkan jumlah transaksi.
Mengoptimumkan parameter kitaran pengiraan untuk penunjuk KST untuk mencari kombinasi parameter yang lebih sensitif kepada varieti tertentu.
Uji pelbagai penunjuk atau gabungan garis rata, seperti MA, WMA dan lain-lain, untuk melihat mana yang lebih berkesan dengan KST.
Cuba sesuaikan stop loss dengan kadar turun naik atau ATR.
Menambah syarat penapisan, seperti peningkatan dalam jumlah transaksi, untuk mengelakkan penarikan.
Pertimbangkan untuk menggabungkannya dengan petunjuk lain seperti RSI, MACD dan sebagainya untuk menjadikan strategi lebih komprehensif.
Menguji kesan parameter pelbagai jenis, membuat program pengoptimuman untuk pelbagai jenis.
Strategi ini adalah jelas, boleh dipercayai, mudah dilaksanakan, dengan indikator KST untuk menilai perubahan trend, EMA untuk penapisan lebih lanjut, dan risiko kawalan kerugian, boleh secara automatik mengikuti trend garis panjang. Pilihan parameter adalah munasabah, ruang pengoptimuman yang besar, pengguna boleh menyesuaikan parameter mengikut keperluan, sesuai untuk pelbagai jenis, mempunyai keserasian yang baik.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")
len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)
delta = kst - sig
buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA
longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0
longStopPrice := if (strategy.position_size > 0)
stopValue = close * (1 - longTrailPerc)
max(stopValue, longStopPrice[1])
else
0
shortStopPrice := if (strategy.position_size < 0)
stopValue = close * (1 + shortTrailPerc)
min(stopValue, shortStopPrice[1])
else
999999
// Submit entry orders
if (buySignal)
strategy.entry(id="EL", long=true)
if (sellSignal)
strategy.entry(id="ES", long=false)
// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
strategy.exit(id="XL TRL STP", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="XS TRL STP", stop=shortStopPrice)
alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')
alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')