Strategi dagangan kuantitatif kuantitatif henti kerugian London dan New York penembusan dua sesi

ORB EMA SL TP RRR 交易会话 追踪止损 价格突破 风险管理
Tarikh penciptaan: 2025-04-27 11:32:24 Akhirnya diubah suai: 2025-04-27 11:32:24
Salin: 2 Bilangan klik: 334
2
fokus pada
319
Pengikut

Strategi dagangan kuantitatif kuantitatif henti kerugian London dan New York penembusan dua sesi Strategi dagangan kuantitatif kuantitatif henti kerugian London dan New York penembusan dua sesi

Gambaran keseluruhan

Strategi perdagangan kuantitatif penembusan berhenti-rugi yang dilacak dalam tempoh dua masa adalah sistem perdagangan terobosan yang berdasarkan pada jarak harga 15 minit sebelum pembukaan waktu perdagangan London dan New York. Strategi ini memasuki perdagangan dengan arah yang sesuai dengan menangkap pergerakan harga pada awal pembukaan kedua-dua pusat kewangan utama, ketika harga melampaui 15 minit pertama.

Prinsip Strategi

Mekanisme operasi strategi ini berkisar pada dua tempoh masa utama: pasaran terbuka di London (waktu 3:00-3:15 waktu New York) dan pasaran terbuka di New York (waktu 9:30-9:45 waktu New York). Proses kerja strategi adalah seperti berikut:

  1. Ia merakamkan harga tertinggi dan terendah dalam 15 minit pertama perdagangan di London dan New York, yang membentuk “bahagian harga”
  2. Apabila satu julat harga terbentuk, strategi memeriksa sama ada saiz julat memenuhi keperluan minimum (default 2 mata)
  3. Jika harga menembusi paras tertinggi dari arah bawah dan memenuhi syarat penapis EMA (jika diaktifkan), anda boleh mengambil lebih banyak kedudukan
  4. Jika harga menembusi titik rendah dari atas ke bawah dan memenuhi syarat penapisan EMA (jika diaktifkan), kedudukan kosong dibuka
  5. Hentikan set tinggi satu bahagian di luar sempadan julat harga yang bertentangan dengan arah penembusan
  6. Matlamat Stop-Loss Rate of Return to Risk (Default 2.0) kali ketinggian julat
  7. Pada masa yang sama, set tracking stop loss, 8 unit perubahan minimum secara lalai, dan sesuaikan dengan pergerakan harga ke arah yang menguntungkan

Logik utama strategi ini adalah untuk menangkap harga arah pecah pada awal tempoh perdagangan, yang biasanya menandakan kemungkinan trend yang akan datang. Dengan menggunakan mekanisme hentikan kerugian, strategi ini dapat memastikan perdagangan yang menguntungkan terus berjalan sambil melindungi keuntungan yang telah diperoleh.

Kelebihan Strategik

Setelah analisis mendalam, strategi ini mempunyai kelebihan berikut:

  1. Peluang Dagangan Dua Jadual WaktuDengan menumpukan perhatian pada pembukaan London dan New York pada masa yang sama, strategi ini dapat menangkap turun naik pada kedua-dua masa perdagangan utama, meningkatkan peluang perdagangan.
  2. Mekanisme Hentikan KerosakanBerbanding dengan stop loss tetap, stop loss yang dijejaki dapat melindungi keuntungan dan membolehkan perdagangan yang menguntungkan untuk terus berkembang, meningkatkan tahap keuntungan purata.
  3. Kawalan risiko yang sempurnaStrategi menggunakan seting stop loss yang dinamik berdasarkan kadar turun naik (ukuran julat), menjadikan pengurusan risiko lebih sesuai dengan keadaan pasaran.
  4. Kustomisasi: Pengguna boleh menyesuaikan nisbah ganjaran risiko, saiz julat minimum, mengesan mata berhenti dan sama ada penapis EMA digunakan, sesuai dengan pelbagai jenis perdagangan dan pilihan risiko peribadi.
  5. Penapis penunjuk teknikalSyarat penapisan EMA 5 minit yang boleh dipilih membantu mengelakkan dagangan berlawanan dan meningkatkan kualiti dagangan.
  6. Hadkan satu urus niaga dalam setiap tempoh masaTanda dagangan yang dibina dalam strategi memastikan bahawa hanya satu dagangan yang dilaksanakan pada setiap masa, mengelakkan kos dan risiko yang disebabkan oleh perdagangan yang kerap.

