Algoritma RSI Range Breakout Strategi

Penulis:ChaoZhang, Tarikh: 2023-10-17 17:14:09
Tag:

img

Ringkasan

Strategi ini memantau penembusan penunjuk RSI dalam julat yang berbeza untuk melaksanakan membeli rendah dan menjual tinggi. Ia pergi lama apabila RSI berada dalam julat rendah dan pergi pendek apabila RSI berada dalam julat tinggi, dengan itu membalikkan kedudukan apabila keadaan overbought atau oversold muncul.

Logika Strategi

  1. Tetapkan tempoh RSI kepada 14

  2. Tetapkan julat isyarat beli RSI:

    • Julat 1: RSI <= 27
    • Julat 2: RSI <= 18
  3. Tetapkan julat isyarat jual RSI:

    • Julat 1: RSI >= 68
    • Julat 2: RSI >= 80
  4. Apabila RSI memasuki julat beli, pergi panjang:

    • Jika RSI memasuki julat 1 (di bawah 27), pergi panjang 1 lot
    • Jika RSI memasuki julat 2 (di bawah 18), pergi panjang tambahan 1 lot
  5. Apabila RSI memasuki julat jual, pergi pendek:

    • Jika RSI memasuki julat 1 (di atas 68), pergi pendek 1 lot
    • Jika RSI memasuki julat 2 (di atas 80), pergi pendek tambahan 1 lot
  6. Tetapkan keuntungan tetap untuk 2500 pips dan stop loss untuk 5000 pips

  7. Penutupan kedudukan apabila RSI keluar dari julat isyarat

Analisis Kelebihan

  1. Tetapan julat berganda membantu mengenal pasti keadaan overbought dan oversold dengan lebih baik, mengelakkan peluang pembalikan yang hilang

  2. Mengambil keuntungan tetap mengambil dan berhenti kerugian dalam pip menghalang mengejar trend terlalu banyak

  3. RSI adalah pengayun yang matang dalam mengenal pasti tahap overbought dan oversold dengan kelebihan berbanding penunjuk lain

  4. Dengan penyesuaian parameter yang betul, strategi ini dapat menangkap titik pembalikan trend dengan berkesan dan menjana pulangan yang berlebihan

Analisis Risiko

  1. Perbezaan RSI boleh berlaku yang membawa kepada kerugian berturut-turut dari kedudukan pendek yang berterusan

  2. Pendapatan tetap mengambil keuntungan dan menghentikan kerugian mungkin tidak sesuai dengan turun naik pasaran, tidak dapat memperoleh keuntungan atau berhenti sebelum masa

  3. Tetapan julat yang tidak betul boleh menyebabkan perdagangan yang hilang atau perdagangan yang tidak menguntungkan yang kerap

  4. Strategi ini bergantung kepada pengoptimuman parameter berdasarkan backtest.

Arahan pengoptimuman

  1. Kesan ujian RSI dengan panjang tempoh yang berbeza

  2. Mengoptimumkan nilai julat beli dan jual untuk menyesuaikan ciri-ciri produk yang berbeza

  3. Penyelidikan dinamik mengambil keuntungan dan menghentikan kerugian untuk meningkatkan keuntungan dan munasabah

  4. Pertimbangkan untuk menggabungkan penunjuk lain untuk dagangan ensemble untuk meningkatkan ketahanan

  5. Meneroka teknik pembelajaran mesin untuk mengoptimumkan julat parameter secara automatik untuk ketahanan

Kesimpulan

Strategi ini berdasarkan prinsip RSI overbought dan oversold. Dengan menggunakan julat perdagangan berganda, ia menggunakan penunjuk RSI dengan berkesan, menangkap ekstrem pasaran dengan kestabilan yang baik. Walau bagaimanapun, ia mempunyai beberapa ketergantungan parameter dan memerlukan pengoptimuman merentasi produk. Jika disesuaikan dengan betul, strategi ini dapat menghasilkan pulangan yang berlebihan yang baik. Ringkasnya, ini adalah strategi perdagangan yang mudah namun berkesan menggunakan penunjuk matang, yang bernilai penyelidikan untuk peningkatan dan memberikan pandangan untuk perdagangan kuantitatif.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 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/
// © Rawadabdo

// Ramy's Algorithm

//@version=5
strategy("BTC/USD - RSI", overlay=false, initial_capital = 5000)

// User input
length = input(title = "Length", defval=14, tooltip="RSI period")

first_buy_level = input(title = "Buy Level 1", defval=27, tooltip="Level where 1st buy triggers")
second_buy_level = input(title = "Buy Level 2", defval=18, tooltip="Level where 2nd buy triggers")

first_sell_level = input(title = "Sell Level 1", defval=68, tooltip="Level where 1st sell triggers")
second_sell_level = input(title = "Sell Level 2", defval=80, tooltip="Level where 2nd sell triggers")

takeProfit= input(title="target Pips", defval=2500, tooltip="Fixed pip stop loss distance")
stopLoss = input(title="Stop Pips", defval=5000, tooltip="Fixed pip stop loss distance")

lot = input(title = "Lot Size", defval = 1, tooltip="Trading Lot size")

// Get RSI
vrsi = ta.rsi(close, length)

// Entry Conditions
long1 = (vrsi <= first_buy_level and vrsi>second_buy_level)
long2 = (vrsi <= second_buy_level)

short1= (vrsi >= first_sell_level and vrsi<second_sell_level)
short2= (vrsi >= second_sell_level)


// Entry Orders
// Buy Orders
if (long1 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=lot, comment="Buy")
    if (long2 and  strategy.position_size == 0)
        strategy.entry("Long", strategy.long, qty=lot, comment="Buy")

// Short Orders
if (short1 and strategy.position_size == 0)
    strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    if (short2 and strategy.position_size == 0)
        strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    
// Exit our trade if our stop loss or take profit is hit
strategy.exit(id="Long Exit", from_entry="Long",qty = lot, profit=takeProfit, loss=stopLoss)
strategy.exit(id="Short Exit", from_entry="Short", qty = lot, profit=takeProfit, loss=stopLoss)

// plot data to the chart
hline(first_sell_level, "Overbought Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_sell_level, "Overbought Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
hline(first_buy_level, "Oversold Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_buy_level, "Oversold Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
plot (vrsi, title = "RSI", color = color.blue, linewidth=2)





Lebih lanjut