
Strategi ini adalah strategi yang serupa dengan Grid Bot, yang digunakan terutamanya untuk perdagangan algoritma. Ia menggunakan grid Grid yang dinamis dan tidak seimbang berdasarkan jumlah transaksi yang dikira, dan hanya mengemas kini grid apabila RSI memenuhi syarat tertentu. Ia juga mempunyai ciri-ciri perdagangan yang menembus, berbeza dengan Grid Bot biasa (Grid Bot biasa dijual apabila mencapai garis grid yang lebih tinggi, dan strategi ini dijual apabila jatuh ke bawah garis grid yang lebih rendah di bawah syarat tertentu).
Ringkasnya, setiap kali RSI melintasi garis isyarat beli/jual, strategi ini akan mengemas kini grid kepada harga tertinggi/rendah berdasarkan jumlah dagangan yang anda berikan kepada sumber data (“src” dalam tetapan). Ia akan menghasilkan garis dengan jarak yang sama dalam 5 baris dan menggunakan sumber data semasa untuk menentukan sumber data yang paling dekat.
Anda boleh mengkonfigurasi keadaan kosong, sumber data, panjang kitaran RSI, dan garisan overbought dan oversold.
Logik utama strategi ini ialah:
Menggunakan RSI untuk menentukan titik perubahan trend, dengan garis RSI yang melintasi set kawasan overbought atau oversold sebagai isyarat pengesahan.
Apabila isyarat pengesahan RSI muncul, rekodkan harga tertinggi dan terendah dalam tempoh tertentu, dan setkan sebagai had bawah pada grid.
Berdasarkan had atas dan bawah, ia dibahagikan kepada 5 garisan grid, untuk menilai secara langsung mana garisan grid yang mendekati harga.
Apabila harga menembusi garisan di atas garisan, masuk lebih banyak; apabila harga jatuh di bawah garisan di bawah garisan, masuk kosong.
Menggunakan cara menembusi grid, dan bukannya cara biasa Grid Bot menyentuh grid, lebih baik untuk menangkap trend yang pecah.
Apabila hari perdagangan ditutup, semua pesanan piramid diletakkan untuk mengelakkan risiko semalaman.
Strategi ini terdiri daripada:
Tetapan parameter input: termasuk sumber data, parameter RSI, membuat lebih banyak pilihan blanja, dan sebagainya.
Pengiraan RSI: Pengiraan RSI dan menilai apakah ia menunjukkan isyarat melintasi.
Tetapan grid dinamik: merekodkan julat harga dan mengira garisan grid apabila isyarat RSI berlaku.
Ulasan isyarat: mengesan sama ada harga menembusi grid atas dan bawah, untuk menilai apakah ada isyarat lebih banyak.
Pentadbiran pesanan: Isikan isyarat untuk melakukan lebih banyak penyingkiran dan perintah piramida pelepasan sebelum penutupan.
Menggambar antara muka: memaparkan garisan grid, membuat lebih banyak kawasan kosong dan sebagainya.
Dengan mengemas kini grid secara dinamik, penghakiman trend dan isyarat penembusan yang digabungkan dengan indikator RSI, strategi ini dapat mengesan trend dengan berkesan dan menyesuaikan arah dengan tepat pada masa berbalik. Pelepasan sebelum penutupan dapat mengawal risiko semalam dengan berkesan.
Strategi ini mempunyai kelebihan utama:
Grid dinamik boleh menyesuaikan diri mengikut trend, dan lebih fleksibel daripada grid tetap.
Hanya apabila RSI mengesahkan trend berbalik, grid boleh disesuaikan untuk menyaring sebahagian daripada isyarat bunyi bising.
Menggunakan isyarat pecah dan bukan hanya isyarat sentuhan, anda boleh lebih tepat menangkap titik perubahan trend.
Untuk mengelakkan risiko turun naik yang ketara pada waktu malam, anda perlu menebus semua pegangan sebelum penutupan dan melindungi keuntungan anda.
Indeks RSI lebih baik untuk menilai keadaan overbought dan oversold, dan ia berfungsi dengan baik apabila digabungkan dengan grid dinamik.
Menggunakan mod penembusan dan bukan mod penyenaraian, anda boleh mendapatkan peluang masuk yang lebih baik pada awal trend.
Menyesuaikan jarak grid dan perkadaran jumlah dagangan membolehkan anda menyesuaikan ciri-ciri risiko dan keuntungan strategi secara fleksibel.
Antara muka grafik secara intuitif menunjukkan pengedaran grid dan kawasan kosong tambahan.
Anda boleh memilih sama ada untuk membuka ruang kosong untuk memenuhi keperluan peniaga yang berbeza.
Peraturan mudah difahami, mudah diimplementasikan, dan sesuai untuk perdagangan algoritma.
Kelebihan di atas membolehkan strategi ini untuk mengikuti trend secara automatik sambil mengawal risiko, sesuai untuk aplikasi perdagangan kuantitatif di lapangan.
Strategi ini juga mempunyai beberapa risiko yang perlu diperhatikan:
Dalam trend gegaran yang besar, mungkin terdapat risiko stop loss. Julat stop loss boleh dikurangkan dengan sewajarnya, atau strategi ditangguhkan semasa gegaran.
Pada waktu malam, mungkin berlaku lonjakan besar dalam satu malam, yang menyebabkan kedudukan terbuka yang lebih besar. Anda boleh mempertimbangkan untuk mengurangkan perkadaran kedudukan untuk mengelakkan risiko ini.
Tetapan parameter yang tidak betul boleh menyebabkan kekerapan perdagangan atau isyarat yang salah. Parameter pengoptimuman harus diuji dengan berhati-hati.
Apabila kos dagangan lebih tinggi, keuntungan dagangan grid boleh dimakan berulang kali. Anda harus menyesuaikan jumlah dagangan atau memilih bursa dengan kos yang lebih rendah.
Isyarat penembusan mungkin berlaku sedikit lewat daripada titik perubahan trend, yang memerlukan penyetempatan yang munasabah.
Strategi ini mungkin tidak berfungsi dengan baik pada tahap kenaikan pasaran saham yang stabil. Ia boleh dipertimbangkan untuk digunakan dengan kombinasi indikator lain.
Ia memerlukan dana yang mencukupi untuk menyokong kedudukan yang lebih besar dan kedudukan piramid, jika tidak, ia tidak akan berkesan. Ia perlu disesuaikan dengan jumlah dana.
Kaedah pencegahan:
Mengoptimumkan parameter, mengurangkan kekerapan transaksi, dan mengelakkan perdagangan berlebihan.
Berkongsi dengan penunjuk trend, mengelakkan dagangan ketika bergolak.
Mengubah kedudukan, mengurangkan peratusan transaksi tunggal, mengawal risiko.
Uji parameter amplitud penembusan yang berbeza, mengimbangi ketepatan masa dan kestabilan.
Anda boleh mempertimbangkan untuk menggabungkannya dengan indeks lain untuk mendapatkan maklumat pasaran yang lebih banyak.
Meningkatkan jumlah dana, memperluaskan saiz kedudukan, meningkatkan ruang keuntungan.
Kaedah seperti pengoptimuman parameter, pengurusan risiko, dan kombinasi dengan strategi lain dapat mengurangkan risiko strategi ini sehingga ia dapat beroperasi dengan stabil.
Strategi ini boleh dioptimumkan dengan cara:
Mengoptimumkan parameter RSI, menguji panjang kitaran RSI yang berbeza, mencari kombinasi parameter terbaik.
Uji seting jarak grid yang berbeza untuk mencari grid yang mempunyai nisbah risiko dan keuntungan terbaik.
Cuba menggabungkan isyarat penapisan penunjuk lain, seperti MACD, KD, dan lain-lain, untuk meningkatkan ketepatan.
Membangunkan strategi penangguhan kerugian yang beradaptasi, menyesuaikan penangguhan kerugian secara dinamik mengikut tahap turun naik pasaran.
Tambah syarat untuk membuka kedudukan, hanya apabila trend cukup jelas, untuk mengelakkan daripada terjebak.
Untuk mengoptimumkan pengukuran semula, menguji data untuk tempoh masa yang lebih lama, dan menilai kestabilan parameter.
Cuba mengoptimumkan parameter dinamik berdasarkan pembelajaran mesin, supaya strategi dapat menyesuaikan diri dengan keadaan pasaran.
Meneroka strategi yang menggabungkan Options untuk melindungi risiko kedudukan Options
Menyesuaikan strategi pengoptimuman parameter mengikut ciri-ciri pasaran terkini untuk mengekalkan keberkesanan strategi.
Membangunkan platform pengoptimuman strategi grafik untuk membantu ujian pengoptimuman pantas.
Strategi ini dapat mencapai kestabilan dan kadar keuntungan yang lebih baik dan menjadi strategi perdagangan kuantitatif yang benar-benar dipercayai melalui pengoptimuman parameter automatik, kombinasi strategi, dan pengenalan lebih banyak maklumat pasaran.
Secara keseluruhannya, strategi grid segi empat RSI menggunakan indikator RSI untuk menentukan isyarat pengesahan trend, menetapkan grid dinamik julat harga, berdagang ketika menembusi garisan grid, dan sepenuhnya kosong pada hari itu, membentuk strategi perdagangan algoritma trend yang fleksibel. Berbanding dengan strategi grid tetap, ia dapat menyesuaikan diri dengan perubahan pasaran.
Strategi ini mempunyai beberapa kelebihan, termasuk menggabungkan trend penilaian RSI, penyesuaian grid dinamik, perdagangan pola pecah dan kedudukan kosong dalam sehari. Ini membolehkan ia untuk mengesan trend dengan berkesan sambil mengawal risiko. Tetapi strategi ini juga mempunyai beberapa risiko yang berpotensi yang perlu diperhatikan, seperti risiko berhenti kehilangan di bawah trend goyah, risiko terbang malam dan sebagainya.
Strategi ini juga mempunyai banyak arah pengoptimuman yang dapat dioptimumkan menjadi strategi perdagangan algoritma yang lebih stabil dan lebih tinggi dengan cara memperkenalkan lebih banyak petunjuk, parameter pengoptimuman pembelajaran mesin, dan platform pengesanan grafik. Secara keseluruhan, strategi ini menyediakan kerangka algoritma yang dipercayai dan mudah digunakan untuk perdagangan kuantitatif.
/*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))