
Strategi lintas garis K standar deviasi multi-periode adalah strategi pelacakan tren yang khas. Strategi ini dibangun dengan menghitung nilai standar deviasi dari berbagai periode waktu (seperti garis matahari, garis hari, garis bulan, dll), membangun beberapa kelompok garis K dan D, lalu mengambil rata-rata dari garis-garis ini untuk membangun garis rata-rata, ketika garis cepat melewati garis lambat lebih banyak, dan kosong ketika melewati. Strategi ini memanfaatkan sepenuhnya kemampuan prediksi standar deviasi periode yang berbeda, dengan menggabungkan rata-rata standar deviasi dari beberapa periode, dapat secara efektif menyaring kebisingan pasar, dan mengunci tren utama pasar.
Logika inti dari strategi ini adalah untuk menghitung standar deviasi dalam beberapa periode waktu, dan kemudian mengambil rata-rata untuk membangun sinyal perdagangan.
Pertama, strategi ini disetujui.stoch()Fungsi menghitung nilai K standar deviasi di bawah parameter yang berbeda, di sini dihitung total 5 set nilai K, periode waktu yang sesuai adalah garis matahari, garis lingkaran, dan garis bulan.
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
...
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
Kemudian perhitungkan garis D dengan parameter yang berbeda:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
Selanjutnya, perhitungkan rata-rata dari setiap kelompok garis K dan D untuk membangun garis cepat Kavg dan garis lambat Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Akhirnya, ketika menggunakan kabel cepat, lakukan lebih banyak dan ketika menggunakan kabel lambat, lakukan lebih sedikit:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
Dengan menggabungkan rata-rata standar deviasi dari beberapa periode waktu, Anda dapat menghapus kebisingan pasar dalam periode waktu yang lebih besar dan mengunci arah tren utama.
Larutan:
Menambahkan kondisi penyaringan untuk menghindari kebocoran palsu jangka pendek
Menggunakan pengaturan siklus adaptif untuk menyesuaikan parameter siklus sesuai dengan tingkat fluktuasi pasar
Tetapkan stop loss bergerak untuk stop loss tepat waktu dan hindari mengejar tinggi dan rendah
Optimalkan parameter siklus rata-rata untuk menemukan titik keseimbangan optimal
Menggabungkan lebih banyak sinyal indikator untuk meningkatkan stabilitas strategi
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Mengintegrasikan sinyal indikator lain, seperti MACD, Bollinger Bands, dan lain-lain, dapat meningkatkan kualitas sinyal
Menambahkan filter tren, seperti memperkenalkan arah SMA rata-rata, indikator seperti ADX untuk menilai tren, menghindari perdagangan berlawanan
Menggunakan pengaturan siklus adaptif untuk menyesuaikan parameter siklus secara dinamis sesuai dengan volatilitas pasar
Menambahkan strategi stop loss yang bergerak, mengatur stop loss sesuai dengan parameter strategi, dan menghentikan stop loss tepat waktu
Optimalkan parameter periodik rata-rata garis cepat dan lambat untuk menemukan kombinasi parameter yang optimal
Menambahkan kondisi penyaringan terbuka untuk menghindari sinyal yang tertipu oleh kebisingan jangka pendek
Cobalah strategi masuk breakout, buka posisi setelah melewati garis rata-rata.
Uji strategi keluar yang berbeda, seperti Chandelier Exit, untuk mengoptimalkan stop loss
Strategi lintas garis K-standar deviasi periode waktu ganda mengintegrasikan kemampuan indikator deviasi standar untuk melacak tren dan stabilitas strategi rata-rata. Dengan menghitung rata-rata garis K dan garis D dari deviasi standar periode ganda, sinyal perdagangan dapat dibangun untuk memanfaatkan prediksi indikator deviasi standar pada skala waktu yang berbeda, memfilter kebisingan pasar, dan menangkap arah tren utama. Strategi ini memiliki ruang untuk penyetelan parameter, yang dapat dioptimalkan dengan menyesuaikan parameter siklus dan memperkenalkan lebih lanjut kondisi penyaringan, strategi stop loss, dan sebagainya untuk mendapatkan efek strategi yang lebih baik.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)
price = input(close)
///////////////////////////////
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothD = input(34)
d = sma(k, smoothD)
///////////////////////////
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
smoothD1 = input(55)
d1 = sma(k1, smoothD1)
//////////////////////////////////////
smoothK2 = input(144)
SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)
smoothD2 = input(89)
d2 = sma(k2, smoothD2)
/////////////////////////////////////
smoothK3 = input(233)
SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)
smoothD3 = input(144)
d3 = sma(k3, smoothD3)
////////////////////////////////////////////////
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
/////////////////////////////////////////////////
Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)
Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)
///////////////////////////////////////
hline(50, color=gray)
long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal)
//len1 = input(3)
//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]
//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)