Strategi Mengikuti Trend Persilangan Purata Pergerakan Berganda dan Sistem Pengurusan Risiko Lanjutan

SMA CROSSOVER TRAILING STOP LOSS risk management POSITION SIZING Risk-Reward Ratio TAKE PROFIT STOP LOSS
Tarikh penciptaan: 2025-06-12 13:18:26 Akhirnya diubah suai: 2025-06-12 13:18:26
Salin: 1 Bilangan klik: 302
2
fokus pada
319
Pengikut

Strategi Mengikuti Trend Persilangan Purata Pergerakan Berganda dan Sistem Pengurusan Risiko Lanjutan Strategi Mengikuti Trend Persilangan Purata Pergerakan Berganda dan Sistem Pengurusan Risiko Lanjutan

Gambaran Keseluruhan Strategi

Strategi pengesanan trend silang dua garis adalah sistem perdagangan kuantitatif yang menggabungkan analisis teknikal dengan pengurusan risiko menyeluruh. Inti strategi ini menggunakan isyarat silang sederhana bergerak cepat (Fast SMA) dan sederhana bergerak perlahan (Slow SMA) untuk mengenal pasti perubahan trend pasaran dan memastikan keselamatan dana melalui mekanisme kawalan risiko yang pelbagai. Strategi ini dilaksanakan di platform Pine Script dan sesuai untuk pelbagai jenis perdagangan.

Prinsip Strategi