Risiko Strategik

Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:

  1. Risiko penembusan palsu: Harga mungkin akan turun kembali selepas pecah seketika di sempadan antara kawasan, menyebabkan berhenti kehilangan. Untuk menghadapi risiko ini, mekanisme pengesahan boleh dipertimbangkan, seperti meminta harga untuk bertahan untuk jangka masa tertentu atau mencapai tahap tertentu sebelum membuka kedudukan.
  2. Masalah pengurusan wangStrategi: Secara lalai menggunakan jumlah kontrak tetap untuk berdagang, mungkin tidak sesuai untuk semua saiz dana. Disarankan untuk menyesuaikan saiz kedudukan mengikut saiz akaun dan toleransi risiko.
  3. Risiko Pengoptimuman ParameterParameter yang dioptimumkan secara berlebihan boleh menyebabkan kecocokan kurva, yang tidak berfungsi dengan baik dalam keadaan pasaran masa depan. Perhatian harus diberikan kepada pengujian kestabilan parameter.
  4. Pergantungan persekitaran pasaranStrategi ini mungkin sering mencetuskan stop loss dalam pasaran yang bergolak dan tidak mempunyai trend yang jelas. Anda boleh mempertimbangkan untuk menambah syarat penapisan persekitaran pasaran.
  5. Masalah penyetempatan zon masa: Kod menggunakan zon waktu New York, pastikan ia disesuaikan dengan zon waktu platform perdagangan, jika tidak, ia boleh menyebabkan isyarat perdagangan salah letak.
  6. Kesan Hari RayaHari istimewa dagangan dan hari cuti boleh menjejaskan prestasi strategi, strategi tidak mengandungi logik penapisan cuti.

Arah pengoptimuman strategi

Berdasarkan analisis strategi, berikut adalah beberapa arah yang boleh dioptimumkan:

  1. Menambah mekanisme pengesahanIa boleh dipertimbangkan untuk menambah syarat pengesahan tambahan selepas harga pecah, seperti jumlah penembusan, harga berturut-turut beberapa K garis kekal dalam arah pecah, dan sebagainya, untuk mengurangkan kerugian yang disebabkan oleh pecah palsu.
  2. Pengurusan wang dinamik: Mengubah saiz kedudukan mengikut turun naik pasaran dan saiz akaun yang dinamik untuk mengoptimumkan nisbah pulangan risiko.
  3. Penapisan persekitaran pasaranMemperkenalkan penunjuk kadar turun naik atau penunjuk kekuatan trend, menghentikan perdagangan dalam keadaan pasaran yang tidak sesuai untuk strategi penembusan.
  4. Pengesahan pelbagai kitaran masaBerkenaan dengan arah trend dalam kitaran masa yang lebih lama, hanya berdagang di arah yang selaras dengan trend besar.
  5. Optimumkan masa permulaanAnda boleh mempertimbangkan untuk menggunakan harga kembali ke titik sokongan / rintangan yang penting, dan bukannya secara langsung masuk ke titik penembusan untuk mendapatkan harga kos yang lebih baik.
  6. Tambah waktu penapisanAnalisis prestasi sejarah pada hari dan tempoh dagangan yang berbeza, mengelakkan masa yang kurang baik.
  7. Analisis perkaitan pelbagai jenisPertimbangkan hubungan antara jenis dagangan yang berbeza, dan elakkan memegang beberapa kedudukan yang sangat berkaitan pada masa yang sama.

ringkaskan

Strategi perdagangan kuantitatif penembusan yang menjejaki hentian dua masa adalah sistem perdagangan yang direka untuk masa pembukaan dua pusat kewangan London dan New York. Dengan menangkap pergerakan dan arah harga pada awal pembukaan, digabungkan dengan mekanisme penembusan yang menjejaki, strategi ini dapat memaksimumkan potensi keuntungan sambil mengawal risiko. Walaupun terdapat risiko seperti penembusan palsu dan ketergantungan pada keadaan pasaran, tetapi dengan pengaturan parameter yang munasabah dan syarat penapisan tambahan, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.

