Idea utama strategi ini adalah menggabungkan petunjuk KST dan garis EMA untuk mengenal pasti dan mengikuti trend. Ia menghasilkan isyarat beli apabila petunjuk KST melintasi di atas 0 dan ditutup di atas garis EMA, dan isyarat jual apabila melintasi di bawah 0 dan ditutup di bawah garis EMA. Strategi yang mudah dan praktikal ini dapat mengesan trend secara automatik dan sesuai untuk pegangan jangka menengah hingga panjang.
Mengira penunjuk KST: Mengira ROC 10, 15, 20 dan 30 tempoh, mengambil jumlah tertimbang, dan meratakan dengan SMA 9 tempoh untuk memperoleh penunjuk KST.
Mengira garis EMA: Mengira garis EMA 50 tempoh.
Menghasilkan isyarat beli: Apabila garis KST pantas melintasi di atas garis KST perlahan (salib emas) dan di bawah 0, sementara penutupan di atas garis EMA, isyarat beli dicetuskan.
Menghasilkan isyarat jual: Apabila garis KST pantas melintasi di bawah garis KST perlahan (salib mati) dan di atas 0, sementara penutupan di bawah garis EMA, isyarat jual dicetuskan.
Tetapkan stop loss: Stop loss menjejaki 1% daripada nilai akaun untuk merealisasikan stop loss automatik.
KST mengenal pasti perubahan trend, EMA mengesahkan arah.
Menggunakan silang cepat / perlahan dan garis 0 mengelakkan perdagangan yang tidak perlu.
EMA sebagai sokongan / rintangan lagi menapis isyarat palsu.
Stop loss automatik mengawal risiko dan membolehkan keuntungan berjalan.
Parameter mudah menjadikan pelaksanaan dan pengoptimuman mudah.
KST mempunyai kelewatan dalam mengesan perubahan trend, mungkin terlepas beberapa peluang.
EMA telah ketinggalan di sekitar pembalikan trend. penunjuk lain atau combos MA mungkin berfungsi lebih baik.
Stop loss yang terlalu luas meningkatkan kerugian, terlalu ketat akan dihentikan oleh pucuk.
Isyarat yang kerap boleh meningkatkan kos transaksi. Boleh mengetatkan peraturan kemasukan untuk mengurangkan perdagangan.
Mengoptimumkan tempoh KST untuk kepekaan kepada instrumen tertentu.
Uji purata bergerak lain seperti MA, WMA untuk melihat mana yang paling sesuai dengan KST.
Eksperimen berhenti dinamik berdasarkan metrik turun naik seperti ATR.
Tambah penapis seperti lonjakan volume untuk mengelakkan perangkap.
Pertimbangkan untuk menggabungkan dengan penunjuk seperti RSI, MACD untuk lebih banyak dimensi.
Uji parameter di seluruh instrumen untuk mengoptimumkan untuk setiap.
Strategi ini mempunyai logik yang jelas dan boleh dipercayai yang mudah dilaksanakan. KST mengenal pasti perubahan trend, penapis EMA lebih lanjut, dan menghentikan risiko kawalan. Ia secara automatik mengesan trend jangka menengah hingga panjang. Parameter yang munasabah menyediakan ruang pengoptimuman yang besar. Pengguna boleh mengubah alat yang berbeza. Boleh digunakan untuk pemula untuk belajar dan profesional untuk membina. Dengan pengoptimuman lanjut ia menunjukkan janji sebagai sistem trend berikut yang mantap.
/*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')