Aliran Purata Bergerak Mengikuti Strategi Pengoptimuman


Tarikh penciptaan: 2024-01-04 15:44:23 Akhirnya diubah suai: 2024-01-04 15:44:23
Salin: 0 Bilangan klik: 526
1
fokus pada
1621
Pengikut

Aliran Purata Bergerak Mengikuti Strategi Pengoptimuman

Gambaran keseluruhan

Lampu Kuantiti adalah strategi gabungan yang menggunakan indikator Stochastic dan indikator OTT. Strategi ini menggunakan indikator Stochastic untuk menghasilkan isyarat beli dan jual, dan digabungkan dengan indikator OTT untuk memfilter isyarat, cuba menangkap trend besar dan mengurangkan kesan isyarat palsu yang disebabkan oleh kejutan pasaran.

Prinsip Strategi

Idea utama strategi ini adalah penapis isyarat OTT yang diletakkan di atas indikator Stochastic. Indikator Stochastic membandingkan harga dengan harga tertinggi dan terendah dalam tempoh masa yang ditetapkan untuk menentukan sama ada harga berada di kawasan yang melampau. Indikator OTT menggunakan purata bergerak dan stop loss dinamik untuk mengesan trend.

Kod ini menetapkan Stochastic dengan ketinggian 1080, ketinggian 1020, dan rata-rata Stochastic untuk jangka masa yang seimbang. Apabila Stochastic menghasilkan isyarat beli / jual, kod akan menilai keberkesanan isyarat berdasarkan indikator OTT. Jika harga melintasi rata-rata OTT ke atas, isyarat beli akan dihantar, dan jika harga melintasi rata-rata OTT ke bawah, isyarat jual akan dihantar.

Kombinasi ini menggunakan Stochastic untuk menilai overbought dan oversold dan menghantar isyarat masuk, OTT bertanggungjawab untuk mengesan trend, menggunakan penapis kerugian untuk memadamkan isyarat palsu yang disebabkan oleh keadaan gegaran yang terlalu kuat, dan dengan itu mengoptimumkan ketepatan dan turun naik isyarat.

Analisis kelebihan

Strategi ini menggunakan gabungan Stochastic dan OTT untuk mengoptimumkan:

  1. Meningkatkan ketepatan isyarat. Stochastic menilai overbought dan oversold, OTT bertanggungjawab untuk menghapuskan isyarat palsu yang disebabkan oleh pergerakan gegaran.
  2. Mengurangkan kadar turun naik strategi. Mengehadkan kerugian semasa dengan berhenti dinamik dan menapis banyak pecah palsu.
  3. Stochastic memberi isyarat asas, OTT mengikuti trend utama.
  4. Mengurangkan gangguan isyarat yang berlebihan. Meningkatkan kualiti isyarat dan mengurangkan isyarat yang tidak berguna.
  5. Penetapan Hentian Dinamika Kuantitatif: Penangguhan Kualitatif untuk kerugian ini, mengurangkan lagi kadar turun naik strategi.
  6. Sistem ini menggabungkan trend dengan indikator overbought dan oversold. Menggunakan kedua-dua indikator untuk saling mengoptimumkan kelemahan.

Secara keseluruhannya, strategi ini telah meningkatkan kualiti isyarat dan keuntungan strategi dengan menggunakan OTT untuk menyaring isyarat Stochastic, dan pada masa yang sama mengurangkan jumlah dagangan dan turun naik strategi, mencapai kesan berhampiran dengan trend, risiko rendah dan keuntungan tinggi.

Analisis risiko

  • Strategi ini mempunyai ruang yang agak sempit. Ia digunakan terutamanya untuk saham yang mempunyai trend yang jelas.
  • Bergantung sepenuhnya pada aspek teknikal. Strategi tidak mengambil kira asas saham dan aspek makro pasaran, terdapat kebutaan tertentu.
  • Tetapan parameter sensitif. Beberapa parameter Stochastic dan OTT memerlukan penyesuaian profesional, jika tidak, ia akan menjejaskan keuntungan strategi.
  • Hentikan Kerugian Terlalu Lembut. Mengambil Kerugian Potensial Yang Perlu Dioptimumkan Lagi.
  • Kesalahan penembusan palsu dan keadaan gegaran akan menyebabkan kerugian dan gangguan isyarat. Keperluan untuk mengubah syarat penghakiman dan syarat hentikan kerugian.

