Aliran stokastik pelbagai jangka masa mengikut strategi dagangan

EMA ATR MTF ROI TP SL
Tarikh penciptaan: 2025-02-18 17:53:04 Akhirnya diubah suai: 2025-02-18 17:53:04
Salin: 1 Bilangan klik: 360
1
fokus pada
1617
Pengikut

Aliran stokastik pelbagai jangka masa mengikut strategi dagangan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking yang menggabungkan indikator acak multi-frame (Stochastic) dan purata bergerak indeks (EMA). Ia menilai keadaan overbought dan oversold melalui indikator acak berframe tinggi, sambil menggunakan EMA sebagai penapis trend, dan mengintegrasikan pengurusan kedudukan dinamik dan pengesanan berhenti-rugi, sebagai sistem strategi perdagangan yang lengkap.

Prinsip Strategi

Logik utama strategi ini adalah berdasarkan kepada beberapa elemen utama:

  1. Penggunaan tanda acak bingkai jam tinggi untuk mengenal pasti kawasan overbought dan oversold, untuk menentukan isyarat dagangan berpotensi melalui persilangan K-garis dengan tahap overbought dan oversold
  2. Menggunakan EMA sebagai penapis trend, hanya melakukan lebih apabila harga berada di atas EMA, melakukan kosong di bawah EMA
  3. Berasaskan ATR dinamik untuk mengira sasaran stop loss dan profit, jarak stop loss adalah 1.5 kali ATR dan profit adalah 2 kali sasaran stop loss
  4. Menggunakan kaedah perhitungan kedudukan dinamik berdasarkan peratusan risiko akaun untuk memastikan risiko setiap dagangan dikawal pada tahap yang ditetapkan
  5. Fungsi tracking stop loss pilihan, jarak tracking 1.5 kali ATR

Kelebihan Strategik

  1. Pengesahan pelbagai isyarat: menggabungkan penunjuk rawak bingkai jam tinggi dan penapis trend EMA untuk meningkatkan kebolehpercayaan isyarat
  2. Pengurusan risiko yang baik: Menggunakan kaedah pengurusan risiko peratusan untuk memastikan keselamatan dana
  3. Mekanisme Hentikan Kerosakan Fleksibel: Mendukung Hentikan Tetap dan Hentikan Tracking untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  4. Pemberitahuan perdagangan yang jelas: Sistem secara automatik menandai titik masuk, titik henti dan sasaran untuk memudahkan pelaksanaan perdagangan
  5. Pengurusan kedudukan dinamik: menyesuaikan skala perdagangan secara automatik mengikut turun naik, mengoptimumkan kecekapan penggunaan dana

Risiko Strategik

  1. Risiko perubahan trend: Isyarat palsu mungkin muncul dalam pasaran yang bergolak
  2. Risiko tergelincir: kemungkinan tergelincir lebih besar apabila pasaran kurang cair
  3. Sensitiviti parameter: prestasi strategi lebih sensitif kepada tetapan parameter yang memerlukan pengoptimuman yang berhati-hati
  4. Risiko penarikan balik: kemungkinan penarikan balik yang lebih besar apabila pasaran berubah-ubah
  5. Risiko pencetus stop loss: pencetus stop loss mungkin tercetus terlalu awal apabila turun naik meningkat

Arah pengoptimuman strategi

  1. Menambah penapis keadaan pasaran: penambahan indikator kadar turun naik atau kekuatan trend untuk menyesuaikan parameter strategi dalam keadaan pasaran yang berbeza
  2. Mekanisme pengesahan isyarat yang dioptimumkan: boleh dipertimbangkan untuk menambah pengesahan jumlah pesanan atau petunjuk teknikal lain sebagai penilaian tambahan
  3. Pengurusan kedudukan yang lebih baik: Peratusan risiko boleh disesuaikan berdasarkan pergerakan turun naik pasaran
  4. Peningkatan mekanisme penangguhan: jarak penangguhan boleh dikesan mengikut dinamika ciri pasaran
  5. Tambah penapis masa: mempertimbangkan sekatan dagangan untuk tempoh penting, mengelakkan risiko semasa berita penting

ringkaskan

Strategi ini menggunakan analisis pelbagai bingkai masa dan mekanisme pengesahan pelbagai isyarat, digabungkan dengan sistem pengurusan risiko yang baik, untuk membina sistem perdagangan yang lebih lengkap. Walaupun terdapat risiko tertentu, tetapi dengan pengoptimuman dan penambahbaikan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.

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