Beberapa indikator melacak strategi perdagangan pita tren secara dinamis

EMA RSI ADX ATR TP SL
Tanggal Pembuatan: 2025-02-18 14:02:44 Akhirnya memodifikasi: 2025-02-18 14:02:44
menyalin: 2 Jumlah klik: 327
1
fokus pada
1617
Pengikut

Beberapa indikator melacak strategi perdagangan pita tren secara dinamis

Ini adalah strategi pelacakan tren yang didasarkan pada beberapa indikator teknis, yang memungkinkan perdagangan band dengan posisi yang disesuaikan secara dinamis. Strategi ini terutama menggunakan indeks moving average (EMA), indikator relative strength (RSI) dan trend direction index (ADX) untuk analisis tren pasar dan pembuatan sinyal perdagangan, sambil menggunakan amplitudo fluktuasi nyata (ATR) untuk menetapkan stop loss dan target keuntungan dinamis.

Tinjauan Strategi

Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan beberapa indikator teknis. Ini terutama menggunakan EMA untuk menentukan arah tren harga, RSI untuk menilai status pasar overbought dan oversold, ADX untuk memverifikasi kekuatan tren, dan akhirnya menggunakan ATR untuk secara dinamis menyesuaikan ukuran posisi dan parameter manajemen risiko. Strategi ini mendukung beberapa metode perhitungan posisi, termasuk berdasarkan persentase akun, jumlah modal tetap dan jumlah kontrak tetap, dll.

Prinsip Strategi

  1. Sinyal masuk: Ketika harga naik melalui EMA dan RSI> 50, dan ADX lebih besar dari seting threshold, menghasilkan sinyal melakukan lebih banyak; Ketika harga turun melalui EMA dan RSI< 50, dan ADX lebih besar dari seting threshold, menghasilkan sinyal melakukan lebih banyak.
  2. Manajemen posisi: Menghitung jumlah posisi yang dibuka berdasarkan metode yang dipilih pengguna, mendukung empat cara berdasarkan rasio risiko, rasio modal, jumlah modal tetap dan jumlah kontrak tetap.
  3. Pengendalian risiko: Menggunakan ATR untuk menghitung stop loss dan profit target secara dinamis, sekaligus untuk melacak perlindungan stop loss dari profit yang diperoleh.

Analisis Keunggulan

  1. Konfirmasi tren multi-dimensi: Konfirmasi tren melalui tiga indikator EMA, RSI dan ADX, meningkatkan keandalan sinyal perdagangan.
  2. Manajemen posisi yang fleksibel: Mendukung berbagai metode perhitungan posisi untuk memenuhi kebutuhan pedagang yang berbeda.
  3. Manajemen risiko dinamis: pengaturan target stop loss dan profit dinamis berdasarkan ATR, beradaptasi dengan perubahan volatilitas pasar.
  4. Mekanisme Trailing Stop: Mengamankan keuntungan yang diperoleh dan meningkatkan profitabilitas secara keseluruhan melalui trailing stop.

Analisis risiko

  1. Risiko keterlambatan: Indikator teknis memiliki keterlambatan tertentu, yang dapat menyebabkan keterlambatan waktu masuk.
  2. Risiko pasar yang bergoyang: Sering terjadi sinyal palsu dalam pasar yang bergoyang.
  3. Sensitivitas parameter: Pilihan parameter dari beberapa indikator dapat secara signifikan mempengaruhi kinerja strategi.
  4. Risiko Leverage: Dukungan terhadap Leverage yang tinggi dapat membawa risiko keuangan yang lebih besar.

Arah optimasi

  1. Adaptasi lingkungan pasar: dapat menambahkan mekanisme identifikasi lingkungan pasar, menyesuaikan parameter secara dinamis dalam kondisi pasar yang berbeda.
  2. Filter sinyal: memperkenalkan indikator tambahan seperti volume lalu lintas untuk meningkatkan kualitas sinyal.
  3. Optimalisasi penghentian: dapat dirancang mekanisme penghentian batch yang lebih fleksibel, meningkatkan profitabilitas.
  4. Peningkatan kontrol risiko: Meningkatkan mekanisme manajemen risiko seperti kontrol maksimum penarikan.

Meringkaskan

Ini adalah strategi pelacakan tren yang komprehensif menggunakan beberapa indikator teknis, yang memungkinkan perdagangan yang relatif stabil melalui pengakuan tren multi-dimensi dan mekanisme manajemen risiko yang disempurnakan. Keunggulan strategi ini adalah mekanisme pengakuan tren sistemik dan manajemen posisi yang fleksibel, tetapi juga perlu memperhatikan masalah seperti keterbelakangan indikator dan adaptasi lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2025-02-10 00:00:00
end: 2025-02-17 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Momentum Scalper", shorttitle="EMS", overlay=true, pyramiding=0)

