Strategi BB+RSI+Aroon yang dapat dikonfigurasi


Tanggal Pembuatan: 2023-09-21 15:05:38 Akhirnya memodifikasi: 2023-09-21 15:05:38
menyalin: 0 Jumlah klik: 739
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menggabungkan Bollinger Bands (BB), Relative Strength Index (RSI) dan Aroon Indicator untuk memanfaatkan keunggulan masing-masing indikator dan memberikan sinyal masuk dan keluar yang efisien untuk perdagangan.

Prinsip Strategi

  1. Ketika harga menembus BRI, sinyal multihead akan ditampilkan.

  2. Ketika RSI melewati garis overbought, sinyal konfirmasi multihead ditampilkan.

  3. Ketika Aroon naik dan turun, sinyal konfirmasi multihead muncul.

  4. Ketika ketiga kondisi tersebut terpenuhi, lakukan lebih banyak lagi.

  5. Ketika harga menembus Brin Belt, maka akan ditampilkan sinyal kosong.

  6. Ketika RSI di bawah melewati garis oversold, menunjukkan sinyal konfirmasi overhead.

  7. Ketika Aroon memakai pakaian, ia menunjukkan tanda konfirmasi di atas kepala kosong.

  8. Bila ketiga kondisi di atas terpenuhi secara bersamaan, maka kosonglah.

Keunggulan Strategis

  • Parameter yang dapat dikonfigurasi, dioptimalkan untuk kombinasi optimal
  • Pengesahan berbagai indikator untuk meningkatkan akurasi sinyal
  • Cocok untuk berbagai lingkungan pasar
  • Logika transaksi sederhana, mudah diterapkan

Risiko Strategis

  • Parameter tidak dioptimalkan dengan baik, mungkin terlalu banyak sinyal yang salah
  • “Multiple Indicators” Terlambat, Mungkin Melewatkan Pergeseran Cepat
  • Operasi terbalik meningkatkan frekuensi dan biaya transaksi

Arah optimasi

  • Retrospeksi multi-pasar multi-frame waktu untuk mencari parameter optimal
  • Evaluasi efek dari setiap indikator, dan hapus jika perlu
  • Mencoba optimasi parameter berbasis pembelajaran mesin
  • Optimalkan kode kebijakan, mengurangi perhitungan
  • Uji Parameter Waktu Pemegang Posisi yang Berbeda

Meringkaskan

Strategi ini menggabungkan keunggulan dari beberapa indikator untuk membentuk sinyal masuk yang lebih kuat. Dengan pengoptimalan parameter, penghapusan indikator yang tidak perlu dan pengoptimalan kode, efektivitas strategi dapat ditingkatkan ke tingkat yang lebih tinggi. Secara keseluruhan, strategi ini memberikan solusi khusus yang efektif untuk perdagangan.

Kode Sumber Strategi
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()