Strategi Dagangan Pelbagai Penapis Kecairan Adaptif Trend

EMA SMA MACD ATR HLC3
Tarikh penciptaan: 2025-01-06 11:58:25 Akhirnya diubah suai: 2025-01-06 11:58:25
Salin: 0 Bilangan klik: 617
1
fokus pada
1617
Pengikut

Strategi Dagangan Pelbagai Penapis Kecairan Adaptif Trend

Gambaran keseluruhan

Strategi ini ialah sistem penjejakan arah aliran adaptif berdasarkan penapisan penunjuk teknikal berbilang. Ia menggabungkan berbilang penunjuk teknikal seperti purata bergerak eksponen (EMA), purata bergerak mudah (SMA) dan perbezaan penumpuan purata bergerak (MACD), dan melaraskan parameter secara dinamik untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza untuk mencapai tangkapan arah aliran dan kawalan risiko yang cekap. Strategi ini menggunakan mekanisme penapisan berlapis dan meningkatkan kebolehpercayaan isyarat dagangan dengan ketara melalui kerjasama berbilang penunjuk teknikal yang diselaraskan.

Prinsip Strategi

Logik teras strategi adalah berdasarkan mekanisme penapisan tiga lapisan:

  1. Lapisan pengecaman arah aliran suai: Gunakan gabungan EMA pantas dan perlahan untuk mengira garis dasar arah aliran, dan laraskan garisan atas dan bawah secara dinamik berdasarkan turun naik pasaran.
  2. Penapis SMA: Gunakan purata pergerakan mudah untuk memastikan arah pergerakan harga konsisten dengan aliran keseluruhan.
  3. Lapisan pengesahan MACD: Gunakan fungsi pengesahan arah aliran penunjuk MACD untuk mengesahkan lagi kesahihan isyarat dagangan.

Penjanaan isyarat dagangan memerlukan pemenuhan semua syarat penapis: perubahan arah aliran, pengesahan arah SMA dan sokongan garis isyarat MACD. Strategi ini juga termasuk sistem pengurusan kedudukan dinamik berdasarkan ekuiti akaun, yang secara automatik melaraskan saiz kedudukan melalui faktor leverage.

Kelebihan Strategik

  1. Kebolehsuaian yang kuat: Dengan melaraskan parameter secara dinamik, strategi boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  2. Kawalan risiko yang sempurna: Mekanisme penapisan berbilang mengurangkan kebarangkalian isyarat palsu dengan ketara.
  3. Kebolehsesuaian tinggi: Pengguna boleh melaraskan pelbagai parameter mengikut gaya dagangan peribadi mereka.
  4. Tahap automasi yang tinggi: Menyokong mesej amaran dalam format JSON, menjadikannya mudah untuk berhubung dengan sistem perdagangan automatik.
  5. Kesan visualisasi yang baik: menyediakan maklum balas visual yang kaya, termasuk jalur aliran, penanda isyarat, dsb.

Risiko Strategik

  1. Ketergantungan Trend: Isyarat palsu yang kerap mungkin dihasilkan dalam pasaran yang tidak menentu.
  2. Risiko histerisis: Mekanisme penapisan berbilang boleh menyebabkan masa kemasukan tertunda.
  3. Kepekaan parameter: Kombinasi parameter yang berbeza boleh membawa kepada perbezaan besar dalam prestasi strategi.
  4. Risiko leverage: Leveraj yang berlebihan boleh membesarkan kerugian.

Arah pengoptimuman strategi

  1. Penyesuaian Kemeruapan: Menambah mekanisme stop loss dinamik berdasarkan ATR.
  2. Pengenalpastian persekitaran pasaran: Tambahkan sistem klasifikasi status pasaran dan gunakan kombinasi parameter yang berbeza dalam persekitaran pasaran yang berbeza.
  3. Pemarkahan kualiti isyarat: Wujudkan sistem pemarkahan kekuatan isyarat dan laraskan kedudukan secara dinamik berdasarkan kekuatan isyarat.
  4. Pengoptimuman pengurusan dana: Memperkenalkan algoritma pengurusan dana yang lebih kompleks untuk mencapai kawalan kedudukan yang lebih canggih.

ringkaskan

Strategi ini mencapai kesan penjejakan arah aliran yang lebih dipercayai melalui mekanisme penapisan berbilang lapisan dan pelarasan parameter dinamik. Walaupun terdapat risiko lag dan pergantungan parameter tertentu, prestasi yang stabil masih boleh dicapai dalam urus niaga sebenar melalui pengoptimuman parameter yang munasabah dan langkah kawalan risiko. Adalah disyorkan agar peniaga menjalankan pengesahan ujian balik sepenuhnya sebelum penggunaan masa nyata dan melaraskan tetapan parameter mengikut toleransi risiko peribadi mereka.

