Strategi ini adalah bot pseudo-grid yang dimaksudkan terutama untuk perdagangan algoritmik. Strategi ini menggunakan grid dinamis yang diperhitungkan volume yang hanya diperbarui ketika RSI memenuhi kondisi tertentu. Ini juga merupakan strategi breakout, sedangkan bot grid normal tidak (bot grid khas menjual ketika grid yang lebih tinggi tercapai, sedangkan strategi ini menjual ketika grid yang lebih rendah dilanggar dalam kondisi tertentu).
Singkatnya, strategi memperbarui kisi-kisinya ke nilai tertinggi / terendah yang dipertimbangkan volume dari sumber yang diberikan (
Anda dapat mengkonfigurasi short, sumber, panjang RSI, dan tingkat overbought/oversold di pengaturan.
Logika inti dari strategi ini adalah:
Menggunakan indikator RSI untuk menentukan titik pembalikan tren, menggunakan rantai silang RSI dari tingkat overbought/oversold sebagai sinyal konfirmasi.
Ketika sinyal RSI terjadi, catat harga tertinggi/terendah selama periode sebagai batas atas/bawah grid.
Pembagi kisaran menjadi 5 garis grid yang jaraknya merata. Periksa secara real time garis mana yang paling dekat dengan harga.
Ketika harga melintasi garis di atas, pergi panjang. Ketika harga melintasi garis di bawah, rata panjang dan pergi pendek.
Dengan menggunakan breakout alih-alih sentuhan, dapat lebih baik menangkap pembalikan tren.
Tutup semua perintah piramida sebelum menutup untuk menghindari risiko semalam.
Strategi ini terdiri dari:
Pengaturan input: sumber, parameter RSI, panjang/pendek dll.
Perhitungan RSI: menghitung RSI dan memeriksa sinyal silang.
Garis dinamis: merekam kisaran harga pada sinyal RSI dan menghitung garis grid.
Pemeriksaan sinyal: mendeteksi garis grid harga untuk sinyal panjang/pendek.
Manajemen pesanan: mengirim pesanan dan rata sebelum menutup.
Membuat grafik: garis grid plot, zona panjang/pendek dll.
Dengan memperbarui grid secara dinamis dan menggunakan RSI untuk konteks tren ditambah sinyal breakout, strategi ini dapat secara efektif melacak tren dan membalikkan ketika tren berubah.
Keuntungan utama dari strategi ini adalah:
Grid dinamis beradaptasi dengan tren, tidak seperti grid tetap.
Hanya menyesuaikan grid pada konfirmasi RSI, mengurangi kebisingan.
Sinyal breakout menangkap pembalikan lebih baik daripada sentuhan.
Perlahan sebelum menutup untuk menghindari risiko celah semalam.
RSI efektif untuk mendeteksi overbought/sold.
Mode Breakout memberikan entri tren awal dibandingkan dengan pembalikan.
Menyesuaikan jarak dan ukuran grid memungkinkan penyesuaian risiko.
Jaringan visual & zona panjang/pendek.
Gaun pendek opsional untuk memenuhi pedagang yang berbeda.
Logika sederhana yang jelas cocok untuk perdagangan algo.
Ini membuat strategi mampu melacak tren otomatis dengan kontrol risiko untuk perdagangan langsung.
Ada juga beberapa risiko potensial yang perlu dicatat:
Pasar Whipsaw bisa menyebabkan stop loss, bisa memperluas stop atau menghentikan trading.
Kesenjangan semalam bisa meninggalkan kesenjangan yang besar dan mengurangi ukuran posisi.
Penyesuaian parameter yang buruk dapat meningkatkan perdagangan atau kesalahan sinyal.
Biaya tinggi dapat mengikis keuntungan dari perdagangan jaringan.
Sinyal breakout mungkin sedikit tertinggal, perlu batas breakout yang wajar.
Mungkin berkinerja buruk dalam tren naik yang stabil.
Membutuhkan modal yang cukup untuk ukuran posisi yang lebih besar dan piramida, jika tidak hasilnya akan buruk.
Pengurangan:
Mengoptimalkan parameter untuk mengurangi frekuensi perdagangan dan overtrading.
Gabungkan dengan indikator tren, hindari periode perdagangan.
Mengurangi ukuran perdagangan % dan risiko per perdagangan.
Uji ambang batas yang berbeda untuk keseimbangan terbaik antara waktu dan stabilitas.
Tambahkan lebih banyak kondisi masuk, masukkan hanya tren yang jelas untuk menghindari terjebak.
Backtest selama periode yang lebih lama untuk mengevaluasi stabilitas parameter.
Jelajahi optimasi parameter dinamis berbasis pembelajaran mesin untuk kemampuan adaptasi pasar.
Pertimbangkan untuk menggabungkan dengan strategi opsi untuk lindung nilai risiko posisi.
Sesuaikan parameter berdasarkan kondisi pasar terbaru untuk menjaga strategi tetap efektif.
Membangun platform optimasi visual untuk membantu pengujian cepat.
Dengan optimasi parameter, menyisir sinyal, dan lebih banyak informasi pasar, risiko dapat dikurangi untuk membuat strategi algo yang benar-benar andal.
Strategi ini dapat ditingkatkan lagi dengan:
Mengoptimalkan parameter RSI, menguji periode RSI untuk kombinasi terbaik.
Mencoba jarak grid yang berbeda untuk risiko-balasan yang optimal.
Menambahkan indikator lain ke sinyal filter, misalnya MACD, KD dll untuk meningkatkan akurasi.
Mengembangkan adaptif berhenti berdasarkan volatilitas pasar.
Meningkatkan kondisi masuk, hanya masukkan tren yang jelas untuk menghindari perangkap.
Backtesting selama periode yang lebih lama untuk mengevaluasi stabilitas parameter.
Menjelajahi optimasi dinamis berbasis pembelajaran mesin untuk kemampuan beradaptasi.
Menggabungkan strategi opsi untuk lindung nilai risiko.
Menyesuaikan parameter berdasarkan kondisi pasar baru-baru ini untuk mempertahankan efektivitas.
Membangun platform optimasi visual untuk pengujian cepat.
Dengan optimasi otomatis, kombinasi strategi, informasi pasar yang lebih banyak dll, dapat mencapai stabilitas dan pengembalian yang lebih baik sebagai strategi perdagangan yang sebenarnya.
Singkatnya, strategi RSI Box Grid menggunakan RSI untuk mengidentifikasi konfirmasi pembalikan tren, menetapkan grid rentang harga dinamis, pemutusan perdagangan, dan meratakan intraday - membentuk tren fleksibel mengikuti strategi perdagangan algo. Dibandingkan dengan grid tetap, ia beradaptasi lebih baik dengan perubahan pasar.
Strategi ini memiliki keuntungan termasuk RSI untuk konteks tren, grid dinamis, perdagangan breakout, dan perataan penuh intraday. Hal ini memungkinkan untuk secara efektif melacak tren dengan kontrol risiko. Namun, risiko seperti stop loss whipsaw, gap overnight ada, yang membutuhkan optimasi, menyisir sinyal, dan manajemen risiko.
Ada banyak peluang peningkatan, dengan menggabungkan lebih banyak indikator, optimasi ML, pengujian backtesting visual dll, ini dapat menjadi strategi perdagangan algo laba yang lebih kuat.
/*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))