Strategi Dagangan Regresi Purata Pergerakan RSI


Tarikh penciptaan: 2023-09-12 14:37:28 Akhirnya diubah suai: 2023-09-12 14:37:28
Salin: 0 Bilangan klik: 703
1
fokus pada
1617
Pengikut

Strategi ini dicipta berdasarkan ciri-ciri pengembalian rata-rata RSI. Pengembalian berlaku apabila RSI overbuying overselling, membentuk peluang perdagangan. Strategi ini menggunakan RSI untuk menilai keadaan overbuying overselling, menggunakan pengembalian rata-rata untuk mewujudkan kedudukan kosong, untuk mencapai tujuan perdagangan sistematik.

Prinsip-prinsip strategi:

  1. Hitung nilai RSI dengan menetapkan garisan overbought dan garisan oversold, parameter tipikal adalah garisan overbought 60 dan garisan oversold 30.

  2. Apabila RSI jatuh dari atas ke bawah dan melampaui garis beli, lakukan operasi jual beli dan buat kedudukan pendek.

  3. Apabila RSI melampaui garis jual dari bawah ke atas, lakukan pembelian dan buat kedudukan tambahan.

  4. Garis hentian banyak kedudukan adalah harga masuk kali ((perkadaran hentian 1-), garis hentian kedudukan pendek adalah harga masuk kali ((perkadaran hentian 1 +)

  5. Apabila harga menembusi garisan stop loss, buatlah stop loss exit.

Kelebihan strategi ini ialah:

  1. Menggunakan ciri-ciri pengembalian RSI, anda boleh menangkap peluang perdagangan yang dibawa oleh perubahan trend.

  2. Menggunakan kaedah penembusan, anda boleh menangkap perubahan trend tepat pada masanya.

  3. Tetapkan garis hentian kerugian untuk mengawal kerugian tunggal.

Risiko strategi ini termasuk:

  1. Indeks RSI mempunyai kebarangkalian besar untuk memberi isyarat palsu, yang harus disahkan dengan gabungan indikator lain.

  2. Titik henti yang berdekatan dengan titik masuk sering dihentikan, dan jangkauan henti harus dikurangkan dengan sewajarnya.

  3. Pemilihan masa yang salah untuk kembali berdagang boleh menyebabkan jangka masa yang terlalu lama.

Ringkasnya, strategi RSI Linear Regression berdagang dengan menangkap peluang pengembalian RSI. Strategi ini boleh dilakukan secara beransur-ansur, dan berkesan mengawal kerugian tunggal. Namun, kebolehpercayaan RSI rendah, pelabur perlu berhati-hati, dan membantu dengan indikator teknikal lain untuk mengesahkan dan mengoptimumkan mekanisme penangguhan kerugian, dengan harapan mendapat pulangan yang stabil dalam jangka panjang.

Kod sumber strategi
/*backtest
start: 2022-09-05 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
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/
// © relevantLeader16058

//@version=4
strategy(shorttitle='RSI Bot Strategy',title='Quadency Mean Reversion Bot Strategy', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.08)

//Backtest dates
start = input(defval = timestamp("08 Mar 2021 00:00 -0600"), title = "Start Time", type = input.time)
finish = input(defval = timestamp("9 Mar 2021 23:59 -0600"), title = "Start Time", type = input.time)
window()  => true       // create function "within window of time"

// Complete Control over RSI inputs and source price calculations
lengthRSI = input(14, minval=1)
source = input(title="Source", type=input.source, defval=close)
strat = input(title="Strategy", defval="Long/Short", options=["Long Only", "Long/Short", "Short Only"])
strat_val = strat == "Long Only" ? 1 : strat == "Long/Short" ? 0 : -1
stoploss = input(5.00, "Stop Loss %")
oversold= input(30)
overbought= input(60)

// Standard RSI Calculation
RSI = rsi(close, lengthRSI)
stLossLong=(1-(stoploss*.01))
stLossShort=(1+(stoploss*.01))

//Long and Short Strategy Logic
GoLong = crossunder(RSI, oversold) and window()
GoShort = crossover(RSI, overbought) and window()

// Strategy Entry and Exit
if (GoLong)
    if strat_val > -1
        strategy.entry("LONG", strategy.long)
    if strat_val < 1
        strategy.close("SHORT")
    

if (GoShort)
    if strat_val > -1
        strategy.close("LONG")
    if strat_val < 1
        strategy.entry("SHORT", strategy.short)


LongStopLoss = barssince(GoLong)<barssince(GoShort) and crossunder(low, valuewhen(GoLong, close, 0)*stLossLong)

ShortStopLoss = barssince(GoLong)>barssince(GoShort) and crossover(high, valuewhen(GoShort, close, 0)*stLossShort)

if (ShortStopLoss)
    strategy.close("SHORT")
    
if (LongStopLoss)
    strategy.close("LONG")