Strategi mengikut aliran berdasarkan sokongan dinamik dan jalur rintangan


Tarikh penciptaan: 2023-12-26 11:57:20 Akhirnya diubah suai: 2023-12-26 11:57:20
Salin: 1 Bilangan klik: 496
1
fokus pada
1623
Pengikut

Strategi mengikut aliran berdasarkan sokongan dinamik dan jalur rintangan

Gambaran keseluruhan

Strategi ini membentuk sumbu tengah yang dinamik dengan mengira harga tertinggi dan terendah dalam tempoh masa tertentu, digabungkan dengan harga semasa. Kemudian menghasilkan saluran turun merah dan saluran naik hijau berdasarkan turun naik terkini. Ketiga saluran ini membentuk ruang yang boleh diperdagangkan. Apabila harga mendekati sempadan saluran, lakukan operasi terbalik, dengan tujuan untuk mendapatkan keuntungan kembali pada sumbu tengah.

Prinsip Strategi

  1. Hitung harga tertinggi dan terendah dalam tempoh N kitaran terakhir, digabungkan dengan harga penutupan semasa untuk membentuk aksen tengah dinamik
  2. Bandwidth berubah mengikut turun naik pasaran berdasarkan ATR dan pengalian yang dihasilkan oleh jalur dinamik
  3. Buat lebih banyak apabila harga melonjak dari saluran bawah, buat lebih sedikit apabila harga melonjak dari saluran atas
  4. Dengan logik stop dan stop loss, matlamat untuk kembali ke arah aksen tengah berhenti
  5. Menghitung indeks trend untuk penapisan dagangan yang tidak menjurus

Analisis kelebihan

  1. Perubahan dinamik kedudukan saluran, menangkap turun naik pasaran dalam masa nyata
  2. Kemungkinan perdagangan berturut-turut lebih besar, membantu untuk memahami trend
  3. Hentikan kerugian logik kawalan kerugian tunggal

Analisis risiko

  1. Pengoptimuman parameter yang tidak betul boleh menyebabkan perdagangan berlebihan
  2. Tidak boleh menghapuskan dagangan negatif sepenuhnya di bawah trend besar
  3. Satu laluan yang boleh terus beroperasi

Arah pengoptimuman

  1. Menyesuaikan parameter saluran agar lebih sesuai dengan ciri-ciri pelbagai jenis
  2. Menyesuaikan parameter indeks trend untuk meningkatkan kebarangkalian trend
  3. Menambah elemen pembelajaran mesin untuk mengoptimumkan parameter dinamik

ringkaskan

Strategi ini bergantung terutamanya pada ciri-ciri goyah pasaran untuk mendapatkan keuntungan. Dengan menangkap titik-titik harga yang berbalik melalui saluran dinamik, dan digabungkan dengan penapisan trend, anda dapat memanfaatkan perdagangan yang berbalik dengan berkesan, sambil mengawal risiko. Kunci adalah penyesuaian dengan parameter, yang memerlukan saluran saluran untuk mengesan harga secara langsung, tetapi tidak terlalu sensitif.

Kod 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)