Kemeruapan dinamik menangkap strategi RSI-Bollinger Bands


Tarikh penciptaan: 2023-12-01 14:17:55 Akhirnya diubah suai: 2023-12-01 14:17:55
Salin: 0 Bilangan klik: 751
1
fokus pada
1619
Pengikut

Kemeruapan dinamik menangkap strategi RSI-Bollinger Bands

Gambaran keseluruhan

Strategi RSI-Bulling Band adalah strategi perdagangan yang mengintegrasikan konsep Bulling Band (BB), Indeks Kepercayaan Relatif (RSI) dan Purata Bergerak Sederhana (SMA). Strategi ini unik kerana ia mengira tahap dinamik antara harga penutupan di atas dan di bawah landasan. Fungsi unik ini membolehkan strategi ini menyesuaikan diri dengan turun naik pasaran dan perubahan harga.

Pasaran mata wang kripto dan saham sangat berfluktuasi, jadi sangat sesuai untuk menggunakan strategi Brin. RSI dapat membantu mengenal pasti keadaan jual beli yang berlebihan di pasaran yang sering spekulatif.

Prinsip Strategi

BollingBand Dinamik: Strategi ini mula-mula mengira BollingBand atas dan bawah berdasarkan panjang dan kelipatan yang ditentukan oleh pengguna. Kemudian, ia menyesuaikan nilai BollingBand Hadir dengan BollingBand Hadir dan pergerakan harga penutupan. Akhirnya, ia menghasilkan isyarat berganda apabila harga melewati BollingBand Hadir.

RSI: Jika pengguna memilih untuk menggunakan RSI untuk menghasilkan isyarat, strategi ini juga akan mengira RSI dan SMA, dan menggunakannya untuk menghasilkan isyarat plus dan minus tambahan. Isyarat berasaskan RSI hanya digunakan apabila pen pen pen pen menggunakan RSI untuk menghasilkan pilihan pen pen signal yang ditetapkan kepada true.

Kemudian, strategi ini memeriksa arah perdagangan yang dipilih, dan masuk ke posisi jual beli atau jual beli. Jika arah perdagangan ditetapkan sebagai penunjuk dua arah, strategi ini boleh masuk ke posisi jual beli dan jual beli pada masa yang sama.

Akhirnya, apabila harga penutupan melintasi BollingBand sekarang, ia akan melonggarkan kedudukan yang lebih tinggi; apabila harga penutupan melintasi BollingBand sekarang, ia akan melonggarkan kedudukan yang lebih rendah.

Analisis kelebihan

Strategi ini menggabungkan kelebihan Bollinger Bands, RSI dan SMA untuk menyesuaikan diri dengan turun naik pasaran, menangkap pergerakan secara dinamik, dan menghasilkan isyarat perdagangan dalam keadaan overbought dan oversold.

Indeks RSI melengkapi isyarat perdagangan Brin Belt, untuk mengelakkan salah masuk dalam pasaran yang bergolak. Ia membolehkan pilihan untuk melakukan perdagangan hanya lebih banyak, hanya lebih sedikit atau dua hala, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

Parameter boleh disesuaikan dan disesuaikan dengan pilihan risiko individu.

Analisis risiko

Strategi ini bergantung kepada penunjuk teknikal dan tidak dapat menangani perubahan besar yang disebabkan oleh asas.

Tetapan parameter Brinband yang tidak betul boleh menyebabkan isyarat perdagangan yang terlalu kerap atau terlalu jarang dihasilkan.

Perdagangan dua hala meningkatkan risiko, perlu berhati-hati terhadap kerugian yang disebabkan oleh pemotongan harga.

Ia disyorkan untuk mengawal risiko dengan menggunakan stop loss.

Arah pengoptimuman

  1. Gabungan dengan isyarat penapisan penunjuk lain, seperti MACD.

  2. Tambah strategi penangguhan kerugian

  3. Optimumkan parameter Brin dan RSI.

  4. Parameter disesuaikan mengikut jenis dan kitaran transaksi yang berbeza.

  5. Pertimbangkan untuk mengoptimumkan cakera keras, menyesuaikan parameter untuk menyesuaikan diri dengan keadaan sebenar.

ringkaskan

Strategi ini adalah strategi yang didorong oleh indikator teknikal yang menggabungkan kelebihan indikator Brin, RSI, dan SMA untuk menangkap turun naik pasaran dengan menyesuaikan Brin secara dinamik. Strategi ini boleh disesuaikan dan dioptimumkan dengan ruang yang luas, tetapi tidak dapat meramalkan perubahan asas.

