Strategi Optimasi Mengikuti Tren Rata-rata Bergerak


Tanggal Pembuatan: 2024-01-04 15:44:23 Akhirnya memodifikasi: 2024-01-04 15:44:23
menyalin: 0 Jumlah klik: 526
1
fokus pada
1621
Pengikut

Strategi Optimasi Mengikuti Tren Rata-rata Bergerak

Ringkasan

Quantitative Elasticity is a combination strategy using Stochastic and OTT indicators. Strategi ini menggunakan Stochastic untuk menghasilkan sinyal beli dan jual, dan OTT untuk memfilter sinyal, untuk mencoba menangkap tren besar dan mengurangi dampak dari sinyal palsu yang disebabkan oleh pergerakan pasar.

Prinsip Strategi

Gagasan inti dari strategi ini adalah untuk memfilter sinyal dari indikator OTT yang dilapisi pada indikator Stokastik. Indikator Stokastik membandingkan harga dengan harga tertinggi dan terendah dalam periode waktu yang ditentukan untuk menentukan apakah harga berada di daerah ekstrem. Indikator OTT menggunakan rata-rata bergerak dan stop loss dinamis untuk melacak tren.

Kode yang disetel Stochastic tinggi adalah 1080, rendah adalah 1020, dan Stochastic rata-rata adalah rentang rata-rata di antara keduanya. Ketika Stochastic menghasilkan sinyal beli / jual, kode akan menilai efektivitas sinyal berdasarkan indikator OTT. Jika harga melintasi rata-rata OTT ke atas, sinyal beli dikirim, dan jika harga melintasi rata-rata OTT ke bawah, sinyal jual dikirim.

Kombinasi ini menggunakan Stochastic untuk menilai overbought dan oversold dan mengirim sinyal masuk, OTT bertanggung jawab untuk melacak tren, memanfaatkan sinyal palsu yang disebabkan oleh penyaringan stop loss yang terlalu kuat untuk mematikan tren getaran, sehingga mengoptimalkan akurasi dan volatilitas sinyal.

Analisis Keunggulan

Strategi ini memanfaatkan kombinasi indikator Stochastic dan OTT untuk mengoptimalkan beberapa hal berikut:

  1. Peningkatan akurasi sinyal. Stochastic menilai overbought dan oversold, OTT bertanggung jawab untuk menghapus sinyal palsu yang disebabkan oleh tren getaran.
  2. Mengurangi volatilitas strategi. Membatasi kerugian dengan stop loss dinamis, memfilter banyak false breakout.
  3. Stochastic memberikan sinyal dasar, OTT melacak tren utama.
  4. Mengurangi gangguan sinyal yang berlebihan. Meningkatkan kualitas sinyal sekaligus mengurangi sinyal yang tidak berguna.
  5. Pengaturan Stop Loss Dinamis Berkuantitatif. Penjaminan Kualitatif terhadap kerugian saat ini, mengurangi lebih lanjut volatilitas strategi.
  6. Sistem ini menggabungkan indikator trend dan overbought dan oversold. Menggunakan kedua indikator untuk saling mengoptimalkan kelemahan.

Secara keseluruhan, strategi ini secara efektif meningkatkan kualitas sinyal dan keuntungan strategi dengan menggunakan OTT untuk memfilter sinyal stochastic, sementara mengurangi jumlah transaksi dan volatilitas strategi, mencapai efek mendekati tren, risiko rendah, dan keuntungan tinggi.

Analisis risiko

  • Strategi ini memiliki ruang lingkup yang relatif sempit. Ini terutama berlaku untuk saham dengan tren yang jelas.
  • Bergantung sepenuhnya pada aspek teknis. Strategi tidak mempertimbangkan dasar-dasar saham dan aspek makro pasar, ada kebutaan tertentu.
  • Pengaturan parameter sensitif. Beberapa parameter dari Stochastic dan OTT membutuhkan penyesuaian profesional, yang dapat mempengaruhi profitabilitas strategi.
  • Stop loss terlalu longgar. Mengambil kerugian potensial tertentu yang perlu dioptimalkan lebih lanjut.
  • False breakout dan shock dapat menyebabkan kerugian dan gangguan sinyal. Perlu mengubah kondisi penilaian dan kondisi stop loss.

