Vix Fix Strategi Penangkapan Ikan Dasar Regresi Linear

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

img

Ringkasan

Idea teras strategi ini adalah untuk menggabungkan penunjuk Vix Fix dan regresi linearnya untuk menangkap bahagian bawah pasaran dengan tepat.

Logika Strategi

  1. Mengira penunjuk Vix Fix, yang baik untuk menilai bahagian bawah pasaran
  2. Apabila warna histogram regresi linear menjadi hijau, ia bermakna regresi linear Vix Fix mula meningkat, isyarat beli boleh dicetuskan
  3. Gabungkan dengan lajur hijau penunjuk Vix Fix untuk mengesahkan masa entri
  4. Apabila histogram regresi linear warna menjadi merah, ia bermakna regresi linear Vix Fix mula menurun, isyarat jual dicetuskan

Proses di atas menggunakan regresi linear untuk meningkatkan ketepatan dan ketepatan masa isyarat Vix Fix, menapis beberapa isyarat palsu, dan dengan itu dengan tepat menangkap bahagian bawah.

Analisis Kelebihan

  1. Strategi ini menggunakan regresi linear untuk menapis beberapa isyarat palsu penunjuk Vix Fix, menjadikan isyarat beli / jual lebih tepat dan boleh dipercayai
  2. Regresi linear meningkatkan kepekaan dan ketepatan masa isyarat dan boleh dengan cepat menangkap titik perubahan pasaran
  3. Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan, sesuai untuk perdagangan kuantitatif
  4. Terdapat banyak parameter yang boleh dikonfigurasi yang boleh diselaraskan dengan fleksibel untuk menyesuaikan diri dengan perubahan pasaran

Risiko dan Penyelesaian

  1. Strategi ini digunakan terutamanya untuk menentukan bahagian bawah pasaran secara keseluruhan, tidak sesuai untuk stok individu
  2. Regresi linear tidak boleh sepenuhnya menapis isyarat palsu.
  3. Perlu menyesuaikan parameter dengan betul untuk menyesuaikan diri dengan perubahan pasaran dan mengelakkan kegagalan
  4. Ia disyorkan untuk digabungkan dengan penunjuk lain untuk mengesahkan isyarat lebih lanjut

Arahan pengoptimuman

  1. Pertimbangkan untuk menggabungkan dengan penunjuk turun naik atau penunjuk jumlah dalam neraca untuk menapis isyarat lebih lanjut
  2. Kajian parameter kaedah pengoptimuman adaptif untuk membuat strategi lebih pintar
  3. meneroka kaedah pembelajaran mesin untuk meramalkan trend Vix Fix dengan model yang lebih kompleks
  4. Cuba menggunakan kaedah yang sama untuk saham individu untuk mengkaji cara menapis isyarat palsu

Kesimpulan

Strategi ini menggunakan penunjuk Vix Fix untuk menilai bahagian bawah sambil memperkenalkan regresi linear untuk meningkatkan kualiti isyarat, dengan itu menangkap bahagian bawah pasaran dengan berkesan. Strategi ini mudah, praktikal dan menghasilkan hasil yang baik. Risiko utama terletak pada isyarat palsu yang gagal disaring sepenuhnya. Kita masih perlu mengoptimumkan tetapan parameter dan mempertimbangkan pengenalan cara lain untuk mengesahkan isyarat lebih lanjut untuk menjadikan strategi lebih mantap. Secara keseluruhan, strategi ini menyediakan cara yang baru dan berkesan untuk menentukan bahagian bawah pasaran, dan bernilai penyelidikan 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 lanjut