Kod sumber strategi
/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Adaptive Trend Flow Strategy with Filters for SPX", overlay=true, max_labels_count=500, 
     initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.01, slippage=2,
     margin_long=20, margin_short=20, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// User-defined inputs for trend logic
atr           = input.int(14, "Main Length", minval=2, group = "Find more strategies like this on pineindicators.com")
length        = input.int(2, "Main Length", minval=2)
smooth_len    = input.int(2, "Smoothing Length", minval=2)
sensitivity   = input.float(2.0, "Sensitivity", step=0.1)

// User-defined inputs for SMA filter
use_sma_filter = input.bool(true, "Enable SMA Filter?")
sma_length = input.int(4, "SMA Length", minval=1)

// User-defined inputs for MACD filter
use_macd_filter = input.bool(true, "Enable MACD Filter?")
macd_fast_length = input.int(2, "MACD Fast Length", minval=1)
macd_slow_length = input.int(7, "MACD Slow Length", minval=1)
macd_signal_length = input.int(2, "MACD Signal Length", minval=1)
// User-defined inputs for leverage
leverage_factor = input.float(4.5, "Leverage Factor", minval=1.0, step=0.1)
id           = input("besttrader123", title= "Your TradingView username", group = "Automate this strategy with plugpine.com")
key           = input("nc739ja84gf", title= "Unique identifier (UID)")
ticker        = input("SPX", title= "Ticker/symbol of your broker")
bullcolor     = #0097a7
bearcolor     = #ff195f
showbars      = input.bool(true, "Color Bars?")
showbg        = input.bool(true, "Background Color?")
showsignals   = input.bool(true, "Show Signals?")


// Trend calculation functions
calculate_trend_levels() =>
    typical = hlc3
    fast_ema = ta.ema(typical, length)
    slow_ema = ta.ema(typical, length * 2)
    basis = (fast_ema + slow_ema) / 2
    vol = ta.stdev(typical, length)
    smooth_vol = ta.ema(vol, smooth_len)
    upper = basis + (smooth_vol * sensitivity)
    lower = basis - (smooth_vol * sensitivity)
    [basis, upper, lower]

get_trend_state(upper, lower, basis) =>
    var float prev_level = na
    var int trend = 0
    if na(prev_level)
        trend := close > basis ? 1 : -1
        prev_level := trend == 1 ? lower : upper
    if trend == 1
        if close < lower
            trend := -1
            prev_level := upper
        else
            prev_level := lower
    else
        if close > upper
            trend := 1
            prev_level := lower
        else
            prev_level := upper
    [trend, prev_level]

[basis, upper, lower] = calculate_trend_levels()
[trend, level] = get_trend_state(upper, lower, basis)

// SMA filter
sma_value = ta.sma(close, sma_length)
sma_condition = use_sma_filter ? close > sma_value : true

// MACD filter
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
macd_condition = use_macd_filter ? macd_line > signal_line : true

// Signal detection with filters
long_signal = trend == 1 and trend[1] == -1 and sma_condition and macd_condition
short_signal = trend == -1 and trend[1] == 1

// Plotting visuals
p2 = plot(basis, color=trend == 1 ? bullcolor : bearcolor, linewidth=2)
p1 = plot(level, color=close > level ? bullcolor : bearcolor, linewidth=2, style=plot.style_linebr)
// if showsignals and ta.crossover(close, level)
//     label.new(bar_index, level, "▲", color=bullcolor, textcolor=chart.bg_color, style=label.style_label_upper_right)
// if showsignals and ta.crossunder(close, level)
//     label.new(bar_index, level, "▼", color=bearcolor, textcolor=chart.fg_color, style=label.style_label_lower_right)

qty = strategy.equity / close * leverage_factor

// Automated alerts
if long_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "long", "volume": ' + str.tostring(qty) + '}', alert.freq_once_per_bar)
if short_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "closelong"}', alert.freq_once_per_bar)

// Strategy entries and exits
if long_signal
    strategy.entry("Long", strategy.long, qty=qty)
if short_signal
    strategy.close("Long")

// Optional SMA and MACD plot
plot(use_sma_filter ? sma_value : na, color=color.new(color.blue, 80), title="SMA")
plot(use_macd_filter ? macd_line : na, color=color.new(color.orange, 80), title="MACD Line")
plot(use_macd_filter ? signal_line : na, color=color.new(color.red, 80), title="Signal Line")