Untuk mengatasi risiko-risiko tersebut, langkah-langkah berikut dapat dilakukan:

  1. Kombinasi parameter yang berbeda digunakan untuk berbagai kategori saham.
  2. “Kalau ada yang tidak setuju, saya tidak akan mengusulkan hal itu”, kata dia.
  3. Optimalisasi tes parameter untuk mencari pengaturan optimal.
  4. Menggunakan stop loss mobile untuk mengurangi risiko lebih lanjut.
  5. Perubahan kriteria penilaian, dengan mekanisme pengakuan sinyal yang lebih ketat.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Sesuaikan parameter sesuai dengan pasar dan kategori saham yang berbeda. Nilai default sekarang adalah universal, dan Anda dapat menguji masing-masing saham untuk menemukan kombinasi parameter yang optimal.

  2. Memperkenalkan mekanisme stop loss dan stop loss bergerak. Saat ini digunakan stop loss tetap yang dinamis, tidak dapat secara dinamis melacak kerugian dan keuntungan. Dapat diuji untuk memperkenalkan stop loss dan stop loss bergerak untuk mengontrol lebih lanjut strategi risiko dan keuntungan.

  3. Logika penilaian sinyal yang dioptimalkan. Logika penilaian saat ini lebih sederhana, dengan harga yang naik turun langsung menandai sinyal beli dan jual. Dapat dipertimbangkan untuk menggabungkan lebih banyak indikator dan penilaian bentuk harga untuk memastikan keandalan sinyal.

  4. Menambahkan kondisi pembukaan posisi dan mekanisme penyaringan. Strategi saat ini menangani setiap sinyal tanpa perbedaan. Dapat memperkenalkan kondisi pembukaan posisi seperti indikator kuantitatif, indikator volume transaksi, dan menambahkan jendela waktu sinyal tertentu untuk menyingkirkan sinyal palsu.

  5. Untuk menguji kombinasi antara berbagai indikator dengan OTT. Saat ini, kombinasi antara Stochastic dan OTT digunakan. Indikator lain seperti MACD, RSI, dan lain-lain dapat diuji.

  6. Modul pengelolaan dana dan manajemen posisi yang terintegrasi. Tidak ada mekanisme pengelolaan dana dan pengendalian posisi saat ini, sepenuhnya bergantung pada stop loss.

Meringkaskan

Glitter of Quantification adalah strategi kuantitatif yang secara organik menggabungkan indikator Stochastic dan OTT. Ini memanfaatkan keunggulan yang saling melengkapi dari kedua indikator, meningkatkan akurasi sinyal, dan secara efektif menangkap tren besar sekaligus mengurangi risiko.

Strategi ini memiliki keuntungan dari tingkat kesalahan yang rendah, sinyal yang jelas, dan volatilitas yang kecil. Ini meningkatkan keandalan sinyal, mengoptimalkan tingkat stop loss, mengurangi frekuensi perdagangan, dan merupakan strategi kuantitatif yang disarankan.

Pada saat yang sama, strategi ini juga memiliki ruang untuk perbaikan. Dengan cara mengoptimalkan parameter, memperbaiki mekanisme stop loss, dan meningkatkan mekanisme sinyal dan penyaringan, strategi ini dapat dikembangkan ke arah yang lebih stabil, otomatis, dan cerdas, yang merupakan tujuan pekerjaan kami selanjutnya.

Kode Sumber Strategi
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic


strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2)
periodK = input(250, title="%K Length", minval=1)
smoothK = input(50, title="%K Smoothing", minval=1)
src1 = input(close, title="Source")
length=input(3, "OTT Period", minval=1)
percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=false)
showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false)
Var_Func1(src1,length)=>
    valpha1=2/(length+1)
    vud11=src1>src1[1] ? src1-src1[1] : 0
    vdd11=src1<src1[1] ? src1[1]-src1 : 0
    vUD1=sum(vud11,9)
    vDD1=sum(vdd11,9)
    vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1))
    VAR1=0.0
    VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1])
VAR1=Var_Func1(src1,length)
k = Var_Func1(stoch(close, high, low, periodK), smoothK)
src=k+1000
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
h0 = hline(1080, "Upper Band", color=#606060)
h1 = hline(1020, "Lower Band", color=#606060)
fill(h0, h1, color=#9915FF, transp=80, title="Background")
plot(k+1000, title="%K", color=#0094FF)
MAvg=Var_Func(src, length)
fark=MAvg*percent*0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)
alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!")
alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!")
alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!")
buySignalc = crossover(src, OTT[2])
plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallc = crossunder(src, OTT[2])
plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

dummy0 = input(true, title = "=Backtest Inputs=")
FromDay    = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear   = input(defval = 2005, title = "From Year", minval = 2005)
ToDay      = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "To Year", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if buySignalc
    strategy.entry("Long", strategy.long,when=Timerange())
if sellSignallc
    strategy.entry("Short", strategy.short,when=Timerange())