RSI Box Grid Strategi

Penulis:ChaoZhang, Tarikh: 2023-10-30 11:29:30
Tag:

img

Ringkasan

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 (src dalam tetapan) setiap kali RSI melintasi di bawah / di atas tahap overbought / oversold. Dari julat ini, ia menghasilkan grid berjarak lima garis, dan menggunakan sumber semasa untuk menentukan garis grid mana yang paling dekat. Kemudian, jika sumber melintasi garis di atas, ia memasuki panjang. Jika sumber melintasi di bawah garis di bawah, ia memasuki pendek.

Anda boleh mengkonfigurasi pendek, sumber, panjang RSI, dan overbought / oversold tahap dalam tetapan.

Logika Strategi

Logik teras strategi adalah:

  1. Menggunakan penunjuk RSI untuk menentukan titik pembalikan trend, menggunakan persilangan garis RSI tahap overbought/oversold sebagai isyarat pengesahan.

  2. Apabila isyarat RSI berlaku, rekodkan harga tertinggi / terendah sepanjang tempoh sebagai had atas / bawah grid.

  3. Bahagikan julat ke dalam 5 garisan grid yang sama rata. Semak masa nyata mana garis harga yang paling dekat.

  4. Apabila harga melanggar garis di atas, pergi panjang. Apabila harga melanggar di bawah garis di bawah, rata panjang dan pergi pendek.

  5. Dengan menggunakan breakout dan bukannya sentuhan, ia boleh menangkap pembalikan trend dengan lebih baik.

  6. Tutup semua perintah piramid sebelum tutup untuk mengelakkan risiko semalam.

Strategi ini terdiri daripada:

  1. Tetapan input: sumber, parameter RSI, panjang/pendek dll.

  2. Pengiraan RSI: mengira RSI dan memeriksa isyarat silang.

  3. Grid dinamik: merakam julat harga pada isyarat RSI dan mengira garis grid.

  4. Pemeriksaan isyarat: mengesan garis grid harga untuk isyarat panjang / pendek.

  5. Pengurusan pesanan: menghantar pesanan dan rata sebelum tutup.

  6. 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.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Grid dinamik menyesuaikan diri dengan trend, tidak seperti grid tetap.

  2. Hanya menyesuaikan grid pada pengesahan RSI, mengurangkan bunyi.

  3. Isyarat pecah menangkap pembalikan lebih baik daripada sentuhan.

  4. Lempar sebelum menutup untuk mengelakkan risiko jurang semalaman.

  5. RSI berkesan untuk pengesanan overbought / dijual.

  6. Mod pecah menyediakan kemasukan trend awal berbanding pembalikan.

  7. Mengatur jarak grid & saiz membolehkan penyesuaian risiko.

  8. Grid visual & zon panjang / pendek.

  9. Seluar pendek pilihan untuk menyesuaikan dengan pedagang yang berbeza.

  10. Logik yang mudah dan jelas yang sesuai untuk perdagangan algo.

Ini menjadikan strategi ini mampu mengesan trend automatik dengan kawalan risiko untuk perdagangan langsung.

Analisis Risiko

Terdapat juga beberapa risiko yang berpotensi untuk diperhatikan:

  1. Pasaran Whipsaw boleh menyebabkan stop loss, boleh meluaskan stop atau menghentikan perdagangan.

  2. Jurang malam boleh meninggalkan jurang terbuka yang besar dan mengurangkan saiz kedudukan.

  3. Penyesuaian parameter yang buruk boleh meningkatkan perdagangan atau kesilapan isyarat.

  4. Bayaran yang tinggi boleh mengikis keuntungan dari perdagangan grid.

  5. Isyarat keluar mungkin sedikit lambat, perlu had masuk akal.

  6. Mungkin kurang berprestasi dalam trend menaik yang mantap.

  7. Membutuhkan modal yang mencukupi untuk saiz kedudukan yang lebih besar dan piramid, jika tidak, hasilnya akan buruk.

Pengurangan:

  1. Mengoptimumkan parameter untuk mengurangkan kekerapan perdagangan dan overtrading.

  2. Gabungkan dengan penunjuk trend, elakkan tempoh perdagangan whipsaw.

  3. Mengurangkan saiz perdagangan dan risiko setiap perdagangan.

  4. Uji ambang penembusan yang berbeza untuk keseimbangan tepat pada masanya vs kestabilan yang terbaik.

  5. Tambah lebih banyak syarat kemasukan, hanya masukkan trend yang jelas untuk mengelakkan terperangkap.

  6. Ujian semula dalam tempoh yang lebih lama untuk menilai kestabilan parameter.

  7. Meneroka pengoptimuman parameter dinamik berasaskan pembelajaran mesin untuk kebolehsesuaian pasaran.

  8. Pertimbangkan untuk menggabungkan dengan strategi opsyen untuk lindung nilai risiko kedudukan.

  9. Sesuaikan parameter berdasarkan keadaan pasaran baru-baru ini untuk mengekalkan strategi yang berkesan.

  10. 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.

Peluang Peningkatan

Strategi ini boleh ditingkatkan lagi dengan:

  1. Mengoptimumkan parameter RSI, menguji tempoh RSI untuk combos terbaik.

  2. Uji jarak grid yang berbeza untuk risiko-balasan yang optimum.

  3. Menambah penunjuk lain kepada isyarat penapis, contohnya MACD, KD dll untuk meningkatkan ketepatan.

  4. Membangunkan hentian adaptif berdasarkan turun naik pasaran.

  5. Meningkatkan syarat masuk, hanya masukkan trend yang jelas untuk mengelakkan perangkap.

  6. Ujian semula dalam tempoh yang lebih lama untuk menilai kestabilan parameter.

  7. Meneroka pengoptimuman dinamik berasaskan pembelajaran mesin untuk kebolehsesuaian.

  8. Menggabungkan strategi opsyen untuk lindung nilai risiko.

  9. Penyesuaian parameter berdasarkan keadaan pasaran terkini untuk mengekalkan keberkesanan.

  10. 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.

Ringkasan

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

Lebih lanjut