Strategi perdagangan mengikuti tren stokastik multi-kerangka waktu

EMA ATR MTF ROI TP SL
Tanggal Pembuatan: 2025-02-18 17:53:04 Akhirnya memodifikasi: 2025-02-18 17:53:04
menyalin: 1 Jumlah klik: 360
1
fokus pada
1617
Pengikut

Strategi perdagangan mengikuti tren stokastik multi-kerangka waktu

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan indikator acak multi-frame (Stochastic) dan indeks bergerak rata-rata (EMA). Ini menilai kondisi overbought dan oversold melalui indikator acak berframe tinggi, sekaligus menggunakan EMA sebagai filter tren, dan mengintegrasikan manajemen posisi dinamis dan pelacakan stop loss, sebagai sistem strategi perdagangan yang lengkap.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada beberapa elemen kunci:

  1. Indikator acak yang digunakan untuk mengidentifikasi zona overbought dan oversold dengan menggunakan frame waktu tinggi untuk menentukan sinyal perdagangan potensial melalui persilangan garis K dengan tingkat overbought dan oversold
  2. Menggunakan EMA sebagai filter tren, hanya melakukan over jika harga berada di atas EMA, melakukan over jika berada di bawah EMA
  3. Stop loss dan profit target berdasarkan ATR dinamis, stop loss jaraknya 1,5 kali ATR, profit target 2 kali stop loss
  4. Menggunakan metode perhitungan posisi dinamis berdasarkan persentase risiko akun, memastikan bahwa risiko setiap transaksi dikendalikan pada tingkat default
  5. Opsional Tracking Stop Loss, Tracking Distance 1,5 kali ATR

Keunggulan Strategis

  1. Multi-Signal Confirmation: Kombinasi dengan High Frame Random Indicator dan EMA Trend Filter untuk meningkatkan reliabilitas sinyal
  2. Manajemen Risiko yang Baik: Menggunakan Metode Manajemen Risiko Persentase untuk Menjamin Keamanan Dana
  3. Fleksibel Stop Loss: Mendukung Stop Loss tetap dan Tracking Stop Loss untuk beradaptasi dengan kondisi pasar yang berbeda
  4. Pengingat perdagangan yang jelas: sistem secara otomatis menandai titik masuk, titik berhenti dan titik target untuk memudahkan eksekusi perdagangan
  5. Manajemen Posisi Dinamis: Otomatis menyesuaikan skala perdagangan berdasarkan volatilitas, mengoptimalkan efisiensi penggunaan dana

Risiko Strategis

  1. Risiko Trend Reversal: Mungkin Ada Sinyal Palsu di Pasar yang Bergolak
  2. Risiko slippage: kemungkinan slippage yang lebih besar jika kurangnya likuiditas di pasar
  3. Sensitivitas parameter: kinerja kebijakan sangat sensitif terhadap pengaturan parameter, yang memerlukan pengoptimalan yang hati-hati
  4. Risiko penarikan balik: kemungkinan penarikan balik yang lebih besar jika pasar bergejolak
  5. Stop loss triggering risk: Tracking stop loss yang mungkin terlalu cepat dipicu ketika volatilitas meningkat

Arah optimasi strategi

  1. Menambahkan filter kondisi pasar: Anda dapat menambahkan indikator volatilitas atau indikator kekuatan tren untuk menyesuaikan parameter strategi dalam kondisi pasar yang berbeda
  2. Mekanisme pengesahan sinyal yang dioptimalkan: penambahan pengesahan volume transaksi atau indikator teknis lainnya dapat dipertimbangkan sebagai penilaian tambahan
  3. Pengelolaan posisi yang lebih baik: persentase risiko yang dapat disesuaikan berdasarkan dinamika volatilitas pasar
  4. Peningkatan mekanisme stop loss: jarak stop loss dapat dilacak berdasarkan dinamika karakteristik pasar
  5. Tambahkan filter waktu: pertimbangkan pembatasan transaksi pada periode waktu penting, dan hindari risiko pada saat berita penting.

Meringkaskan

Strategi ini menggunakan analisis multi-frame dan mekanisme konfirmasi sinyal ganda, yang dikombinasikan dengan sistem manajemen risiko yang baik, untuk membangun sistem perdagangan yang lebih lengkap. Meskipun ada risiko tertentu, tetapi dengan optimasi dan perbaikan terus-menerus, strategi ini diharapkan untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultimate fairas Oil", overlay=true)

// === Input Parameter ===
k_period = input(14, "K Period")
d_period = input(3, "D Period")
smooth_k = input(3, "Smooth K")
overbought = input(80, "Overbought Level")
oversold = input(20, "Oversold Level")
atrMult = input(1.5, "ATR Multiplier")
use_trailing_stop = input(true, "Enable Trailing Stop")
ema_length = input(50, "EMA Length")
risk_percent = input(2, "Risk per Trade (%)") / 100
account_balance = input(50000, "Account Balance")
mtf_tf = input.timeframe("D", "Higher Timeframe for Stochastic")

// === Multi-Timeframe Stochastic ===
stoch_source = request.security(syminfo.tickerid, mtf_tf, ta.stoch(close, high, low, k_period))
k = ta.sma(stoch_source, smooth_k)

// === Trend Filter (EMA) ===
ema = ta.ema(close, ema_length)
trendUp = close > ema
trendDown = close < ema

// === Entry Conditions ===
longCondition = ta.crossover(k, oversold) and trendUp
shortCondition = ta.crossunder(k, overbought) and trendDown

// === ATR-Based Stop Loss & Take Profit ===
atrValue = ta.atr(14)
stopLoss = atrMult * atrValue
takeProfit = 2 * stopLoss

// === Dynamic Lot Sizing (Risk Management) ===
risk_amount = account_balance * risk_percent
position_size = risk_amount / stopLoss

// === Trailing Stop Calculation ===
trailOffset = atrValue * 1.5
trailStopLong = use_trailing_stop ? close - trailOffset : na
trailStopShort = use_trailing_stop ? close + trailOffset : na

// === Execute Trades ===
if longCondition
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
    // label.new(x=bar_index, y=close + takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close - stopLoss, text="SL ❌", color=color.red, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close + takeProfit, x2=bar_index + 5, y2=close + takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close - stopLoss, x2=bar_index + 5, y2=close - stopLoss, width=2, color=color.red)

    // Alert
    alert("BUY Signal! TP: " + str.tostring(close + takeProfit) + ", SL: " + str.tostring(close - stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)

if shortCondition
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
    // label.new(x=bar_index, y=close - takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close + stopLoss, text="SL ❌", color=color.green, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close - takeProfit, x2=bar_index + 5, y2=close - takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close + stopLoss, x2=bar_index + 5, y2=close + stopLoss, width=2, color=color.green)

    // Alert
    alert("SELL Signal! TP: " + str.tostring(close - takeProfit) + ", SL: " + str.tostring(close + stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)