Strategi ini membuat keputusan perdagangan berdasarkan interaksi antara dua purata bergerak mudah:

  1. Mekanisme penjanaan isyarat:

    • Melakukan banyak isyarat: apabila SMA pantas (simpul 24 kitaran) melalui SMA perlahan (simpul 48 kitaran)
    • Isyarat kosong: apabila SMA pantas di bawah SMA perlahan
    • Isyarat kedudukan rata: apabila isyarat silang sebaliknya muncul
  2. Pendahuluan masa: Strategi melaksanakan semua keputusan perdagangan pada penutupan K-line, mengelakkan bias pandangan ke hadapan, memastikan kebolehpercayaan dan kebenaran keputusan pengukuran semula.

  3. Sistem pengurusan wang:

    • Kawalan risiko setiap urus niaga: Secara lalai, hadkan risiko maksimum setiap urus niaga kepada 2.0% daripada jumlah dana akaun
    • Ukuran kedudukan dikira secara automatik: penyesuaian dinamik berdasarkan jarak stop loss dan jumlah risiko, memastikan tidak melebihi had risiko yang telah ditetapkan
  4. Kawalan risiko pelbagai peringkat:

    • Hentikan Kerugian Tetap: Tetapkan peratusan hentikan tetap segera setelah masuk (default 0.8%), had kerugian tunggal
    • Objektif keuntungan ((Take Profit): dikira secara automatik berdasarkan nisbah pulangan risiko ((default 2.0)), contohnya 0.8% stop loss dengan nisbah pulangan risiko 2.0 menghasilkan sasaran keuntungan 1.6%
    • Trailing Stop Loss (Loss Berhenti Berlalu):
      • Syarat pengaktifan: Pengaktifan bermula apabila keuntungan mencapai peratusan yang ditetapkan (default 1.0%)
      • Mekanisme pengesanan: Apabila diaktifkan, harga hentian akan mengesan harga tertinggi ((membuat lebih banyak) atau harga terendah ((membuat lebih sedikit), mengekalkan jarak yang ditetapkan ((0.5% secara lalai)
      • Keselamatan kewangan: Memastikan tracking stop loss tidak pernah di bawah tahap stop loss awal, membolehkan keuntungan terus berkembang sambil melindungi keselamatan kewangan

Strategi ini menangkap trend dengan merangkumi crossover linear dan menggunakan langkah-langkah pengurusan risiko yang komprehensif untuk memastikan keselamatan dan kelestarian perdagangan.

Kelebihan Strategik

  1. Mekanisme pengesanan trend yang kukuh:

    • Sistem penyambungan dua hala sebagai penunjuk trend klasik, dengan keberkesanan dan kestabilan yang disahkan secara sejarah
    • Dengan menyesuaikan kitaran rata-rata perlahan-lahan, ciri-ciri trend dapat disesuaikan dengan keadaan pasaran dan kitaran masa yang berbeza
  2. Pengurusan kewangan yang tepat:

    • Peruntukan risiko yang dinamik berdasarkan nilai bersih akaun, memastikan risiko setiap transaksi sentiasa berada dalam lingkungan yang terkawal
    • Saiz kedudukan disesuaikan secara automatik mengikut jarak henti yang sebenarnya, untuk mengelakkan masalah kelebihan leverage atau kedudukan yang terlalu kecil
    • Mekanisme pemeriksaan keselamatan sistem untuk mengelakkan kesilapan pengiraan dalam keadaan yang melampau
  3. Pelindungan risiko pelbagai peringkat:

    • Hentian tetap memberikan perlindungan asas dan mengehadkan kerugian maksimum
    • Menetapkan sasaran keuntungan berdasarkan nisbah risiko-kebalasan untuk memastikan keuntungan purata melebihi kerugian purata
    • Perlindungan Stop Loss Tracking Advanced telah mencapai keuntungan, tanpa menjejaskan potensi pendapatan yang berterusan
  4. Kawalan urutan pelaksanaan transaksi:

    • Menjalankan semua keputusan dagangan secara ketat berdasarkan harga penutupan K-Line untuk mengelakkan bias prospektif
    • gunaprocess_orders_on_close=trueParameter memastikan pemprosesan pesanan sesuai dengan persekitaran perdagangan sebenar
    • Logik perdagangan berdasarkan pengiraan isyarat pada baris K terdahulu, mengelakkan penggunaan data masa depan
  5. Sistem Tracking dan Stop Loss yang Adaptif:

    • Tracking Stop Loss hanya diaktifkan apabila dagangan mencapai tahap keuntungan yang ditetapkan, mengelakkan pemicu awal
    • Tahap stop loss menyesuaikan diri secara automatik dengan perubahan harga, mengunci sebahagian daripada keuntungan sambil membenarkan trend terus berkembang
    • mekanisme perlindungan terbina dalam memastikan penghentian yang dikesan tidak akan di bawah tahap penghentian awal, memberikan perlindungan risiko yang berterusan

Risiko Strategik

  1. Trend mengiktiraf ketinggalan:

    • Rata-rata bergerak pada dasarnya merupakan penunjuk yang ketinggalan zaman, yang mungkin tidak bertindak balas pada masa yang tepat pada titik perubahan trend
    • Tanda-tanda palsu yang boleh berlaku dalam pasaran yang bergolak, menyebabkan “kesan ketagihan” (Whipsaw)
    • Kaedah penanggulangan: penambahan syarat penapisan tambahan seperti penunjuk kadar turun naik atau pengesahan kekuatan trend boleh dipertimbangkan
  2. Masalah keserasian parameter tetap:

    • Tempoh SMA lalai ((24 dan 48) Kesan mungkin berbeza dalam pasaran dan tempoh masa yang berbeza
    • Tetapan peratusan tetap untuk sasaran stop loss dan profit mungkin tidak sesuai untuk semua keadaan kadar turun naik
    • Kaedah pelemahan: Mencadangkan untuk menyesuaikan parameter mengikut ciri-ciri dan kadar turun naik sejarah dalam jenis dagangan tertentu, atau memperkenalkan mekanisme parameter penyesuaian
  3. Mengesan masa pengaktifan stop-loss:

    • Tingkat keuntungan yang diaktifkan untuk mengesan kerugian berhenti (default 1.0%) ditetapkan terlalu tinggi yang boleh menyebabkan peluang kehilangan keuntungan
    • Tetapan yang terlalu rendah boleh mencetuskan terlalu awal dan mengehadkan potensi keuntungan
    • Kaedah pengurangan: Tetapkan parameter tracking stop loss mengikut purata true wavelength ((ATR) bagi varieti sasaran, untuk menjadikannya lebih adaptif
  4. Risiko pengurusan dana:

    • Untuk varieti yang mempunyai kadar turun naik yang sangat rendah, peratusan hentian tetap boleh menyebabkan kedudukan yang terlalu besar
    • Dalam keadaan pasaran yang melampau (seperti melompat atau melintas) mungkin tidak dapat dilaksanakan pada harga stop loss yang telah ditetapkan
    • Kaedah pelemahan: Pertimbangkan untuk menetapkan had kedudukan maksimum, atau menyesuaikan parameter risiko secara dinamik berdasarkan indikator kadar turun naik (seperti ATR)
  5. Kemudahan dan Ketidakmampuan:

    • Logik pilihan alternatif apabila peratusan henti ditetapkan kepada sifar atau negatif boleh menyebabkan risiko yang tidak dijangka
    • Tidak mengambil kira kos dagangan dan kesan slippage terhadap prestasi sebenar strategi
    • Pengurangan: Meningkatkan logik pengendalian kesilapan, menambah pemeriksaan keselamatan, dan memasukkan faktor kos transaksi dalam penilaian semula

Arah pengoptimuman strategi

  1. Optimasi mekanisme penjanaan isyarat:

    • Memperkenalkan kitaran rata-rata yang menyesuaikan diri: menyesuaikan kitaran rata-rata perlahan-lahan mengikut pergerakan kadar turun naik pasaran, meningkatkan kesesuaian dengan keadaan pasaran yang berbeza
    • Menambah penyokong pengesahan petunjuk: gabungan yang agak kuat ((RSI), penunjuk rawak ((Stochastic) atau MACD seperti petunjuk, penapis isyarat berkualiti rendah
    • Pertimbangkan analisis struktur harga: Mengintegrasikan sokongan, rintangan, pengenalan bentuk harga dan lain-lain untuk meningkatkan kualiti isyarat
  2. Peningkatan sistem pengurusan risiko:

    • Stop loss yang beradaptasi dengan kadar turun naik: jarak stop loss yang ditetapkan secara dinamik berdasarkan indikator kadar turun naik seperti ATR, dan bukannya peratusan tetap
    • Strategi Tracking Stop-Loss Segmented: Mencapai Tracking Stop-Loss Multi-Level, dengan jarak tracking yang semakin ketat apabila keuntungan meningkat
    • Kawalan penarikan maksimum: Meningkatkan mekanisme penyesuaian risiko berdasarkan peratusan penarikan maksimum akaun, secara automatik mengurangkan risiko dalam keadaan pasaran yang tidak menguntungkan
  3. Pengoptimuman kemasukan:

    • Penapisan kekuatan trend: isyarat perdagangan dilaksanakan hanya apabila kekuatan trend mencapai tahap tertentu
    • Penapisan tetingkap turun naik: menjalankan perdagangan dalam persekitaran turun naik yang sesuai, mengelakkan pasaran yang terlalu turun naik atau tidak turun naik
    • Harga Pelaksanaan Terbaik: Waktu dan paras harga masuk yang optimum selepas penjanaan isyarat kajian
  4. Kerangka Pemantauan dan Penilaian:

    • Keserasian pelbagai kitaran masa: mengesahkan konsistensi dan ketahanan strategi dalam pelbagai kitaran masa
    • Analisis sensitiviti: Uji keseluruhan kesan perubahan parameter terhadap prestasi strategi untuk mencari kombinasi parameter yang paling stabil
    • Simulasi Monte-Carlo: penilaian kebarangkalian dan ketahanan strategi melalui keputusan perdagangan secara rawak
  5. Peningkatan pencapaian teknologi:

    • Pengendalian kesilapan yang lebih baik: Peningkatan pengendalian keadaan pinggir untuk memastikan operasi strategi yang stabil dalam pelbagai keadaan pasaran
    • Peningkatan pemantauan parameter prestasi: penjejakan parameter prestasi utama dalam masa nyata, seperti nisbah Sharp, maksimum penarikan balik, dan sebagainya
    • Visualisasi status strategi: penambahbaikan antara muka grafik, menunjukkan status strategi, kedudukan dan tahap risiko secara langsung

ringkaskan

Strategi pengesanan tren silang dua garis adalah sistem perdagangan yang lengkap yang menggabungkan kaedah analisis teknikal klasik dengan konsep pengurusan risiko moden. Kelebihan utamanya adalah mekanisme pengenalan trend yang ringkas dan jelas dan sistem kawalan risiko bertingkat, terutamanya pengurusan dana yang teliti dan mekanisme penangguhan kerugian yang tinggi.

Walau bagaimanapun, strategi ini juga menghadapi cabaran seperti keterbelakangan dan penyesuaian parameter yang melekat pada purata bergerak. Prestasi strategi dijangka meningkat lagi dengan memperkenalkan parameter penyesuaian, meningkatkan mekanisme penapisan isyarat, dan menyempurnakan sistem pengurusan risiko.

Secara keseluruhannya, ini adalah kerangka strategi kuantitatif yang tersusun dengan baik dan logik yang jelas, sesuai untuk menjadi asas sistem trend pengesanan jangka menengah dan panjang, terutama untuk pasaran yang mempunyai ciri-ciri trend yang jelas. Bagi peniaga, memahami dan menguasai konsep pengurusan risiko mereka lebih penting daripada hanya menyalin parameter strategi, dan ini adalah bahagian yang paling berharga dari strategi.

Kod sumber strategi
/*backtest
start: 2025-06-04 00:00:00
end: 2025-06-11 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Dual SMA Crossover Strategy", overlay=true, calc_on_every_tick=false, process_orders_on_close=true)

// --- Inputs ---
// SMA Lengths
fast_length = input.int(24, title="Fast SMA Length", minval=1)
slow_length = input.int(48, title="Slow SMA Length", minval=1)

// Risk Management
risk_per_trade_percent = input.float(2.0, title="Risk Per Trade (%)", minval=0.1, maxval=10.0, step=0.1) // % of equity to risk per trade
stop_loss_percent = input.float(0.8, title="Stop Loss (%)", minval=0.1, step=0.1) // % from entry price
risk_reward_ratio = input.float(2.0, title="Risk-Reward Ratio", minval=0.5, step=0.1) // 2.0 = 2R, 3.0 = 3R etc.

// Advanced Trailing Stop Loss
trailing_start_percent = input.float(1.0, title="Trailing Stop Start (%)", minval=0.1, step=0.1) // % profit to activate TSL
trailing_stop_percent = input.float(0.5, title="Trailing Stop Trail (%)", minval=0.1, step=0.1) // % to trail by once activated

// --- Calculations ---
// Calculate SMAs
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Plot SMAs on chart
plot(fast_sma, color=color.blue, title="Fast SMA")
plot(slow_sma, color=color.red, title="Slow SMA")

// Crossover conditions (calculated on previous bar to prevent look-ahead bias)
long_condition = ta.crossover(fast_sma[1], slow_sma[1])
short_condition = ta.crossunder(fast_sma[1], slow_sma[1])

// --- Money Management and Position Sizing ---
// Calculate account equity and risk amount
account_equity = strategy.initial_capital + strategy.netprofit
risk_amount = account_equity * (risk_per_trade_percent / 100)

// Calculate Stop Loss price based on entry and SL percentage
var float long_stop_price = na
var float short_stop_price = na
var float long_take_profit_price = na
var float short_take_profit_price = na

// --- Trailing Stop Loss Variables ---
var float trailing_long_activated_price = na // Price at which TSL is activated for long
var float trailing_short_activated_price = na // Price at which TSL is activated for short
var float current_trailing_stop_long = na
var float current_trailing_stop_short = na
var bool  is_long_trailing_active = false
var bool  is_short_trailing_active = false

// --- Strategy Entry and Exit Orders ---
if long_condition
    // Reset TSL variables for a new entry
    trailing_long_activated_price := na
    current_trailing_stop_long := na
    is_long_trailing_active := false

    // Calculate SL, TP for long entry
    long_stop_price := close * (1 - stop_loss_percent / 100) // SL below entry
    long_take_profit_price := close * (1 + (stop_loss_percent * risk_reward_ratio) / 100) // TP above entry based on RRR

    // Calculate position size for long entry
    price_change_per_unit = close * (stop_loss_percent / 100)
    if price_change_per_unit > 0
        long_quantity = risk_amount / price_change_per_unit
        strategy.entry("Long", strategy.long, qty=long_quantity, comment="Buy Signal")
    else
        strategy.entry("Long", strategy.long, comment="Buy Signal (Risk calculation skipped)") // Fallback if SL is 0 or negative

if short_condition
    // Reset TSL variables for a new entry
    trailing_short_activated_price := na
    current_trailing_stop_short := na
    is_short_trailing_active := false

    // Calculate SL, TP for short entry
    short_stop_price := close * (1 + stop_loss_percent / 100) // SL above entry
    short_take_profit_price := close * (1 - (stop_loss_percent * risk_reward_ratio) / 100) // TP below entry based on RRR

    // Calculate position size for short entry
    price_change_per_unit = close * (stop_loss_percent / 100)
    if price_change_per_unit > 0
        short_quantity = risk_amount / price_change_per_unit
        strategy.entry("Short", strategy.short, qty=short_quantity, comment="Sell Signal")
    else
        strategy.entry("Short", strategy.short, comment="Sell Signal (Risk calculation skipped)") // Fallback if SL is 0 or negative

// --- Stop Loss, Take Profit, Trailing Stop Logic ---

// Long position management
if strategy.position_size > 0 // We are in a long position
    entry_price = strategy.opentrades.entry_price(0)
    current_profit_percent = ((close - entry_price) / entry_price) * 100

    // Initial SL and TP set at entry
    strategy.exit("Exit Long", from_entry="Long", stop=long_stop_price, limit=long_take_profit_price, comment="TP/SL Long")

    // Check for Trailing Stop activation
    if not is_long_trailing_active and current_profit_percent >= trailing_start_percent
        is_long_trailing_active := true
        // Set initial trailing stop when activated
        trailing_long_activated_price := high // Or close, depending on preference
        current_trailing_stop_long := high * (1 - trailing_stop_percent / 100)

    // If trailing stop is active, update it
    if is_long_trailing_active
        // Only move the trailing stop up (for long positions)
        potential_new_stop = high * (1 - trailing_stop_percent / 100)
        current_trailing_stop_long := math.max(current_trailing_stop_long, potential_new_stop)

        // Ensure trailing stop is not below the initial long_stop_price
        // This prevents the trailing stop from being less protective than the initial SL if the price drops after activation.
        current_trailing_stop_long := math.max(current_trailing_stop_long, long_stop_price)

        strategy.exit("Trailing Exit Long", from_entry="Long", stop=current_trailing_stop_long, comment="Trailing SL Long")

// Short position management
if strategy.position_size < 0 // We are in a short position
    entry_price = strategy.opentrades.entry_price(0)
    current_profit_percent = ((entry_price - close) / entry_price) * 100

    // Initial SL and TP set at entry
    strategy.exit("Exit Short", from_entry="Short", stop=short_stop_price, limit=short_take_profit_price, comment="TP/SL Short")

    // Check for Trailing Stop activation
    if not is_short_trailing_active and current_profit_percent >= trailing_start_percent
        is_short_trailing_active := true
        // Set initial trailing stop when activated
        trailing_short_activated_price := low // Or close, depending on preference
        current_trailing_stop_short := low * (1 + trailing_stop_percent / 100)

    // If trailing stop is active, update it
    if is_short_trailing_active
        // Only move the trailing stop down (for short positions)
        potential_new_stop = low * (1 + trailing_stop_percent / 100)
        current_trailing_stop_short := math.min(current_trailing_stop_short, potential_new_stop)

        // Ensure trailing stop is not above the initial short_stop_price
        current_trailing_stop_short := math.min(current_trailing_stop_short, short_stop_price)

        strategy.exit("Trailing Exit Short", from_entry="Short", stop=current_trailing_stop_short, comment="Trailing SL Short")

// Plot background color to indicate active position (optional)
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="Long Position Background")
bgcolor(strategy.position_size < 0 ? color.new(color.red, 90) : na, title="Short Position Background")