Strategi Perdagangan Bitlinc MARSI

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

img

Gambaran umum

Strategi ini adalah strategi pelacakan osilasi RSI berdasarkan penyesuaian tahunan. Dengan melacak karakteristik osilasi indikator RSI antara band atas dan bawah yang ditetapkan, sinyal perdagangan dikeluarkan ketika indikator RSI menyentuh band atas dan bawah.

Prinsip Strategi

  1. Tetapkan parameter untuk panjang MA, RSI, band atas/bawah, mengambil keuntungan/stop loss, rentang siklus perdagangan.
  2. Menghitung nilai RSI, RSI = (Rata-rata Perubahan Meningkat) / ((Rata-rata Perubahan Meningkat + Rata-rata Perubahan Menurun) * 100
  3. Grafik garis dan pita RSI
  4. RSI melintasi band bawah adalah sinyal panjang, melintasi band atas adalah sinyal pendek
  5. Posisi terbuka dengan perintah OCO
  6. Mengeksekusi stop loss dan mengambil keuntungan berdasarkan pengaturan

Analisis Keuntungan

  1. Menetapkan siklus perdagangan tahunan menghindari lingkungan eksternal yang tidak cocok.
  2. RSI mencerminkan overbought/oversold secara efisien.
  3. Perintah OCO + pengaturan stop loss/profit memungkinkan pengendalian risiko yang efisien.

Analisis Risiko

  1. Keakuratan penilaian ambang RSI tidak dapat dijamin, penilaian yang salah mungkin terjadi.
  2. Pengaturan siklus tahunan yang tidak tepat dapat kehilangan peluang yang lebih baik atau memasuki lingkungan yang tidak cocok.
  3. Pengaturan stop loss yang terlalu besar dapat menyebabkan kerugian besar, sementara pengaturan keuntungan yang terlalu kecil menghasilkan keuntungan yang kecil.

Metode seperti penyesuaian parameter RSI, rentang siklus perdagangan, rasio stop loss / profit dapat digunakan untuk mengoptimalkan.

Arahan Optimasi

  1. Uji parameter RSI optimal untuk pasar dan siklus yang berbeda
  2. Menganalisis pola siklus pasar secara keseluruhan, menetapkan fase perdagangan tahunan terbaik
  3. Tentukan rasio stop loss/profit yang wajar melalui backtest
  4. Mengoptimalkan pemilihan produk perdagangan dan ukuran posisi
  5. Gabungkan dengan teknik lain yang lebih baik untuk optimasi lebih lanjut

Ringkasan

Strategi ini melacak tren dengan fitur osilasi siklus tahunan RSI, secara efektif mengendalikan risiko perdagangan.


/*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 banyak