Strategi Dagangan Bitlinc MARSI

Penulis:ChaoZhang, Tarikh: 2024-02-29 10:54:45
Tag:

img

Ringkasan

Strategi ini adalah strategi pengesanan goyangan RSI berdasarkan penyesuaian tahunan. Dengan mengesan ciri-ciri goyangan penunjuk RSI antara jalur atas dan bawah yang ditetapkan, isyarat perdagangan dikeluarkan apabila penunjuk RSI menyentuh jalur atas dan bawah.

Prinsip Strategi

  1. Tetapkan parameter untuk panjang MA, RSI, band atas/bawah, mengambil keuntungan/henti rugi, julat kitaran dagangan.
  2. Mengira nilai RSI, RSI = (Perubahan Purata Keatas) / ((Perubahan Purata Keatas + Perubahan Purata Kebawah) * 100
  3. Garis dan jalur RSI grafik
  4. RSI melintasi band bawah adalah isyarat panjang, melintasi band atas adalah isyarat pendek
  5. Posisi terbuka dengan arahan OCO
  6. Melakukan stop loss dan mengambil keuntungan berdasarkan tetapan

Analisis Kelebihan

  1. Menetapkan kitaran perdagangan tahunan mengelakkan persekitaran luaran yang tidak sesuai.
  2. RSI mencerminkan overbought / oversold dengan cekap.
  3. Perintah OCO + tetapan stop loss/profit membolehkan kawalan risiko yang cekap.

Analisis Risiko

  1. Ketepatan penghakiman ambang RSI tidak dapat dijamin, penghakiman yang salah mungkin berlaku.
  2. Tetapan kitaran tahunan yang tidak betul boleh kehilangan peluang yang lebih baik atau memasuki persekitaran yang tidak sesuai.
  3. Tetapan stop loss yang terlalu besar boleh membawa kepada kerugian yang besar, manakala penentuan keuntungan yang terlalu kecil memberikan keuntungan yang kecil.

Kaedah seperti menyesuaikan parameter RSI, julat kitaran dagangan, nisbah stop loss / keuntungan boleh digunakan untuk mengoptimumkan.

Arahan pengoptimuman

  1. Uji parameter RSI optimum untuk pasaran dan kitaran yang berbeza
  2. Menganalisis corak kitaran pasaran secara keseluruhan, menetapkan fasa perdagangan tahunan terbaik
  3. Menentukan nisbah stop loss / keuntungan yang munasabah melalui backtest
  4. Mengoptimumkan pemilihan produk dagangan dan saiz kedudukan
  5. Gabungkan dengan teknik lain yang lebih baik untuk pengoptimuman lanjut

Ringkasan

Strategi ini mengesan trend dengan ciri-ciri goyangan kitaran tahunan RSI, mengawal risiko perdagangan dengan berkesan. Penambahbaikan prestasi yang lebih lanjut boleh dicapai dengan penyesuaian parameter dan pengoptimuman logik.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Bitlinc MARSI Study AST",shorttitle="Bitlinc MARSI Study AST",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1000,currency="USD",pyramiding=0, calc_on_order_fills=false)

// === General Inputs ===
lengthofma = input(62, minval=1, title="Length of MA")
len = input(31, minval=1, title="Length")
upperband = input(89, minval=1, title='Upper Band for RSI')
lowerband = input(10, minval=1, title="Lower Band for RSI")
takeprofit =input(1.25, title="Take Profit Percent")
stoploss =input(.04, title ="Stop Loss Percent")
monthfrom =input(8, title = "Month Start")
monthuntil =input(12, title = "Month End")
dayfrom=input(1, title= "Day Start")
dayuntil=input(31, title= "Day End")

// === Innput Backtest Range ===
//FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
//FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
//ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === Create RSI ===
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi,linewidth = 2, color=purple)

// === Plot Bands ===
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=blue, transp=95)

// === Entry and Exit Methods ===
longCond =  crossover(rsi,lowerband)
shortCond =  crossunder(rsi,upperband)

// === Long Entry Logic ===
if (  longCond ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
    strategy.cancel(id="LONG")

// === Short Entry Logic ===    
if ( shortCond   ) 
    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")

// === Take Profit and Stop Loss Logic ===
//strategy.exit("Take Profit LONG", "LONG", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
//strategy.exit("Take Profit SHORT", "SHORT", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
strategy.exit("LONG TAKE PROFIT", "LONG", profit = close * takeprofit / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", profit = close * takeprofit / syminfo.mintick)
strategy.exit("LONG STOP LOSS", "LONG", loss = close * stoploss / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", loss = close * stoploss / syminfo.mintick)



Lebih lanjut