Strategi mengikuti tren berdasarkan pita dukungan dan resistensi yang dinamis


Tanggal Pembuatan: 2023-12-26 11:57:20 Akhirnya memodifikasi: 2023-12-26 11:57:20
menyalin: 1 Jumlah klik: 496
1
fokus pada
1623
Pengikut

Strategi mengikuti tren berdasarkan pita dukungan dan resistensi yang dinamis

Ringkasan

Strategi ini membentuk sumbu tengah yang dinamis dengan menghitung harga tertinggi dan terendah dalam jangka waktu tertentu, dikombinasikan dengan harga saat ini. Kemudian, berdasarkan fluktuasi terbaru, saluran turun merah dan saluran naik hijau dihasilkan. Tiga saluran ini membentuk ruang yang dapat diperdagangkan.

Prinsip Strategi

  1. Hitung harga tertinggi dan terendah dalam N siklus terakhir, dengan kombinasi harga penutupan saat ini untuk membentuk sumbu tengah dinamis
  2. Bandwidth berubah seiring dengan fluktuasi pasar berdasarkan ATR dan penggandaan bandwidth yang dihasilkan secara dinamis
  3. Ketika harga naik dari saluran bawah, maka kita melakukan over dan ketika harga naik dari saluran atas maka kita melakukan over.
  4. Dengan Stop Stop dan Stop Loss Logic, tujuan untuk kembali ke halte pada sumbu tengah
  5. Menghitung indeks tren untuk memfilter transaksi yang tidak menguntungkan

Analisis Keunggulan

  1. Perubahan posisi saluran yang dinamis, dapat menangkap fluktuasi pasar secara real-time
  2. Probabilitas perdagangan beruntun lebih besar, membantu untuk memahami tren
  3. Logika pengendalian kerugian tunggal dengan stop loss

Analisis risiko

  1. Optimisasi parameter yang tidak tepat dapat menyebabkan overtrading
  2. Tren besar tidak bisa sepenuhnya menghilangkan perdagangan negatif
  3. Jalur penembusan sepihak mungkin akan terus beroperasi

Arah optimasi

  1. Menyesuaikan parameter saluran agar lebih sesuai dengan karakteristik berbagai varietas
  2. Menyesuaikan parameter indeks tren untuk meningkatkan probabilitas trend
  3. Menambahkan elemen pembelajaran mesin untuk mengoptimalkan parameter dinamis

Meringkaskan

Strategi ini terutama bergantung pada karakteristik pasar yang bergolak untuk mendapatkan keuntungan. Dengan menangkap titik balik harga melalui saluran dinamis, dan digabungkan dengan penyaringan tren, dapat secara efektif memanfaatkan perdagangan yang berbalik untuk mendapatkan keuntungan, sementara mengendalikan risiko. Kunci dalam pengaturan dengan parameter, perlu agar saluran dapat melacak harga secara real-time, tetapi tidak terlalu sensitif.

Kode Sumber Strategi
/*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)