Quant Lights Moving Average Trend Tracking Strategi Optimasi

Penulis:ChaoZhang, Tanggal: 2024-01-04 15:44:23
Tag:

img

Gambaran umum

Quant Lights adalah strategi gabungan yang menggunakan indikator Stochastic dan indikator OTT. Strategi ini menggunakan indikator Stochastic untuk menghasilkan sinyal beli dan jual, dan menggabungkannya dengan indikator OTT untuk menyaring sinyal, mencoba menangkap tren besar dan mengurangi dampak fluktuasi pasar yang menyebabkan sinyal palsu.

Prinsip Strategi

Ide inti dari strategi ini adalah untuk menumpuk indikator OTT pada indikator Stochastic untuk penyaringan sinyal. Indikator Stochastic membandingkan harga dengan harga tertinggi dan terendah dalam periode waktu yang ditentukan untuk menilai apakah harga berada di daerah ekstrem. Indikator OTT menggunakan moving average dan stop dinamis untuk melacak tren.

Kode ini menetapkan tingkat tinggi dari Stochastic pada 1080 dan tingkat rendah pada 1020. Ketika nilai Stochastic berada di antara mereka, itu adalah area yang terikat rentang. Ketika Stochastic menghasilkan sinyal beli / jual, kode akan menentukan validitas sinyal berdasarkan indikator OTT. Jika harga melintasi di atas garis rata-rata OTT, sinyal beli dikeluarkan. Jika harga melintasi di bawah garis rata-rata OTT, sinyal jual dikeluarkan.

Kombinasi ini memanfaatkan Stochastic untuk menentukan kondisi overbought dan oversold dan menghasilkan sinyal masuk, sementara OTT bertanggung jawab untuk melacak tren dan menggunakan berhenti untuk menyaring sinyal palsu yang disebabkan oleh fluktuasi pasar yang berlebihan, sehingga mengoptimalkan akurasi sinyal dan volatilitas.

Analisis Keuntungan

Strategi ini menggabungkan indikator Stochastic dan OTT untuk mengoptimalkan aspek berikut:

  1. Keakuratan sinyal yang lebih baik. Penghakiman stokastik kondisi overbought dan oversold, OTT menyaring sinyal palsu yang disebabkan oleh fluktuasi pasar.
  2. Mengurangi volatilitas strategi. membatasi kerugian saat ini melalui berhenti dinamis, menyaring banyak breakout palsu.
  3. Stochastic memberikan sinyal dasar dan OTT melacak tren utama.
  4. Mengurangi gangguan sinyal yang berlebihan meningkatkan kualitas sinyal sementara mengurangi sinyal yang tidak berguna.
  5. Mengukur pengaturan berhenti dinamis. Kualitatif menjamin kerugian saat ini dan lebih mengurangi volatilitas strategi.
  6. Sistem ini mengintegrasikan indikator tren dan overbought/oversold.

Singkatnya, dengan menggunakan OTT untuk menyaring sinyal Stochastic, strategi secara efektif meningkatkan kualitas sinyal dan pengembalian investasi, sekaligus mengurangi jumlah transaksi dan volatilitas strategi, mencapai efek risiko rendah, pengembalian tinggi dan pelacakan tren yang dekat.

Analisis Risiko

  • Lingkup penerapan strategi ini relatif sempit. Ini terutama cocok untuk saham dengan tren yang jelas. Ini memiliki dampak yang lebih kecil pada saham dengan fluktuasi harga yang sangat besar atau saham dalam konsolidasi lateral.
  • Strategi ini tidak mempertimbangkan dasar-dasar saham dan lingkungan makro, jadi ada beberapa titik buta.
  • Pengaturan parameter yang sensitif. Beberapa parameter dari Stochastic dan OTT membutuhkan penyesuaian profesional, jika tidak akan mempengaruhi profitabilitas strategi.
  • Stop terlalu longgar, membawa beberapa potensi kerugian yang perlu dioptimalkan lebih lanjut.
  • Akan ada kerugian tertentu dan gangguan sinyal selama pecah palsu dan fluktuasi pasar. kondisi penilaian dan kondisi berhenti perlu dimodifikasi.

Mengenai risiko di atas, langkah-langkah berikut dapat diambil untuk memperbaiki:

  1. Gunakan kombinasi parameter yang berbeda untuk berbagai jenis stok.
  2. Meningkatkan sinyal dengan memasukkan dasar-dasar dan berita.
  3. Mengoptimalkan parameter melalui pengujian untuk menemukan pengaturan yang optimal.
  4. Memperkenalkan berhenti bergerak untuk mengurangi risiko lebih lanjut.
  5. Mengubah kondisi penilaian dan menggunakan mekanisme konfirmasi sinyal yang lebih ketat.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Sesuaikan pengaturan parameter sesuai dengan pasar dan jenis saham yang berbeda. Nilai default saat ini bersifat universal dan dapat diuji secara terpisah untuk saham yang berbeda untuk menemukan kombinasi parameter yang optimal.

  2. Memperkenalkan mengambil keuntungan dan bergerak berhenti mekanisme. Saat ini menggunakan berhenti tetap dinamis tidak dapat secara dinamis melacak kerugian dan keuntungan. pengujian pengenalan bergerak berhenti dan mengambil keuntungan untuk risiko lebih lanjut dan kontrol keuntungan dapat dilakukan.

  3. Optimalkan logika penilaian sinyal. Logika penilaian saat ini relatif sederhana, secara langsung menandai sinyal beli dan jual ketika harga pecah atau turun. Lebih banyak indikator dan pola harga dapat dimasukkan untuk memastikan keandalan sinyal.

  4. Meningkatkan kondisi posisi terbuka dan mekanisme penyaringan. Strategi saat ini memproses setiap sinyal secara acak. Indikator volume, indikator volume perdagangan dan kondisi posisi terbuka lainnya dapat diperkenalkan, serta jendela waktu sinyal tertentu untuk menyaring sinyal palsu.

  5. Uji kombinasi indikator yang berbeda dengan OTT. Saat ini menggunakan kombinasi Stochastic dan OTT. Efektivitas menggabungkan indikator lain seperti MACD dan RSI dengan OTT dapat diuji.

  6. Mengintegrasikan modul manajemen modal dan ukuran posisi. Saat ini tidak ada mekanisme manajemen modal dan kontrol posisi, yang sepenuhnya bergantung pada berhenti. Berbagai jenis metode manajemen modal dan ukuran posisi dapat diuji untuk lebih mengendalikan risiko tunggal dan keseluruhan.

Ringkasan

Quant Lights adalah strategi kuantitatif yang secara organik menggabungkan indikator Stochastic dengan indikator OTT. Ini memanfaatkan kekuatan komplementer dari kedua indikator untuk meningkatkan akurasi sinyal dan secara efektif menangkap tren utama sambil mengurangi risiko.

Keuntungan dari strategi ini termasuk tingkat kesalahan yang rendah, sinyal yang jelas, dan volatilitas yang kecil.

Pada saat yang sama, masih ada ruang untuk perbaikan dalam strategi ini. Melalui optimasi parameter, peningkatan mekanisme berhenti, peningkatan sinyal dan mekanisme penyaringan, dll, strategi dapat berkembang menuju arah yang lebih stabil, otomatis dan cerdas. Ini juga merupakan tujuan dari pekerjaan tindak lanjut kami.


/*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())

  
  



Lebih banyak