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

img

##Logika Strategi

  1. Gunakan indikator DMI untuk menilai arah tren
    • Ketika +DI>-DI, itu adalah tren naik, pergi panjang; ketika -DI>+DI, itu adalah tren turun, pergi pendek
    • RSI membandingkan keuntungan dan kerugian rata-rata selama periode untuk menentukan overbought atau oversold
  2. Menggabungkan DMI untuk menentukan arah tren dan RSI untuk overbought/oversold dapat lebih menangkap ritme pasar
  3. Atur stop loss bergerak untuk mengunci keuntungan

  1. Menggabungkan tren dan overbought/oversold menghindari perdagangan yang sering di pasar range bound
  2. Indikator populer DMI dan RSI dengan pengaturan parameter yang mudah dan verifikasi praktis yang menyeluruh
  3. Trailing stop loss mengunci keuntungan dan menghindari stop loss sampai batas tertentu
  4. Aturan yang jelas dan mudah, mudah diterapkan

##Analisis Risiko Ada juga beberapa risiko yang perlu diperhatikan:

  1. DMI dan RSI dapat dengan mudah menghasilkan sinyal palsu, menyebabkan kerugian yang tidak perlu
  2. Pengaturan stop loss trailing yang tidak benar dapat menghentikan kerugian terlalu awal atau terlalu banyak
  3. Tidak dapat secara efektif menyaring pasar whipsaw, rentan untuk terjebak
  4. Tren mengikuti gagal keluar segera ketika tren berbalik

## Petunjuk Optimasi Strategi dapat dioptimalkan dalam aspek berikut:

  1. Tambahkan filter volatilitas untuk menghindari pasar bergolak
  2. Menggabungkan pola candlestick untuk menghindari false breakout
  3. Atur stop loss yang tepat di dekat support/resistance kunci untuk membatasi kerugian
  4. Meningkatkan model pembelajaran mesin untuk prediksi tren
  5. Optimasi dinamis dari 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 banyak