Langkah-langkah yang boleh diambil untuk mengatasi risiko tersebut ialah:

  1. Kombinasi parameter yang berbeza digunakan mengikut kategori saham yang berbeza.
  2. Ia adalah satu cara untuk meningkatkan isyarat dengan menggabungkan asas dan berita.
  3. Uji optimum parameter untuk mencari tetapan optimum.
  4. Memperkenalkan Stop Loss Bergerak untuk mengurangkan risiko lebih lanjut.
  5. Mengubah kriteria penilaian untuk menggunakan mekanisme pengesahan isyarat yang lebih ketat.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan lebih mendalam dalam beberapa aspek:

  1. Tetapkan parameter untuk menyesuaikan dengan pasaran dan kategori saham yang berbeza. Nilai lalai sekarang adalah umum, dan anda boleh menguji kombinasi parameter yang optimum untuk saham yang berbeza.

  2. Pengenalan mekanisme hentian dan hentian bergerak. Hentian tetap yang dinamik digunakan sekarang, tidak dapat secara dinamik mengesan kerugian dan keuntungan. Pengenalan hentian dan hentian bergerak boleh diuji untuk mengawal risiko keuntungan strategi lebih lanjut.

  3. Logik penghakiman isyarat yang dioptimumkan. Logik penghakiman yang lebih mudah sekarang adalah untuk menandai secara langsung tanda-tanda pembelian dan penjualan yang menembusi harga. Anda boleh mempertimbangkan untuk menggabungkan lebih banyak petunjuk dan penghakiman bentuk harga untuk memastikan kebolehpercayaan isyarat.

  4. Menambah syarat-syarat pembukaan dan mekanisme penapisan. Strategi sekarang untuk setiap isyarat yang tidak membezakan. Anda boleh memperkenalkan syarat pembukaan seperti penunjuk kuantiti, penunjuk kuantiti, dan menambah tingkap masa isyarat tertentu untuk membasmi isyarat palsu.

  5. Uji penggabungan pelbagai petunjuk dengan OTT. Kini, gabungan Stochastic dan OTT digunakan. Indikator lain seperti MACD, RSI dan lain-lain boleh menguji keserasian OTT.

  6. Modul pengurusan dana dan pengurusan kedudukan yang bersepadu. Tidak ada mekanisme pengurusan dana dan kawalan kedudukan sekarang, bergantung sepenuhnya pada hentian. Anda boleh menguji pelbagai jenis pengurusan dana dan kaedah pengurusan kedudukan untuk mengawal risiko tunggal dan keseluruhan.

ringkaskan

Lampu Kuantitatif adalah strategi kuantitatif yang menggabungkan secara organik Stochastic dengan penunjuk OTT. Ia menggunakan kelebihan kedua-dua penunjuk yang saling melengkapi, meningkatkan ketepatan isyarat, dan menangkap trend besar dengan berkesan sambil mengurangkan risiko.

Strategi ini mempunyai kelebihan yang rendah kesilapan, isyarat yang jelas, kadar turun naik yang kecil. Ia meningkatkan kebolehpercayaan isyarat, mengoptimumkan tahap stop loss, mengurangkan frekuensi perdagangan, dan merupakan strategi kuantitatif yang disyorkan.

Pada masa yang sama, strategi ini juga mempunyai ruang untuk penambahbaikan. Dengan cara seperti pengoptimuman parameter, penyempurnaan mekanisme hentikan kerosakan, peningkatan mekanisme isyarat dan penapisan, strategi ini dapat berkembang ke arah yang lebih stabil, automatik dan pintar, yang juga merupakan matlamat kerja kami selanjutnya.

Kod 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())