// === ПАРАМЕТРЫ ===
posSizeMethod = input.string("Capital %", title="Метод расчета позиции", options=["% Based", "Capital %", "Fixed Capital Based", "Fixed Contract Size"])
riskPerTrade = input.float(3, title="Риск на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
capitalPctPerTrade = input.float(10, title="Доля капитала на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
fixedCapitalAmount = input.float(100, title="Фиксированная сумма капитала", minval=0)
fixedContractSize = input.int(10, title="Фиксированный размер контракта")
atrLength = input.int(14, title="Длина ATR")
atrMultiplierSL = input.float(2.5, title="ATR множитель для SL")
atrMultiplierTP = input.float(1.5, title="ATR множитель для TP")
timeoutBars = input.int(20, title="Выход через X баров, если нет TP/SL")
emaLength = input.int(50, title="Длина EMA")
rsiLength = input.int(14, title="Длина RSI")
rsiOverbought = input.int(70, title="RSI перекупленность")
rsiOversold = input.int(30, title="RSI перепроданность")
adxLength = input.int(14, title="Длина ADX")
adxThreshold = input.float(20, title="Порог ADX для тренда")
leverage = input.int(15, title="Плечо", minval=1, maxval=100)

// === ИНДИКАТОРЫ ===
atr = ta.atr(atrLength)
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)

// === ADX ===
diPlus = ta.rma(math.max(high - high[1], 0), adxLength)
diMinus = ta.rma(math.max(low[1] - low, 0), adxLength)
dx = 100 * math.abs(diPlus - diMinus) / (diPlus + diMinus)
adx = ta.rma(dx, adxLength)

// === УСЛОВИЯ ВХОДА ===
longEntry = ta.crossover(close, ema) and rsi > 50 and adx > adxThreshold
shortEntry = ta.crossunder(close, ema) and rsi < 50 and adx > adxThreshold

// === РАСЧЕТ РАЗМЕРА ПОЗИЦИИ ===
var float qty = na
riskAmount = strategy.equity * riskPerTrade
stopLossDistance = atr * atrMultiplierSL
positionSize = riskAmount / stopLossDistance

if (posSizeMethod == "% Based")
    qty := strategy.equity * riskPerTrade / (atr * atrMultiplierSL)
else if (posSizeMethod == "Capital %")
    qty := strategy.equity * capitalPctPerTrade / close
else if (posSizeMethod == "Fixed Capital Based")
    qty := fixedCapitalAmount / close
else if (posSizeMethod == "Fixed Contract Size")
    qty := fixedContractSize

qty := qty * leverage  // Умножаем на плечо

// === СТОП-ЛОСС И ТЕЙК-ПРОФИТ ===
entryPrice = close
stopLossLong = entryPrice - atrMultiplierSL * atr
stopLossShort = entryPrice + atrMultiplierSL * atr
takeProfit1 = entryPrice + atrMultiplierTP * atr * (longEntry ? 1 : -1)
takeProfit2 = entryPrice + atrMultiplierTP * atr * (longEntry ? 2 : -2) / 1.5

// === ТРЕЙЛИНГ-СТОП ===
trailStopDistance = atr * atrMultiplierSL

if (longEntry)
    strategy.entry("Long", strategy.long, qty=qty)
    strategy.exit("Exit Long", "Long", stop=stopLossLong, limit=takeProfit1, trail_points=trailStopDistance)
    alertMessage = syminfo.ticker + " LONG\n" +
                   "Leverage: Cross " + str.tostring(leverage) + "x\n" +
                   "➡️ Entry: " + str.tostring(entryPrice) + "\n" +
                   "🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
                   "🛑 Stop loss: " + str.tostring(stopLossLong)
    alert(alertMessage, alert.freq_once_per_bar_close)

if (shortEntry)
    strategy.entry("Short", strategy.short, qty=qty)
    strategy.exit("Exit Short", "Short", stop=stopLossShort, limit=takeProfit1, trail_points=trailStopDistance)
    alertMessage = syminfo.ticker + " SHORT\n" +
                   "Leverage: Cross " + str.tostring(leverage) + "x\n" +
                   "➡️ Entry: " + str.tostring(entryPrice) + "\n" +
                   "🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
                   "🛑 Stop loss: " + str.tostring(stopLossShort)
    alert(alertMessage, alert.freq_once_per_bar_close)

// === ВИЗУАЛИЗАЦИЯ ===
plotshape(longEntry, color=color.green, style=shape.labelup, location=location.belowbar, text="BUY")
plotshape(shortEntry, color=color.red, style=shape.labeldown, location=location.abovebar, text="SELL")
plot(ema, color=color.blue, title="EMA")
bgcolor(rsi > rsiOverbought or rsi < rsiOversold ? color.new(color.gray, 80) : na)