Sumber dimuat naik... memuat...

Algoritma Perdagangan Trend Dinamik Supertrend Multi-Timeframe

Penulis:ChaoZhang, Tarikh: 2025-01-06 16:38:12
Tag:ATRMTFEMARSI

img

Ringkasan

Strategi ini adalah sistem trend berikut adaptif berdasarkan penunjuk Multi-Timeframe Supertrend. Ia mengintegrasikan isyarat Supertrend dari jangka masa 15 minit, 5 minit, dan 2 minit untuk membina rangka kerja pengenalan trend yang komprehensif. Strategi ini menggunakan penapis masa untuk memastikan operasi hanya semasa sesi dagangan yang paling aktif dan secara automatik menutup kedudukan pada akhir hari untuk mengelakkan risiko semalaman.

Prinsip Strategi

Mekanisme teras bergantung pada konsistensi trend dalam pelbagai jangka masa untuk mengesahkan isyarat perdagangan.

  1. Mengira garis Supertrend menggunakan tempoh ATR dan faktor pengganda untuk setiap jangka masa.
  2. Pemicu membeli isyarat apabila keadaan menaik sejajar di ketiga-tiga bingkai masa (harga di atas garis Supertrend).
  3. Permulaan menjual isyarat apabila harga pecah di bawah garis Supertrend 5 minit atau mencapai akhir hari dagangan.
  4. Mengendalikan waktu dagangan melalui tetapan zon waktu dan penapis sesi (default 09:30-15:30).

Kelebihan Strategi

  1. Pengesahan trend pelbagai dimensi meningkatkan kebolehpercayaan isyarat dan mengurangkan risiko pecah palsu.
  2. Parameter Supertrend adaptif membolehkan penyesuaian strategi kepada persekitaran turun naik pasaran yang berbeza.
  3. Mekanisme pengurusan masa yang ketat menghapuskan gangguan dari tempoh perdagangan yang tidak cekap.
  4. Antara muka visualisasi yang jelas memaparkan status trend di semua jangka masa.
  5. Sistem pengurusan kedudukan yang fleksibel menyokong konfigurasi berasaskan peratusan.

Risiko Strategi

  1. Boleh menghasilkan isyarat perdagangan yang berlebihan di pasaran yang berbeza, meningkatkan kos transaksi.
  2. Keadaan penapisan berbilang mungkin menyebabkan peluang menguntungkan yang hilang.
  3. Kebergantungan pengoptimuman parameter memerlukan penyesuaian untuk persekitaran pasaran yang berbeza.
  4. Kerumitan pengkomputeran yang tinggi boleh membawa kepada masalah kecekapan pelaksanaan.

Arahan pengoptimuman

  1. Memperkenalkan mekanisme penyesuaian turun naik untuk menyesuaikan parameter Supertrend secara dinamik.
  2. Tambah penunjuk pengesahan jumlah untuk meningkatkan ketepatan penilaian trend.
  3. Membangunkan algoritma penapisan masa pintar untuk mengenal pasti sesi dagangan yang optimum secara automatik.
  4. Mengoptimumkan algoritma pengurusan kedudukan untuk kawalan risiko yang lebih tepat.
  5. Tambah modul klasifikasi persekitaran pasaran untuk melaksanakan strategi yang berbeza untuk pelbagai ciri pasaran.

Ringkasan

Strategi ini membina sistem perdagangan yang kukuh melalui analisis trend pelbagai jangka masa dan mekanisme kawalan risiko yang ketat. Walaupun terdapat ruang untuk pengoptimuman, logik terasnya kukuh dan sesuai untuk pembangunan lanjut dan aplikasi perdagangan langsung. Reka bentuk modular juga memberikan asas yang kukuh untuk lanjutan masa depan.


/*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.")


Berkaitan

Lebih lanjut