Quant Lights Moving Average Trend Tracking Strategi pengoptimuman

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

img

Ringkasan

Quant Lights adalah strategi gabungan menggunakan penunjuk Stochastic dan penunjuk OTT. Strategi ini menggunakan penunjuk Stochastic untuk menjana isyarat beli dan jual, dan menggabungkannya dengan penunjuk OTT untuk menapis isyarat, cuba menangkap trend besar dan mengurangkan kesan turun naik pasaran yang menyebabkan isyarat palsu.

Prinsip Strategi

Idea utama strategi ini adalah untuk menumpuk penunjuk OTT pada penunjuk Stochastic untuk penapisan isyarat. Penunjuk Stochastic membandingkan harga dengan harga tertinggi dan terendah dalam tempoh masa yang ditentukan untuk menilai sama ada harga berada di kawasan yang melampau.

Kod ini menetapkan tahap tinggi Stochastic pada 1080 dan tahap rendah pada 1020. Apabila nilai Stochastic berada di antara mereka, ia adalah kawasan terhad. Apabila Stochastic menghasilkan isyarat beli / jual, kod ini akan menentukan kesahihan isyarat berdasarkan penunjuk OTT. Jika harga melintasi di atas garis purata OTT, isyarat beli dikeluarkan. Jika harga melintasi di bawah garis purata OTT, isyarat jual dikeluarkan.

Gabungan ini memanfaatkan Stochastic untuk menentukan keadaan overbought dan oversold dan menjana isyarat kemasukan, sementara OTT bertanggungjawab untuk mengesan trend dan menggunakan berhenti untuk menapis isyarat palsu yang disebabkan oleh turun naik pasaran yang berlebihan, dengan itu mengoptimumkan ketepatan isyarat dan turun naik.

Analisis Kelebihan

Strategi ini menggabungkan penunjuk Stochastic dan OTT untuk mengoptimumkan aspek berikut:

  1. Keakuratan isyarat yang lebih baik. Pengadil stokastik overbought dan oversold keadaan, OTT menapis isyarat palsu yang disebabkan oleh pasaran turun naik.
  2. Mengurangkan turun naik strategi. Mengehadkan kerugian semasa melalui hentian dinamik, menapis banyak pecah palsu.
  3. Mengambil secara berkesan trend saham utama. Stochastic menyediakan isyarat asas dan OTT mengesan trend utama.
  4. Mengurangkan gangguan isyarat yang berlebihan, meningkatkan kualiti isyarat sambil mengurangkan isyarat yang tidak berguna.
  5. Mengukur tetapan berhenti dinamik. Kualitatif menjamin kerugian semasa dan seterusnya mengurangkan turun naik strategi.
  6. Sistem ini mengintegrasikan trend dan indikator overbought / oversold.

Ringkasnya, dengan menggunakan OTT untuk menapis isyarat Stochastic, strategi secara berkesan meningkatkan kualiti isyarat dan pulangan pelaburan, sambil mengurangkan bilangan transaksi dan turun naik strategi, mencapai kesan risiko rendah, pulangan tinggi dan mengesan tren dengan teliti.

Analisis Risiko

  • Julat aplikasi strategi ini agak sempit. Ia terutamanya sesuai untuk stok dengan trend yang jelas. Ia mempunyai kesan yang kurang terhadap stok dengan turun naik harga yang sangat besar atau stok dalam penyatuan sampingan.
  • Strategi ini tidak mengambil kira asas saham dan persekitaran makro, jadi ada beberapa titik buta.
  • Tetapan parameter sensitif. Beberapa parameter Stochastic dan OTT memerlukan penyesuaian profesional, jika tidak, ia akan menjejaskan keuntungan strategi.
  • Perhentian terlalu longgar, membawa beberapa potensi kerugian yang memerlukan pengoptimuman lebih lanjut.
  • Terdapat kerugian tertentu dan gangguan isyarat semasa pecah palsu dan pasaran turun naik.

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

  1. Gunakan kombinasi parameter yang berbeza untuk pelbagai jenis stok.
  2. Meningkatkan isyarat dengan menggabungkan asas dan berita.
  3. Mengoptimumkan parameter melalui ujian untuk mencari tetapan yang optimum.
  4. Memperkenalkan perhentian bergerak untuk mengurangkan risiko.
  5. Mengubahsuai keadaan penilaian dan menggunakan mekanisme pengesahan isyarat yang lebih ketat.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Sesuaikan tetapan parameter mengikut pasaran dan jenis stok yang berbeza. Nilai lalai semasa adalah sejagat dan boleh diuji secara berasingan untuk stok yang berbeza untuk mencari kombinasi parameter yang optimum.

  2. Memperkenalkan mekanisme mengambil keuntungan dan berhenti bergerak. Pada masa ini menggunakan berhenti tetap dinamik tidak dapat menjejaki kerugian dan keuntungan secara dinamik. Ujian pengenalan berhenti bergerak dan mengambil keuntungan untuk kawalan risiko dan keuntungan yang lebih lanjut boleh dijalankan.

  3. Mengoptimumkan logik penghakiman isyarat. Logik penghakiman semasa agak mudah, secara langsung menandakan isyarat beli dan jual apabila harga pecah atau turun. Lebih banyak penunjuk dan corak harga boleh dimasukkan untuk memastikan kebolehpercayaan isyarat.

  4. Meningkatkan keadaan kedudukan terbuka dan mekanisme penapisan. Strategi semasa memproses setiap isyarat secara tidak berasingan. Penunjuk jumlah, penunjuk jumlah dagangan dan keadaan kedudukan terbuka yang lain boleh diperkenalkan, serta tetingkap masa isyarat tertentu untuk menapis isyarat palsu.

  5. Uji kombinasi penunjuk yang berbeza dengan OTT. Pada masa ini menggunakan gabungan Stochastic dan OTT. Keberkesanan menggabungkan penunjuk lain seperti MACD dan RSI dengan OTT boleh diuji.

  6. Mengintegrasikan modul pengurusan modal dan saiz kedudukan. Pada masa ini tidak ada mekanisme pengurusan modal dan kawalan kedudukan, bergantung sepenuhnya pada henti. Pelbagai jenis pengurusan modal dan kaedah ukuran kedudukan boleh diuji untuk mengawal risiko tunggal dan keseluruhan.

Ringkasan

Quant Lights adalah strategi kuantitatif yang secara organik menggabungkan penunjuk Stochastic dengan penunjuk OTT. Ia menggunakan kekuatan pelengkap kedua-dua penunjuk untuk meningkatkan ketepatan isyarat dan dengan berkesan menangkap trend utama sambil mengurangkan risiko.

Kelebihan strategi ini termasuk kadar ralat yang rendah, isyarat yang jelas, dan turun naik yang kecil.

Pada masa yang sama, masih ada ruang untuk penambahbaikan dalam strategi ini. Melalui pengoptimuman parameter, penambahbaikan mekanisme berhenti, peningkatan isyarat dan mekanisme penapisan, dan lain-lain, strategi ini boleh berkembang ke arah arah yang lebih stabil, automatik dan pintar. Ini juga merupakan matlamat kerja susulan 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 lanjut