Kod sumber strategi
/*backtest
start: 2024-04-27 00:00:00
end: 2025-04-25 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("ORB-LD-NY-Trail Strategy", overlay=true,
     default_qty_type=strategy.fixed, default_qty_value=1,
     calc_on_order_fills=true, calc_on_every_tick=true)

// =========================
// USER INPUTS
// =========================
riskReward      = input.float(2.0, "Risk-Reward Ratio", minval=1.0)
minBoxSize      = input.float(2.0, "Minimum Box Size (points)")
trailStopTicks  = input.int(8, "Trailing Stop (ticks)", minval=1)
useEmaFilter    = input.bool(false, "Use 5-min EMA Filter?")

tickSize        = syminfo.mintick         // auto-detect min tick for symbol
trailStopOffset = trailStopTicks * tickSize
emaSource       = request.security(syminfo.tickerid, "5", ta.ema(close, 200))  // 5-min chart EMA

// =========================
// SESSION TIMES
// =========================
londonStart = timestamp("America/New_York", year, month, dayofmonth, 3, 0)
londonEnd   = timestamp("America/New_York", year, month, dayofmonth, 3, 15)
nyStart     = timestamp("America/New_York", year, month, dayofmonth, 9, 30)
nyEnd       = timestamp("America/New_York", year, month, dayofmonth, 9, 45)

inLondon = time >= londonStart and time <= londonEnd
inNY     = time >= nyStart and time <= nyEnd

// =========================
// ONE TRADE PER SESSION FLAGS
// =========================
var bool londonTraded = false
var bool nyTraded     = false

// =========================
// LONDON BOX
// =========================
var float londonHigh    = na
var float londonLow     = na
var float londonBoxHigh = na
var float londonBoxLow  = na

if inLondon
    if na(londonHigh)
        londonBoxHigh := na
        londonBoxLow  := na
        londonTraded  := false
    londonHigh := na(londonHigh) ? high : math.max(londonHigh, high)
    londonLow  := na(londonLow)  ? low  : math.min(londonLow,  low)

if not inLondon and na(londonBoxHigh) and not na(londonHigh) and not na(londonLow)
    londonBoxHigh := londonHigh
    londonBoxLow  := londonLow
    londonHigh    := na
    londonLow     := na

if time > londonEnd and not na(londonBoxHigh) and not londonTraded
    boxRange = londonBoxHigh - londonBoxLow
    if boxRange >= minBoxSize
        // Standard SL/TP logic
        longSL  = londonBoxHigh - boxRange
        longTP  = londonBoxHigh + boxRange * riskReward
        shortSL = londonBoxLow  + boxRange
        shortTP = londonBoxLow  - boxRange * riskReward

        // === LONDON LONG ===
        condLong1 = close[1] <= londonBoxHigh
        condLong2 = close > londonBoxHigh
        condLong3 = (not useEmaFilter) or (close > emaSource)

        if condLong1 and condLong2 and condLong3
            strategy.entry("London Long", strategy.long)
            strategy.exit("Exit London Long", from_entry="London Long",
                          stop=longSL, limit=longTP,
                          trail_points=trailStopOffset)
            londonTraded := true

        // === LONDON SHORT ===
        condShort1 = close[1] >= londonBoxLow
        condShort2 = close < londonBoxLow
        condShort3 = (not useEmaFilter) or (close < emaSource)

        if not londonTraded and condShort1 and condShort2 and condShort3
            strategy.entry("London Short", strategy.short)
            strategy.exit("Exit London Short", from_entry="London Short",
                          stop=shortSL, limit=shortTP,
                          trail_points=trailStopOffset)
            londonTraded := true

// =========================
// NY BOX
// =========================
var float nyHigh    = na
var float nyLow     = na
var float nyBoxHigh = na
var float nyBoxLow  = na

if inNY
    if na(nyHigh)
        nyBoxHigh := na
        nyBoxLow  := na
        nyTraded  := false
    nyHigh := na(nyHigh) ? high : math.max(nyHigh, high)
    nyLow  := na(nyLow)  ? low  : math.min(nyLow,  low)

if not inNY and na(nyBoxHigh) and not na(nyHigh) and not na(nyLow)
    nyBoxHigh := nyHigh
    nyBoxLow  := nyLow
    nyHigh    := na
    nyLow     := na

if time > nyEnd and not na(nyBoxHigh) and not nyTraded
    boxRange = nyBoxHigh - nyBoxLow
    if boxRange >= minBoxSize
        longSL  = nyBoxHigh - boxRange
        longTP  = nyBoxHigh + boxRange * riskReward
        shortSL = nyBoxLow  + boxRange
        shortTP = nyBoxLow  - boxRange * riskReward

        // === NY LONG ===
        condNYLong1 = close[1] <= nyBoxHigh
        condNYLong2 = close > nyBoxHigh
        condNYLong3 = (not useEmaFilter) or (close > emaSource)

        if condNYLong1 and condNYLong2 and condNYLong3
            strategy.entry("NY Long", strategy.long)
            strategy.exit("Exit NY Long", from_entry="NY Long",
                          stop=longSL, limit=longTP,
                          trail_points=trailStopOffset)
            nyTraded := true

        // === NY SHORT ===
        condNYShort1 = close[1] >= nyBoxLow
        condNYShort2 = close < nyBoxLow
        condNYShort3 = (not useEmaFilter) or (close < emaSource)

        if not nyTraded and condNYShort1 and condNYShort2 and condNYShort3
            strategy.entry("NY Short", strategy.short)
            strategy.exit("Exit NY Short", from_entry="NY Short",
                          stop=shortSL, limit=shortTP,
                          trail_points=trailStopOffset)
            nyTraded := true

// Visual session background
bgcolor(inLondon ? color.new(color.fuchsia, 85) : na)
bgcolor(inNY     ? color.new(color.green,   85) : na)