Strategi Pelacakan Tren Berdasarkan Band Pivot Dinamis

Penulis:ChaoZhang, Tanggal: 2023-12-26 11:57:20
Tag:

img

Gambaran umum

Strategi ini menghitung harga tertinggi dan terendah baru-baru ini selama periode tertentu, dikombinasikan dengan harga saat ini, untuk membentuk garis tengah yang dinamis. Saluran turun merah dan saluran naik hijau kemudian dihasilkan berdasarkan volatilitas baru-baru ini. Tiga garis saluran membentuk kisaran yang dapat diperdagangkan. Ketika harga mendekati batas saluran, operasi terbalik dilakukan menargetkan keuntungan kembali ke garis tengah. Sementara itu, ada perhitungan tren di dalam strategi untuk menyaring perdagangan terhadap tren dan menghindari dihancurkan oleh tren utama.

Logika Strategi

  1. Menghitung garis tengah dinamis dengan harga tertinggi terbaru, harga terendah dan harga penutupan saat ini
  2. Menghasilkan band dinamis berdasarkan ATR dan pengganda, perubahan lebar dengan volatilitas pasar
  3. Pergi panjang ketika harga melompat dari band bawah, pergi pendek ketika melompat dari band atas
  4. Memiliki mengambil keuntungan dan stop loss logika menargetkan garis tengah
  5. Sementara itu menghitung indeks tren untuk menyaring perdagangan terhadap tren

Analisis Keuntungan

  1. Band dinamis beradaptasi dengan volatilitas pasar real-time
  2. Probabilitas tinggi perdagangan di sepanjang tren
  3. Kontrol stop loss loss loss tunggal

Analisis Risiko

  1. Optimasi parameter yang tidak tepat dapat menyebabkan overtrading
  2. Tidak dapat sepenuhnya menghilangkan perdagangan yang bertentangan dengan tren di bawah tren utama
  3. Penarikan satu sisi mungkin terus berjalan

Arah Optimalisasi

  1. Sesuaikan parameter pita untuk menyesuaikan produk yang berbeda
  2. Parameter indeks tren yang disesuaikan untuk meningkatkan probabilitas perdagangan tren
  3. Memperkenalkan elemen pembelajaran mesin untuk optimasi parameter dinamis

Ringkasan

Strategi ini terutama bergantung pada osilasi pasar untuk menghasilkan keuntungan. Dengan menangkap titik pembalikan harga secara dinamis dengan pita, dikombinasikan dengan penyaringan tren, dapat secara efektif mendapatkan keuntungan dari pembalikan rata-rata sambil mengendalikan risiko. Kuncinya terletak pada penyesuaian parameter untuk membuat pita responsif namun tidak terlalu sensitif. Indeks tren juga membutuhkan periode yang tepat untuk memainkan perannya. Dengan tren dan berhenti yang menguntungkan secara teoritis, strategi ini dapat mencapai pengembalian yang layak melalui optimalisasi.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Strategy - Bobo PAPATR", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)

// === STRATEGY RELATED INPUTS AND LOGIC ===
len = input(24, minval=1, title="Pivot Length, defines lookback for highs and lows to make pivots")
length = input(title="ATR lookback (Lower = bands more responsive to recent price action)", type=input.integer, defval=22)
myatr = atr(length)
dailyatr = myatr[1]
atrmult = input(title="ATR multiplier (Lower = wider bands)", type=input.float, defval=3)
pivot0 = (high[1] + low[1]  + close[1]) / 3

// PIVOT CALC
h = highest(len)
h1 = dev(h, len) ? na : h
hpivot = fixnan(h1)
l = lowest(len)
l1 = dev(l, len) ? na : l
lpivot = fixnan(l1)
pivot = (lpivot + hpivot + pivot0) / 3
upperband1 = (dailyatr * atrmult) + pivot
lowerband1 = pivot - (dailyatr * atrmult)
middleband = pivot

// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM =  loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 =  DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) /  ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)


// === RISK MANAGEMENT INPUTS ===
inpTakeProfit   = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss     = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong) 
strategy.close(id = "Long", when = exitLong)

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)

// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)

// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Lebih banyak