Strategi ini adalah bot pseudo-grid yang dimaksudkan terutamanya untuk perdagangan algoritma. Ia menggunakan grid dinamik, berwajaran jumlah yang hanya dikemas kini apabila RSI memenuhi syarat tertentu. Ia juga merupakan strategi breakout, sedangkan bot grid biasa tidak (bot grid biasa menjual apabila grid yang lebih tinggi dicapai, sedangkan strategi ini menjual apabila grid yang lebih rendah dilanggar di bawah keadaan tertentu). Strategi ini juga menutup semua pesanan piramid pada dekat.
Ringkasnya, strategi ini mengemas kini gridnya kepada nilai tertinggi / terendah bertimbalan jumlah sumber anda (
Anda boleh mengkonfigurasi pendek, sumber, panjang RSI, dan overbought / oversold tahap dalam tetapan.
Logik teras strategi adalah:
Menggunakan penunjuk RSI untuk menentukan titik pembalikan trend, menggunakan persilangan garis RSI tahap overbought/oversold sebagai isyarat pengesahan.
Apabila isyarat RSI berlaku, rekodkan harga tertinggi / terendah sepanjang tempoh sebagai had atas / bawah grid.
Bahagikan julat ke dalam 5 garisan grid yang sama rata. Semak masa nyata mana garis harga yang paling dekat.
Apabila harga melanggar garis di atas, pergi panjang. Apabila harga melanggar di bawah garis di bawah, rata panjang dan pergi pendek.
Dengan menggunakan breakout dan bukannya sentuhan, ia boleh menangkap pembalikan trend dengan lebih baik.
Tutup semua perintah piramid sebelum tutup untuk mengelakkan risiko semalam.
Strategi ini terdiri daripada:
Tetapan input: sumber, parameter RSI, panjang/pendek dll.
Pengiraan RSI: mengira RSI dan memeriksa isyarat silang.
Grid dinamik: merakam julat harga pada isyarat RSI dan mengira garis grid.
Pemeriksaan isyarat: mengesan garis grid harga untuk isyarat panjang / pendek.
Pengurusan pesanan: menghantar pesanan dan rata sebelum tutup.
Carta: garis grid plot, zon panjang/pendek dll.
Dengan mengemas kini grid secara dinamik dan menggunakan RSI untuk konteks trend ditambah isyarat pecah, strategi ini dapat dengan berkesan mengesan trend dan membalikkan apabila trend berubah.
Kelebihan utama strategi ini ialah:
Grid dinamik menyesuaikan diri dengan trend, tidak seperti grid tetap.
Hanya menyesuaikan grid pada pengesahan RSI, mengurangkan bunyi.
Isyarat pecah menangkap pembalikan lebih baik daripada sentuhan.
Lempar sebelum menutup untuk mengelakkan risiko jurang semalaman.
RSI berkesan untuk pengesanan overbought / dijual.
Mod pecah menyediakan kemasukan trend awal berbanding pembalikan.
Mengatur jarak grid & saiz membolehkan penyesuaian risiko.
Grid visual & zon panjang / pendek.
Seluar pendek pilihan untuk menyesuaikan dengan pedagang yang berbeza.
Logik yang mudah dan jelas yang sesuai untuk perdagangan algo.
Ini menjadikan strategi ini mampu mengesan trend automatik dengan kawalan risiko untuk perdagangan langsung.
Terdapat juga beberapa risiko yang berpotensi untuk diperhatikan:
Pasaran Whipsaw boleh menyebabkan stop loss, boleh meluaskan stop atau menghentikan perdagangan.
Jurang malam boleh meninggalkan jurang terbuka yang besar dan mengurangkan saiz kedudukan.
Penyesuaian parameter yang buruk boleh meningkatkan perdagangan atau kesilapan isyarat.
Bayaran yang tinggi boleh mengikis keuntungan dari perdagangan grid.
Isyarat keluar mungkin sedikit lambat, perlu had masuk akal.
Mungkin kurang berprestasi dalam trend menaik yang mantap.
Membutuhkan modal yang mencukupi untuk saiz kedudukan yang lebih besar dan piramid, jika tidak, hasilnya akan buruk.
Pengurangan:
Mengoptimumkan parameter untuk mengurangkan kekerapan perdagangan dan overtrading.
Gabungkan dengan penunjuk trend, elakkan tempoh perdagangan whipsaw.
Mengurangkan saiz perdagangan dan risiko setiap perdagangan.
Uji ambang penembusan yang berbeza untuk keseimbangan tepat pada masanya vs kestabilan yang terbaik.
Tambah lebih banyak syarat kemasukan, hanya masukkan trend yang jelas untuk mengelakkan terperangkap.
Ujian semula dalam tempoh yang lebih lama untuk menilai kestabilan parameter.
Meneroka pengoptimuman parameter dinamik berasaskan pembelajaran mesin untuk kebolehsesuaian pasaran.
Pertimbangkan untuk menggabungkan dengan strategi opsyen untuk lindung nilai risiko kedudukan.
Sesuaikan parameter berdasarkan keadaan pasaran baru-baru ini untuk mengekalkan strategi yang berkesan.
Membina platform pengoptimuman visual untuk membantu ujian pantas.
Dengan pengoptimuman parameter, menyisir isyarat, dan lebih banyak maklumat pasaran, risiko boleh dikurangkan untuk membuat strategi algo yang benar-benar boleh dipercayai.
Strategi ini boleh ditingkatkan lagi dengan:
Mengoptimumkan parameter RSI, menguji tempoh RSI untuk combos terbaik.
Uji jarak grid yang berbeza untuk risiko-balasan yang optimum.
Menambah penunjuk lain kepada isyarat penapis, contohnya MACD, KD dll untuk meningkatkan ketepatan.
Membangunkan hentian adaptif berdasarkan turun naik pasaran.
Meningkatkan syarat masuk, hanya masukkan trend yang jelas untuk mengelakkan perangkap.
Ujian semula dalam tempoh yang lebih lama untuk menilai kestabilan parameter.
Meneroka pengoptimuman dinamik berasaskan pembelajaran mesin untuk kebolehsesuaian.
Menggabungkan strategi opsyen untuk lindung nilai risiko.
Penyesuaian parameter berdasarkan keadaan pasaran terkini untuk mengekalkan keberkesanan.
Membina platform pengoptimuman visual untuk ujian pantas.
Dengan pengoptimuman automatik, kombinasi strategi, lebih banyak maklumat pasaran dan lain-lain, ia boleh mencapai kestabilan yang lebih baik dan pulangan sebagai strategi perdagangan sebenar.
Ringkasnya, strategi RSI Box Grid menggunakan RSI untuk mengenal pasti pengesahan trend, menetapkan grid julat harga dinamik, penembusan perdagangan, dan meratakan intraday - membentuk trend yang fleksibel mengikuti strategi dagangan algo.
Strategi ini mempunyai kelebihan termasuk RSI untuk konteks trend, grid dinamik, perdagangan pecah, dan rata sepenuhnya intraday. Ini membolehkan ia untuk mengesan trend dengan berkesan dengan kawalan risiko. Walau bagaimanapun, risiko seperti stop loss whipsaw, jurang semalaman wujud, yang memerlukan pengoptimuman, menyisir isyarat, dan pengurusan risiko.
Terdapat banyak peluang peningkatan, dengan menggabungkan lebih banyak penunjuk, pengoptimuman ML, pengujian belakang visual dan lain-lain, ia boleh menjadi strategi dagangan algo yang lebih mantap dengan pulangan tinggi.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 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/ // © wbburgin //@version=5 // strategy("RSI Box Strategy (pseudo-Grid Bot)", overlay=true, initial_capital = 10000, // default_qty_type = strategy.percent_of_equity, default_qty_value = 1, pyramiding = 33, commission_value=0.10) src = input.source(close,"Source") rsiLength = input.int(14,"RSI Length") oblvl = input.int(70,"Overbought Level") oslvl = input.int(30,"Oversold Level") useShorts = input.bool(false,"Use Shorts",inline="B") showGrid = input.bool(false,"Show Grid",inline="B") rsi = ta.rsi(src,rsiLength) rsi_crossdn = ta.crossunder(rsi,oblvl) rsi_crossup = ta.crossover(rsi,oslvl) highest = ta.vwma(ta.highest(src,rsiLength),rsiLength) lowest = ta.vwma(ta.lowest(src,rsiLength), rsiLength) gridTop = ta.valuewhen(rsi_crossdn,highest,0) gridBottom = ta.valuewhen(rsi_crossup,lowest,0) gridMiddle = math.avg(gridTop,gridBottom) gridMidTop = math.avg(gridMiddle,gridTop) gridMidBottom = math.avg(gridMiddle,gridBottom) diff1 = math.abs(src - gridTop) diff2 = math.abs(src - gridBottom) diff3 = math.abs(src - gridMiddle) diff4 = math.abs(src - gridMidTop) diff5 = math.abs(src - gridMidBottom) minDiff = math.min(diff1, diff2, diff3, diff4, diff5) // Determine which line is the closest float closestLine = na if minDiff == diff1 closestLine := gridTop else if minDiff == diff2 closestLine := gridBottom else if minDiff == diff3 closestLine := gridMiddle else if minDiff == diff4 closestLine := gridMidTop else if minDiff == diff5 closestLine := gridMidBottom buyCrosses = ta.crossover(src,gridTop) or ta.crossover(src,gridBottom) or ta.crossover(src,gridMiddle) or ta.crossover(src,gridMidTop) or ta.crossover(src,gridMidBottom) sellCrosses= ta.crossunder(src,gridTop) or ta.crossunder(src,gridBottom) or ta.crossunder(src,gridMiddle) or ta.crossunder(src,gridMidTop) or ta.crossunder(src,gridMidBottom) condition_bull = buyCrosses condition_bear = sellCrosses var float bull_status_line = na var float bear_status_line = na var float bull_buy_line = na var float bear_sell_line = na if condition_bull bull_status_line := closestLine if condition_bear bear_status_line := closestLine if bull_status_line == gridBottom bull_buy_line := gridMidBottom if bull_status_line == gridMidBottom bull_buy_line := gridMiddle if bull_status_line == gridMiddle bull_buy_line := gridMidTop if bull_status_line == gridMidTop bull_buy_line := gridTop if bear_status_line == gridTop bear_sell_line := gridMidTop if bear_status_line == gridMidTop bear_sell_line := gridMiddle if bear_status_line == gridMiddle bear_sell_line := gridMidBottom if bear_status_line == gridMidBottom bear_sell_line := gridBottom l = ta.crossover(src,bull_buy_line) s = ta.crossunder(src,bear_sell_line) if l strategy.entry("Long",strategy.long) if s strategy.close("Long") if useShorts strategy.entry("Short",strategy.short) // Plotting in_buy = ta.barssince(l) < ta.barssince(s) u=plot(bull_buy_line,color=na,title="Buy Plot") d=plot(bear_sell_line,color=na,title="Sell Plot") plot(not showGrid?na:gridBottom,color=color.new(color.white,75),title="Grid Line -2") plot(not showGrid?na:gridMidBottom,color=color.new(color.white,75),title="Grid Line -1") plot(not showGrid?na:gridMiddle,color=color.new(color.white,75),title="Grid Line 0") plot(not showGrid?na:gridMidTop,color=color.new(color.white,75),title="Grid Line 1") plot(not showGrid?na:gridTop,color=color.new(color.white,75),title="Grid Line 2") fill(u,d,color=in_buy ? color.new(color.lime,75) : color.new(color.red,75))