Vix Fix Linear Regression Bottom Fishing Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-30 16:56:39
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk menggabungkan indikator Vix Fix dan regresi liniernya untuk menangkap dengan akurat dasar pasar.

Logika Strategi

  1. Menghitung indikator Vix Fix, yang baik untuk menilai dasar pasar
  2. Menggunakan regresi linier pada Vix Fix. Ketika warna histogram regresi linier berubah menjadi hijau, itu berarti regresi linier Vix Fix mulai naik, sinyal beli dapat dipicu
  3. Gabungkan dengan kolom hijau dari indikator Vix Fix untuk mengkonfirmasi lebih lanjut waktu entri
  4. Ketika histogram regresi linier warna berubah menjadi merah, itu berarti Vix Fix regresi linier mulai menurun, sinyal jual dipicu

Proses di atas menggunakan regresi linier untuk meningkatkan akurasi dan ketepatan waktu sinyal Vix Fix, menyaring beberapa sinyal palsu, dan dengan demikian dengan akurat menangkap dasar.

Analisis Keuntungan

  1. Strategi ini menggunakan regresi linier untuk menyaring beberapa sinyal palsu dari indikator Vix Fix, membuat sinyal beli / jual lebih akurat dan dapat diandalkan
  2. Regresi linier meningkatkan sensitivitas dan ketepatan waktu sinyal dan dapat dengan cepat menangkap titik balik pasar
  3. Logika strategi sederhana dan jelas, mudah dipahami dan diterapkan, cocok untuk perdagangan kuantitatif
  4. Ada banyak parameter yang dapat dikonfigurasi yang dapat disesuaikan secara fleksibel untuk beradaptasi dengan perubahan pasar

Risiko dan Solusi

  1. Strategi ini terutama digunakan untuk menentukan dasar pasar secara keseluruhan, tidak cocok untuk saham individu
  2. Regresi linier tidak dapat sepenuhnya menyaring sinyal palsu.
  3. Kebutuhan untuk menyesuaikan parameter dengan benar untuk beradaptasi dengan perubahan pasar dan menghindari kegagalan
  4. Disarankan untuk dikombinasikan dengan indikator lain untuk mengkonfirmasi sinyal lebih lanjut

Arahan Optimasi

  1. Pertimbangkan untuk menggabungkan dengan indikator volatilitas atau indikator volume dalam neraca untuk lebih memfilter sinyal
  2. Studi metode optimasi adaptif parameter untuk membuat strategi lebih cerdas
  3. Jelajahi metode pembelajaran mesin untuk memprediksi tren Vix Fix dengan model yang lebih kompleks
  4. Cobalah menerapkan metode yang sama untuk saham individu untuk mempelajari cara menyaring sinyal palsu

Kesimpulan

Strategi ini menggunakan indikator Vix Fix untuk menilai dasar sementara memperkenalkan regresi linier untuk meningkatkan kualitas sinyal, sehingga secara efektif menangkap dasar pasar. Strategi ini sederhana, praktis dan menghasilkan hasil yang layak. Risiko utama terletak pada sinyal palsu yang gagal sepenuhnya disaring. Kita masih perlu mengoptimalkan pengaturan parameter dan mempertimbangkan untuk memperkenalkan cara lain untuk lebih mengkonfirmasi sinyal untuk membuat strategi lebih kuat. Secara keseluruhan, strategi ini memberikan cara yang efektif baru untuk menentukan dasar pasar, dan layak penelitian lebih lanjut.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed

//@version=4
strategy("VixFixLinReg-Strategy", shorttitle="VixFixLinReg - Strategy",
                     overlay=false, initial_capital = 100000, 
                     default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, 
                     commission_value = 0.01)
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range - Based on Percentile and LookBack Period?")
sd = input(false, title="Show Standard Deviation Line?")
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
considerVIXFixClose = input(false)
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

atrLen = input(22)
atrMult = input(5)
initialStopBar = input(5)
waitForCloseBeforeStop = input(true)
f_getStop(atrLen, atrMult)=>
    stop = strategy.position_size > 0 ? close - (atrMult * atr(atrLen)) : lowest(initialStopBar)
    stop := strategy.position_size > 0 ? max(stop,nz(stop[1], stop)) : lowest(initialStopBar)
    stop

wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100

sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev

rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl


col = wvf >= upperBand or wvf >= rangeHigh ? color.lime : color.gray

val = linreg(wvf, pd, 0)
absVal = abs(val)

linRegColor = val>val[1]? (val > 0 ? color.green : color.orange): (val > 0 ? color.lime : color.red)
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(wvf, title="Williams Vix Fix", style=plot.style_histogram, linewidth = 4, color=col)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=plot.style_line, linewidth = 3, color=color.aqua)

plot(-absVal, title="Linear Regression", style=plot.style_histogram, linewidth=4, color=linRegColor)

vixFixState = (col == color.lime) ? 1: 0
vixFixState := strategy.position_size == 0? max(vixFixState, nz(vixFixState[1],0)) : vixFixState

longCondition = (vixFixState == 1 and linRegColor == color.lime) and inDateRange
exitLongCondition = (linRegColor == color.orange or linRegColor == color.red) and considerVIXFixClose

stop = f_getStop(atrLen, atrMult)
label_x = time+(60*60*24*1000*20) 
myLabel = label.new(x=label_x, y=0, text="Stop : "+tostring(stop), xloc=xloc.bar_time, style=label.style_none, textcolor=color.black, size=size.normal)
label.delete(myLabel[1])
strategy.entry("Long", strategy.long, when=longCondition, oca_name="oca_buy")
strategy.close("Long", when=exitLongCondition or (close < stop and waitForCloseBeforeStop and linRegColor == color.green))
strategy.exit("ExitLong", "Long", stop = stop, when=not waitForCloseBeforeStop and linRegColor == color.green)

Lebih banyak