Algoritma kombinasi dinamis dari strategi perdagangan tren Supertrend multi-periode waktu

ATR MTF EMA RSI
Tanggal Pembuatan: 2025-01-06 16:38:12 Akhirnya memodifikasi: 2025-01-06 16:38:12
menyalin: 2 Jumlah klik: 482
1
fokus pada
1617
Pengikut

Algoritma kombinasi dinamis dari strategi perdagangan tren Supertrend multi-periode waktu

Ringkasan

Strategi ini adalah sistem pelacakan tren adaptif yang didasarkan pada indikator Supertrend multi-kerangka waktu. Ia membangun kerangka kerja identifikasi tren yang komprehensif dengan mengintegrasikan sinyal Supertrend dari tiga periode waktu yang berbeda: 15 menit, 5 menit, dan 2 menit. Strategi ini menggunakan filter waktu untuk memastikan strategi hanya berjalan selama jam perdagangan paling aktif, dan secara otomatis menutup posisi di akhir hari untuk menghindari risiko semalam.

Prinsip Strategi

Inti dari strategi ini adalah mengonfirmasi sinyal perdagangan melalui konsistensi tren dalam berbagai periode waktu. Secara khusus:

  1. Garis Supertrend dihitung untuk setiap periode waktu menggunakan periode ATR dan faktor perkalian.
  2. Pembelian dipicu ketika sinyal bullish muncul di ketiga kerangka waktu (harga berada di atas garis Supertrend).
  3. Penjualan dipicu ketika harga turun di bawah garis Supertrend 5 menit atau mencapai akhir hari perdagangan.
  4. Kontrol jam perdagangan dengan mengatur zona waktu dan filter sesi perdagangan (default 09:30-15:30).

Keunggulan Strategis

  1. Konfirmasi tren multidimensi meningkatkan keandalan sinyal dan secara efektif mengurangi risiko terobosan palsu.
  2. Pengaturan parameter Supertrend Adaptif memungkinkan strategi untuk beradaptasi dengan lingkungan volatilitas pasar yang berbeda.
  3. Mekanisme manajemen waktu yang ketat menghindari gangguan dari periode perdagangan yang tidak efisien.
  4. Antarmuka visual yang jelas menunjukkan status tren semua periode waktu.
  5. Sistem manajemen posisi yang fleksibel mendukung konfigurasi persentase.

Risiko Strategis

  1. Dalam pasar yang bergerak menyamping dan bergejolak, terlalu banyak sinyal perdagangan dapat dihasilkan, sehingga meningkatkan biaya transaksi.
  2. Beberapa kondisi penyaringan dapat mengakibatkan hilangnya beberapa peluang yang berpotensi menguntungkan.
  3. Tergantung pada optimasi parameter, dan lingkungan pasar yang berbeda mungkin memerlukan penyesuaian parameter.
  4. Kompleksitas komputasinya tinggi dan mungkin ada masalah dengan efisiensi eksekusi program.

Arah optimasi strategi

  1. Memperkenalkan mekanisme adaptif volatilitas untuk menyesuaikan parameter Supertrend secara dinamis menurut kondisi pasar.
  2. Tambahkan indikator konfirmasi volume untuk meningkatkan akurasi penilaian tren.
  3. Mengembangkan algoritma penyaringan waktu cerdas untuk secara otomatis mengidentifikasi jam perdagangan terbaik.
  4. Optimalkan algoritma manajemen posisi untuk mencapai pengendalian risiko yang lebih canggih.
  5. Tambahkan modul klasifikasi lingkungan pasar dan terapkan strategi yang dibedakan berdasarkan karakteristik pasar yang berbeda.

Meringkaskan

Strategi ini membangun sistem perdagangan yang kuat melalui analisis tren multi-periode waktu dan sistem pengendalian risiko yang ketat. Meski masih ada ruang untuk pengoptimalan, logika intinya solid dan cocok untuk pengembangan lebih lanjut dan penerapan di dunia nyata. Desain modular sistem ini juga menyediakan fondasi yang baik untuk perluasan di masa mendatang.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")