Algoritma gabungan dinamik strategi perdagangan trend Supertrend tempoh berbilang masa

ATR MTF EMA RSI
Tarikh penciptaan: 2025-01-06 16:38:12 Akhirnya diubah suai: 2025-01-06 16:38:12
Salin: 2 Bilangan klik: 482
1
fokus pada
1617
Pengikut

Algoritma gabungan dinamik strategi perdagangan trend Supertrend tempoh berbilang masa

Gambaran keseluruhan

Strategi ini ialah sistem mengikut aliran penyesuaian berdasarkan penunjuk Supertrend berbilang masa. Ia membina rangka kerja pengenalan arah aliran yang komprehensif dengan menyepadukan isyarat Supertrend daripada tiga tempoh masa berbeza: 15 minit, 5 minit dan 2 minit. Strategi ini menggunakan penapis masa untuk memastikan ia berjalan hanya semasa waktu dagangan paling aktif, dan secara automatik menutup kedudukan pada penghujung hari untuk mengelakkan risiko semalaman.

Prinsip Strategi

Teras strategi adalah untuk mengesahkan isyarat dagangan melalui konsistensi trend dalam beberapa tempoh masa. Secara khusus:

  1. Garis Supertrend dikira untuk setiap tempoh masa menggunakan tempoh ATR dan faktor pendaraban.
  2. Belian dicetuskan apabila isyarat kenaikkan muncul pada ketiga-tiga rangka masa (harga berada di atas garisan Supertrend).
  3. Jualan dicetuskan apabila harga jatuh di bawah garis Supertrend 5 minit atau mencapai penghujung hari dagangan.
  4. Kawal waktu dagangan dengan menetapkan zon waktu dan penapis sesi dagangan (lalai 09:30-15:30).

Kelebihan Strategik

  1. Pengesahan arah aliran berbilang dimensi meningkatkan kebolehpercayaan isyarat dan mengurangkan risiko penemuan palsu dengan berkesan.
  2. Tetapan parameter Adaptive Supertrend membolehkan strategi menyesuaikan diri dengan persekitaran turun naik pasaran yang berbeza.
  3. Mekanisme pengurusan masa yang ketat mengelakkan gangguan daripada tempoh dagangan yang tidak cekap.
  4. Antara muka visual yang jelas menunjukkan status aliran semua tempoh masa.
  5. Sistem pengurusan kedudukan fleksibel menyokong konfigurasi peratusan.

Risiko Strategik

  1. Dalam pasaran mendatar dan tidak menentu, terlalu banyak isyarat dagangan mungkin dijana, meningkatkan kos transaksi.
  2. Keadaan penapisan berbilang boleh mengakibatkan kehilangan beberapa peluang yang berpotensi menguntungkan.
  3. Bergantung pada pengoptimuman parameter, dan persekitaran pasaran yang berbeza mungkin memerlukan pelarasan parameter.
  4. Kerumitan pengiraan adalah tinggi dan mungkin terdapat masalah dengan kecekapan pelaksanaan program.

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penyesuaian turun naik untuk melaraskan parameter Supertrend secara dinamik mengikut keadaan pasaran.
  2. Tambah penunjuk pengesahan volum untuk meningkatkan ketepatan pertimbangan arah aliran.
  3. Membangunkan algoritma penapisan masa pintar untuk mengenal pasti waktu dagangan terbaik secara automatik.
  4. Optimumkan algoritma pengurusan kedudukan untuk mencapai kawalan risiko yang lebih canggih.
  5. Tambah modul klasifikasi persekitaran pasaran dan pakai strategi yang berbeza berdasarkan ciri pasaran yang berbeza.

ringkaskan

Strategi ini membina sistem perdagangan yang teguh melalui analisis trend tempoh berbilang masa dan sistem kawalan risiko yang ketat. Walaupun terdapat sedikit ruang untuk pengoptimuman, logik terasnya adalah kukuh dan sesuai untuk pembangunan selanjutnya dan aplikasi dunia sebenar. Reka bentuk modular sistem juga menyediakan asas yang baik untuk pengembangan masa hadapan.

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