Trend Mengikut Strategi Berdasarkan DMI dan RSI

Penulis:ChaoZhang, Tarikh: 2024-01-25 15:56:41
Tag:

img

##Logik Strategi

  1. Gunakan penunjuk DMI untuk menilai arah trend
    • DMI terdiri daripada tiga garis: +DI menunjukkan trend menaik, -DI menunjukkan trend menurun, ADX menilai kekuatan trend
    • Apabila +DI>-DI, ia adalah aliran naik, pergi panjang; apabila -DI>+DI, ia adalah aliran turun, pergi pendek
  2. Gunakan penunjuk RSI untuk menilai overbought dan oversold
    • RSI di bawah 30 adalah oversold, di atas 70 adalah overbought
    • Apabila DMI menunjukkan trend menaik dan RSI oversold, masa yang baik untuk masa yang lama
    • Apabila DMI menunjukkan trend menurun dan RSI overbought, masa yang baik untuk pendek

##Analisis Kelebihan Ini adalah trend yang agak matang dan stabil mengikut strategi dengan kekuatan berikut:

  1. Menggabungkan trend dan overbought/oversold mengelakkan perdagangan kerap di pasaran terhad julat
  2. Indikator popular DMI dan RSI dengan penyesuaian parameter yang mudah dan pengesahan praktikal yang menyeluruh
  3. Mengikuti stop loss mengunci keuntungan dan mengelakkan stop loss dalam beberapa tahap
  4. Peraturan yang jelas dan mudah, mudah dilaksanakan

  1. DMI dan RSI boleh dengan mudah menjana isyarat palsu, menyebabkan kerugian yang tidak perlu
  2. Tetapan stop loss yang tidak betul boleh menghentikan kerugian terlalu awal atau terlalu banyak
  3. Trend berikut gagal keluar dengan segera apabila trend berbalik

## Arahan pengoptimuman Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah penapis turun naik untuk mengelakkan pasaran bergelombang
  2. Tetapkan stop loss yang betul berhampiran sokongan / rintangan utama untuk mengehadkan kerugian
  3. Meningkatkan model pembelajaran mesin untuk ramalan trend
  4. Pengoptimuman dinamik parameter DMI dan RSI


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YingYangJPN

//@version=5
strategy("DMI and RSI Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// DMI indikatörünü tanımlayalım
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(14, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
trailing_stop_loss_factor = input.float(0.50, "Trailing Stop Loss Factor", step = 0.01)

// RSI indikatörünü tanımlayalım
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiSource = input(close, title="RSI Source")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiValue = ta.rsi(rsiSource, rsiLength)

// Uzun pozisyon açma koşullarını tanımlayalım
longCondition1 = rsiValue < rsiOversold // RSI oversold seviyesinin altındaysa
longCondition2 = adx > 20 // ADX 20'den büyükse
longCondition3 = minus > plus

// Kısa pozisyon açma koşullarını tanımlayalım
shortCondition1 = rsiValue > rsiOverbought // RSI overbought seviyesinin üstündeyse
shortCondition2 = adx > 20 // ADX 20'den büyükse
shortCondition3 = plus > minus

// Uzun pozisyon açalım
if longCondition1 and longCondition2 and longCondition3
    strategy.entry("Long", strategy.long)
    

// Kısa pozisyon açalım
if shortCondition1 and shortCondition2 and shortCondition3
    strategy.entry("Short", strategy.short)
    
// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// DMI ve RSI indikatörlerini grafiğe çizelim
plot(adx, color=#F50057, title="ADX")
plot(plus, color=#2962FF, title="+DI")
plot(minus, color=#FF6D00, title="-DI")
plot(rsiValue, color=#9C27B0, title="RSI")
hline(rsiOverbought, title="RSI Overbought Level", color=#E91E63, linestyle=hline.style_dashed)
hline(rsiOversold, title="RSI Oversold Level", color=#4CAF50, linestyle=hline.style_dashed)



Lebih lanjut