Kod sumber strategi
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 15m
basePeriod: 5m
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/
// © PresentTrading

//@version=5
// Define the strategy settings
strategy('Volatility Capture RSI-Bollinger - Strategy [presentTrading]', overlay=true)

// Define the input parameters for the indicator
priceSource  = input.source(title='Source', defval=hlc3, group='presentBollingBand') // The price source to use
lengthParam   = input.int(50, 'lengthParam', minval=1, group='presentBollingBand') // The length of the moving average
multiplier = input.float(2.7183, 'Multiplier', minval=0.1, step=.1, group='presentBollingBand') // The multiplier for the ATR
useRSI = input.bool(true, 'Use RSI for signals', group='presentBollingBand') // Boolean input to decide whether to use RSI for signals
rsiPeriod = input.int(10, 'RSI Period', minval=1, group='presentBollingBand') // The period for the RSI calculation
smaPeriod = input.int(5, 'SMA Period', minval=1, group='presentBollingBand') // The period for the SMA calculation
boughtRange = input.float(55, 'Bought Range Level', minval=1, group='presentBollingBand') // The level for the bought range
soldRange = input.float(50, 'Sold Range Level', minval=1, group='presentBollingBand') // The level for the sold range

// Add a parameter for choosing Long or Short
tradeDirection = input.string("Both", "Trade Direction", options=["Long", "Short", "Both"], group='presentBollingBand') // Dropdown input for trade direction

// Calculate the bollingerBand
barIndex = bar_index // The current bar index
upperBollingerBand = ta.sma(high, lengthParam) + ta.stdev(high, lengthParam) * multiplier // Calculate the upper Bollinger Band
lowerBollingerBand = ta.sma(low, lengthParam) - ta.stdev(low, lengthParam) * multiplier // Calculate the lower Bollinger Band

var float presentBollingBand = na // Initialize the presentBollingBand variable
crossCount = 0 // Initialize the crossCount variable

// Calculate the buy and sell signals
longSignal1 = ta.crossover(priceSource, presentBollingBand) // Calculate the long signal
shortSignal1 = ta.crossunder(priceSource, presentBollingBand) // Calculate the short signal

// Calculate the RSI
rsiValue = ta.rsi(priceSource, rsiPeriod) // Calculate the RSI value
rsiSmaValue = ta.sma(rsiValue, smaPeriod) // Calculate the SMA of the RSI value

// Calculate the buy and sell signals
longSignal2 = rsiSmaValue > boughtRange // Calculate the long signal based on the RSI SMA
shortSignal2 = rsiSmaValue < soldRange // Calculate the short signal based on the RSI SMA

presentBollingBand := na(lowerBollingerBand) or na(upperBollingerBand)?0.0 : close>presentBollingBand?math.max(presentBollingBand,lowerBollingerBand) : close<presentBollingBand?math.min(presentBollingBand,upperBollingerBand) : 0.0


if (tradeDirection == "Long" or tradeDirection == "Both") and longSignal1 and (useRSI ? longSignal2 : true) // Use RSI for signals if useRSI is true
    presentBollingBand := lowerBollingerBand // If the trade direction is "Long" or "Both", and the long signal is true, and either useRSI is false or the long signal based on RSI is true, then assign the lowerBollingerBand to the presentBollingBand.
    strategy.entry("Long", strategy.long) // Enter a long position.

if (tradeDirection == "Short" or tradeDirection == "Both") and shortSignal1 and (useRSI ? shortSignal2 : true) // Use RSI for signals if useRSI is true
    presentBollingBand := upperBollingerBand // If the trade direction is "Short" or "Both", and the short signal is true, and either useRSI is false or the short signal based on RSI is true, then assign the upperBollingerBand to the presentBollingBand.
    strategy.entry("Short", strategy.short) // Enter a short position.

// Exit condition
if (strategy.position_size > 0 and ta.crossunder(close, presentBollingBand)) // If the strategy has a long position and the close price crosses under the presentBollingBand, then close the long position.
    strategy.close("Long")
if (strategy.position_size < 0 and ta.crossover(close, presentBollingBand)) // If the strategy has a short position and the close price crosses over the presentBollingBand, then close the short position.
    strategy.close("Short")

//~~ Plot
plot(presentBollingBand,"presentBollingBand", color=color.blue) // Plot the presentBollingBand on the chart.