Strategi pilihan sintetik intraday berdasarkan sesi VWMA: sistem perdagangan adaptif untuk isyarat panjang dan pendek

VWMA ATM IST
Tarikh penciptaan: 2025-02-24 10:07:39 Akhirnya diubah suai: 2025-02-27 16:46:17
Salin: 0 Bilangan klik: 354
2
fokus pada
319
Pengikut

Strategi pilihan sintetik intraday berdasarkan sesi VWMA: sistem perdagangan adaptif untuk isyarat panjang dan pendek Strategi pilihan sintetik intraday berdasarkan sesi VWMA: sistem perdagangan adaptif untuk isyarat panjang dan pendek

Gambaran keseluruhan

Ini adalah strategi perdagangan dalam hari yang berdasarkan purata bergerak bertimbangan kuantiti bertukar (VWMA), yang membolehkan operasi dua hala yang banyak melalui portfolio pilihan gabungan. Inti strategi adalah indikator VWMA yang dikira semula setiap hari perdagangan, menghasilkan isyarat perdagangan berdasarkan kedudukan harga berbanding VWMA, dan secara automatik melonggarkan posisi sebelum penutupan.

Prinsip Strategi

Logik teras strategi adalah berdasarkan perkara berikut:

  1. Menggunakan VWMA yang disusun semula setiap hari sebagai penunjuk trend dinamik
  2. Apabila harga menembusi VWMA ke atas, bina portfolio bullish ((beli opsyen bullish + jual opsyen bearish)
  3. Apabila harga jatuh di bawah VWMA, bina portfolio penurunan harga ((beli opsyen penurunan harga + jual opsyen penurunan harga)
  4. Memaksa semua pemegang kedudukan kosong pada 15:29 (IST)
  5. Memperkenalkan pembolehubah hasExited untuk mengawal frekuensi penambahan saham dan mengelakkan perdagangan berlebihan
  6. Sokongan untuk penambahan simetri piramida semasa penembusan arah

Kelebihan Strategik

  1. Dinamis dan beradaptasi - VWMA menetapkan semula setiap hari untuk memastikan indikator sentiasa mencerminkan keadaan pasaran semasa
  2. Keseimbangan risiko dan ganjaran - Mengehadkan risiko dan mengekalkan potensi keuntungan melalui portfolio pilihan raya sintetik
  3. Disiplin dagangan yang ketat - mempunyai mekanisme kemasukan, kenaikan dan penurunan yang jelas
  4. position sizing fleksibel - menyokong pengurusan kedudukan peratusan
  5. Logik operasi jelas - keadaan penjanaan isyarat mudah dan intuitif

Risiko Strategik

  1. Risiko pasaran yang bergolak - Penembusan VWMA mungkin menghasilkan isyarat palsu yang kerap di pasaran setapak
  2. Risiko celah - turun naik yang besar boleh menyebabkan kerugian yang lebih besar
  3. Risiko Portfolio Pilihan - Pilihan Sintetik mempunyai bias neutral Delta
  4. Pelaksanaan slippage - perdagangan frekuensi tinggi mungkin menghadapi slippage yang lebih besar
  5. Keberkesanan modal - Penetapan setiap hari akan meningkatkan kos dagangan

Arah pengoptimuman strategi

  1. Memperkenalkan penapis kadar lonjakan untuk menyesuaikan parameter dasar dalam persekitaran kadar lonjakan tinggi
  2. Meningkatkan indikator pengesahan trend dan mengurangkan kerugian akibat penembusan palsu
  3. Mengoptimumkan struktur portfolio pilihan, seperti mempertimbangkan untuk memperkenalkan strategi perbezaan harga menegak
  4. Membuat kitaran VWMA yang menyesuaikan diri, menyesuaikan diri dengan keadaan pasaran yang dinamik
  5. Menambah lebih banyak penunjuk kawalan risiko, seperti had pengeluaran maksimum

ringkaskan

Ini adalah strategi perdagangan dalam hari yang tersusun dengan struktur dan logik yang ketat. Ia menangkap trend jangka pendek melalui petunjuk VWMA, berdagang dalam kombinasi dengan portfolio pilihan gabungan, dan mempunyai mekanisme kawalan risiko yang baik. Ruang pengoptimuman strategi adalah terutamanya untuk mengurangkan isyarat palsu, meningkatkan kecekapan pelaksanaan dan menyempurnakan sistem pengurusan risiko. Walaupun terdapat beberapa batasan, secara keseluruhan ia adalah sistem perdagangan yang bernilai dalam peperangan.

Kod sumber strategi
/*backtest
start: 2025-02-16 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Session VWMA Synthetic Options Strategy", overlay=true, initial_capital=100000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=10, calc_on_every_tick=true)

//──────────────────────────────
// Session VWMA Inputs
//──────────────────────────────
vwmaLen   = input.int(55, title="VWMA Length", inline="VWMA", group="Session VWMA")
vwmaColor = input.color(color.orange, title="VWMA Color", inline="VWMA", group="Session VWMA", tooltip="VWMA resets at the start of each session (at the opening of the day).")

//──────────────────────────────
// Session VWMA Calculation Function
//──────────────────────────────
day_vwma(_start, s, l) =>
    bs_nd = ta.barssince(_start)
    v_len = math.max(1, bs_nd < l ? bs_nd : l)
    ta.vwma(s, v_len)

//──────────────────────────────
// Determine Session Start
//──────────────────────────────
// newSession becomes true on the first bar of a new day.
newSession = ta.change(time("D")) != 0

//──────────────────────────────
// Compute Session VWMA
//──────────────────────────────
vwmaValue = day_vwma(newSession, close, vwmaLen)
plot(vwmaValue, color=vwmaColor, title="Session VWMA")

//──────────────────────────────
// Define Signal Conditions (only on transition)
//──────────────────────────────
bullCond = low > vwmaValue      // Bullish: candle low above VWMA
bearCond = high < vwmaValue     // Bearish: candle high below VWMA

// Trigger signal only on the bar where the condition first becomes true
bullSignal = bullCond and not bullCond[1]
bearSignal = bearCond and not bearCond[1]

//──────────────────────────────
// **Exit Condition at 15:29 IST**
//──────────────────────────────
sessionEnd = hour == 15 and minute == 29

// Exit all positions at 15:29 IST
if sessionEnd
    strategy.close_all(comment="Closing all positions at session end")

//──────────────────────────────
// **Trade Control Logic**
//──────────────────────────────
var bool hasExited = true  // Track if an exit has occurred since last entry

// Reset exit flag when a position is exited
if strategy.position_size == 0
    hasExited := true

//──────────────────────────────
// **Position Management: Entry & Exit**
//──────────────────────────────
if newSession
    hasExited := true  // Allow first trade of the day

// On a bullish signal: 
//   • If currently short, close the short position and then enter long
//   • Otherwise, add to any existing long position **only if an exit happened before**
if bullSignal and (hasExited or newSession)
    if strategy.position_size < 0
        strategy.close("Short", comment="Exit Short on Bull Signal")
        strategy.entry("Long", strategy.long, comment="Enter Long: Buy Call & Sell Put at ATM")
    else
        strategy.entry("Long", strategy.long, comment="Add Long: Buy Call & Sell Put at ATM")
    hasExited := false  // Reset exit flag

// On a bearish signal: 
//   • If currently long, close the long position and then enter short
//   • Otherwise, add to any existing short position **only if an exit happened before**
if bearSignal and (hasExited or newSession)
    if strategy.position_size > 0
        strategy.close("Long", comment="Exit Long on Bear Signal")
        strategy.entry("Short", strategy.short, comment="Enter Short: Buy Put & Sell Call at ATM")
    else
        strategy.entry("Short", strategy.short, comment="Add Short: Buy Put & Sell Call at ATM")
    hasExited := false  // Reset exit flag

//──────────────────────────────
// **Updated Alert Conditions**
//──────────────────────────────
// Alerts for valid trade entries
alertcondition(bullSignal and (hasExited or newSession), 
     title="Long Entry Alert", 
     message="Bullish signal: BUY CALL & SELL PUT at ATM. Entry allowed.")

alertcondition(bearSignal and (hasExited or newSession), 
     title="Short Entry Alert", 
     message="Bearish signal: BUY PUT & SELL CALL at ATM. Entry allowed.")