Strategi trend berikut Vortex Oscillator adalah strategi pengesanan trend berdasarkan Indikator Vortex. Ia menggunakan purata bergerak dari beberapa bingkai masa untuk membina Indikator Vortex untuk mengenal pasti trend harga yang berpotensi, dan digabungkan dengan purata bergerak tempoh yang lebih pendek sebagai penilaian tambahan untuk mencapai operasi pengesanan trend berisiko rendah.
Indikator pusaran strategi ini adalah Indikator Pusaran. Indikator Pusaran terdiri daripada purata bergerak jangka pendek, jangka sederhana dan jangka panjang dari pelbagai jangka masa. Khususnya, strategi menggunakan purata bergerak 6 hari, 27 hari, 72 hari dan 234 hari. Purata bergerak jangka pendek mencerminkan trend harga terkini, sementara purata bergerak jangka panjang mencerminkan trend jangka panjang. Logik utama indikator adalah bahawa apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menunjukkan bahawa momentum menaik semakin kuat dan sudah tiba masanya untuk membeli. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menunjukkan bahawa momentum menaik semakin lemah dan kita harus menjual.
Kelebihan utama Indikator Pusaran ialah ia menilai dengan tepat trend dan menapis bunyi bising pasaran dengan berkesan. Walau bagaimanapun, tindak balasnya tidak cukup sensitif untuk menangkap titik perubahan dengan tepat pada masanya. Oleh itu, strategi ini menggabungkan purata bergerak 6 hari yang lebih sensitif untuk membina penunjuk penilaian tambahan. Beli apabila kedua-dua Indikator Pusaran dan penunjuk tambahan melintasi di atas garis sifar, dan jual apabila kedua-dua penunjuk melintasi di bawah garis sifar. Ini membentuk logik pengesahan berbilang di mana Indikator Pusaran menentukan arah trend dan kekuatan sementara penunjuk tambahan menentukan titik masuk dan keluar tertentu, yang menapis isyarat palsu sambil meningkatkan kepekaan operasi.
Kelebihan terbesar strategi ini adalah ketepatan pertimbangan dan sensitiviti operasi. Gabungan Indikator Pusaran dan penunjuk tambahan mencapai kesatuan organik pertimbangan trend dan penentuan titik masuk / keluar tertentu sambil mengelakkan gangguan antara satu sama lain. Mekanisme pengesahan berbilang dapat menapis bunyi pasaran dengan berkesan dan mengelakkan perdagangan yang salah. Pada masa yang sama, penambahan penunjuk tambahan juga memastikan sensitiviti operasi strategi.
Berbanding dengan strategi satu indikator, kelebihan strategi ini adalah ia menggabungkan beberapa indikator untuk mencapai keupayaan yang lebih kuat dalam mengenal pasti dan bertindak balas terhadap perubahan pasaran. Di bawah trend utama yang tidak berubah, strategi dapat mencapai keuntungan yang stabil. Apabila trend utama berubah, strategi juga dapat bertindak balas dengan cepat untuk mengurangkan kerugian.
Risiko utama strategi ini berasal dari tetapan parameter indikator yang tidak betul dan kesan peristiwa yang melampau. Parameter purata bergerak perlu mengimbangi kepekaan dan rintangan gangguan bunyi. Tetapan parameter yang tidak betul akan membawa kepada tingkah laku strategi yang tidak normal. Di samping itu, peristiwa utama juga boleh menyebabkan turun naik harga yang melampau yang melumpuhkan indikator, mengakibatkan perdagangan yang salah.
Untuk mengurangkan risiko ini, parameter harus dioptimumkan dan diuji semula untuk menstabilkan prestasi penunjuk. Juga, memberi perhatian kepada kesan pasaran dari peristiwa utama, hentikan strategi apabila perlu untuk mengelakkan kesilapan semasa tempoh turun naik yang tidak normal.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan parameter purata bergerak untuk meningkatkan rintangan kebisingan penunjuk dan kepekaan operasi.
Tambah mekanisme stop loss. Tetapkan titik stop loss apabila harga memecahkan tahap sokongan utama ke arah yang tidak menguntungkan untuk mengelakkan kerugian lanjut.
Menggabungkan penilaian penunjuk lain untuk meningkatkan kestabilan strategi, contohnya hanya mengambil isyarat apabila jumlah dagangan meningkat.
Gunakan set parameter yang berbeza berdasarkan peringkat pasaran yang berbeza. Sebagai contoh, parameter yang lebih agresif semasa pasaran lembu, dan tetapan yang lebih stabil dalam pasaran beruang.
Strategi Mengikuti Trend Vortex Oscillator berjaya menggabungkan penilaian trend dan pelaksanaan melalui Indikator Vortex yang menentukan arah trend harga / kekuatan dan purata bergerak jangka pendek yang sensitif yang menentukan masa masuk / keluar tertentu. Dengan mengoptimumkan parameter, menambah kerugian berhenti, dan memperkenalkan mekanisme keadaan, strategi ini berpotensi untuk meningkatkan lagi keupayaan rintangan risikonya dan mencapai metrik backtesting yang unggul dan prestasi langsung.
/*backtest start: 2022-11-30 00:00:00 end: 2023-12-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //swap strategy line for study line to enable backtesting strategy(title="Vortex Ocillator" ) //study(title = "Vortex Oscillator", precision = 6) // Component Code Start // Example usage: // if testPeriod() // strategy.entry("LE", strategy.long) testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2048, "Backtest Stop Year") testStopMonth = input(7, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop //vortex histogram short_input = input(6, minval = 1) long_input = input(27, minval = 1) longer_input = input(72, minval = 1) longest_input = input(234, minval = 1) short = sma(close, short_input) long = sma(close, long_input) longer = sma(close, longer_input) longest = sma(close, longest_input) hist = short - long longhist = short - longer longesthist = short - longest hist_fractal = input(3, minval = 0) longhist_fractal = input(2, minval = 0) longesthist_fractal = input(4, minval = 0) vortexhist = avg((hist / hist_fractal), (longhist / longhist_fractal), (longesthist / longesthist_fractal)) crossover_calc = vortexhist > 0 and vortexhist[1] < 0 crossunder_calc = vortexhist < 0 and vortexhist[1] > 0 crossover2 = crossover(vortexhist, 0) crossunder2 = crossunder(vortexhist, 0) hist_color = hist > 0? fuchsia : purple longhist_color = longhist > 0? olive : orange longesthist_color = longesthist > 0? teal : blue vortexhist_color = vortexhist >= 0? green : red plot(longesthist, "Longest Ocillator", style = histogram, color = longesthist_color, transp = 5) plot(longhist, "Longer Ocillator", style = histogram, color = longhist_color, transp = 30) plot(hist, "Short Ocillator", style = histogram, color = hist_color, transp = 30) plot(vortexhist, "Vortex Ocillator", style = columns, color = vortexhist_color, transp = 40) plotshape(crossover_calc,title = "Crossover",location = location.bottom, style = shape.triangleup, size = size.small, color = green) plotshape(crossunder_calc,title = "Crossunder",location = location.bottom, style = shape.triangledown, size = size.small, color = red) //micro micro_ema_length = input(6,"Micro EMA Length") micro = ema(vortexhist, micro_ema_length) plot(micro, title = "micro", linewidth = 1, color = white) microup = crossover(vortexhist, micro) microdown = crossunder(vortexhist, micro) //new micro signals xmicroup = microup and vortexhist >=0 or crossover_calc xmicrodown = microdown and vortexhist >=0 or crossunder_calc plotshape(xmicroup, title = "Micro up", style = shape.circle, color = olive, location = location.bottom, size = size.tiny) plotshape(xmicrodown, title = "Micro down", style = shape.circle, color = fuchsia, location = location.bottom, size = size.tiny) //optional strategy options for backtesting, comment out the alertcondition rows and swap the top study row for the strategy row to compile as strategy if testPeriod() strategy.entry("buy", true, 1, when = xmicroup, limit = low) if testPeriod() strategy.close("buy", when = xmicrodown) //if (xmicroup) //strategy.entry("My Long Entry Id", strategy.long) //if (xmicroup) //strategy.exit("My Short Exit Id", "My Short Entry Id") //if (xmicrodown) //strategy.exit("My Long Exit Id", "My Long Entry Id")