Penjejakan Semula Termaju Pecahan Segi Tiga dengan Strategi Pengesahan Harga Volum

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
Tarikh penciptaan: 2025-06-03 09:57:46 Akhirnya diubah suai: 2025-06-03 09:57:46
Salin: 0 Bilangan klik: 314
2
fokus pada
319
Pengikut

Penjejakan Semula Termaju Pecahan Segi Tiga dengan Strategi Pengesahan Harga Volum Penjejakan Semula Termaju Pecahan Segi Tiga dengan Strategi Pengesahan Harga Volum

Gambaran keseluruhan

Strategi penembusan segitiga penarikan tinggi dengan pengesahan kuantiti adalah kaedah perdagangan kuantitatif yang menggabungkan pengenalan bentuk teknikal, pengesahan jumlah perdagangan dan pengurusan risiko dinamik. Strategi ini khusus untuk pengoptimuman carta 1 jam, menyediakan dua tetapan masuk yang berasingan, berdasarkan prinsip penembusan segitiga dan pengesahan kuantiti.

Prinsip Strategi

Strategi ini beroperasi berdasarkan dua tetapan kemasukan utama dan mekanisme keluar yang dirancang dengan baik:

Tetapan masuk 1 - Penembusan segitiga emas

  • Menggunakan sumbu titik tertinggi dan terendah yang terdekat untuk mengesan bentuk segi tiga
  • Apabila harga ditutup di atas puncak segitiga dan pada masa yang sama di atas 50 kitaran SMA, mengesahkan penembusan bullish
  • Memasuki permainan selepas penutupan.
  • Tetapan ini sangat sesuai untuk menangkap perdagangan momentum awal selepas tempoh penyatuan

Tetapan Masuk 2 - Pengesahan harga dan jumlah transaksi

  • Jumlah dagangan yang meningkat berdasarkan pengembalian nilai purata:
    • Harga mula jatuh ke bawah 50 SMA, kemudian ditutup kembali ke atasnya
    • Keperluan untuk mempunyai sekurang-kurangnya satu “hari penutupan” (harga penutupan semasa lebih tinggi daripada harga penutupan sebelumnya)
    • Jumlah dagangan mestilah lebih tinggi daripada 50 kitaran SMA dan lebih tinggi daripada setiap hari dalam tempoh 4 hari sebelumnya
  • Masuk pada hari penutupan pengesahan dagangan
  • Terutama berkesan apabila model segitiga tidak jelas tetapi kuat

Strategi Keluar - Tracking Stop Loss Dinamik

  • Stop loss awal ditetapkan sebagai 10% di bawah harga tertinggi yang dicapai selepas masuk
  • Apabila keuntungan mencapai 10%, tracking stop loss berketat kepada 5%
  • Mekanisme ini membolehkan peniaga untuk terus memegang trend sambil mengekalkan keuntungan

Pada pelaksanaan kod, strategi menggunakan pengiktirafan bentuk segitiga titik-titik teras yang disederhanakan dan mengkonfirmasi pergerakan harga dengan membandingkan harga semasa dengan SMA. Untuk pengiktirafan jumlah transaksi, strategi memeriksa sama ada jumlah transaksi lebih tinggi daripada purata bergerak dan jumlah transaksi dalam beberapa kitaran sebelumnya.

Kelebihan Strategik

  1. Mekanisme kemasukan bergandaDengan menyediakan dua seting masuk yang berasingan, strategi dapat menyesuaikan diri dengan keadaan pasaran yang berbeza, meningkatkan kemungkinan untuk menangkap peluang perdagangan yang menguntungkan. Seting 1 dapat menangkap terobosan apabila pasaran berada dalam tempoh penyatuan yang jelas; Seting 2 dapat berfungsi apabila pola pasaran tidak begitu jelas tetapi terdapat tanda-tanda akumulasi yang kuat.

  2. Pengurusan risiko bersepadu: Mekanisme berhenti kehilangan dinamik yang dibina secara automatik menyesuaikan diri dengan turun naik pasaran, membolehkan keuntungan meningkat sambil melindungi modal. Khususnya, fungsi menghentikan kerugian yang secara automatik diperketat apabila keuntungan mencapai ambang batas yang ditetapkan, secara berkesan mengimbangi konflik antara mengunci keuntungan dan membiarkan keuntungan berjalan.

  3. Penembusan palsuDengan menggabungkan penapisan SMA dan pengesahan jumlah transaksi, strategi ini mengurangkan risiko penembusan palsu. Harga mesti bukan sahaja menembusi bentuk tetapi juga harus kekal di atas SMA, dan sokongan jumlah transaksi yang ketara diperlukan untuk setup 2, yang meningkatkan kualiti isyarat.

  4. Bantuan visualStrategi menawarkan banyak petunjuk visual, termasuk warna latar belakang semasa perdagangan, papan pemuka masa nyata dan pelbagai elemen grafik, yang membolehkan peniaga memantau keadaan strategi dan isyarat dengan mudah.

  5. Optimasi jangka masa yang fleksibelWalaupun strategi ini dioptimumkan khusus untuk carta 1 jam, parameternya boleh disesuaikan untuk menyesuaikan diri dengan bingkai masa yang berbeza, meningkatkan ruang lingkup strategi.

Risiko Strategik

  1. Kepercayaan kepada keadaan pasaranStrategi ini berfungsi dengan baik di pasaran mendatar ke bearish, dan mungkin tidak berfungsi dengan baik dalam tren turun yang kuat atau pasaran yang bergolak tinggi. Dalam persekitaran bearish, risiko pelepasan palsu meningkat dan boleh menyebabkan kerugian berturut-turut.

  2. Titik tergelincir dan risiko pelaksanaanDalam perdagangan sebenar, terutamanya di pasaran yang kurang cair, titik masuk dan berhenti mungkin mengalami titik tergelincir yang mempengaruhi prestasi keseluruhan strategi. Untuk mengurangkan risiko ini, anda boleh mempertimbangkan untuk menggunakan senarai harga had dan bukan senarai harga pasaran.

  3. Cabaran pengoptimuman parameterStrategi bergantung kepada pelbagai parameter (panjang SMA, peratusan stop loss, dan lain-lain), yang perlu dioptimumkan mengikut pasaran dan jangka masa tertentu. Tetapan parameter yang tidak betul boleh menyebabkan kecocokan berlebihan atau prestasi yang buruk.

  4. Risiko perdagangan berlebihanDalam keadaan pasaran tertentu, strategi mungkin menghasilkan terlalu banyak isyarat, yang menyebabkan perdagangan berlebihan dan meningkatkan kos perdagangan. Pelaksanaan penapis tambahan atau tempoh sejuk dapat membantu mengurangkan risiko ini.

  5. Pengecualian pengoptimumanWalaupun mekanisme hentian dinamik adalah kelebihan strategi ini, tetapan hentian yang terlalu ketat boleh menyebabkan penarikan awal dari perdagangan yang menguntungkan, dan tetapan yang terlalu luas boleh menyebabkan pulangan keuntungan. Parameter hentian perlu disesuaikan dengan berhati-hati mengikut turun naik pasaran tertentu.

Arah pengoptimuman strategi

  1. Tambah penapis trendMengintegrasikan petunjuk trend yang lebih luas (seperti purata bergerak jangka panjang atau ADX) dapat membantu strategi untuk berdagang hanya dalam arah pasaran yang menguntungkan. Sebagai contoh, syarat boleh ditambah yang hanya membenarkan pemandang masuk apabila SMA jangka panjang (seperti kitaran 200) condong ke atas.

  2. Optimumkan logik pengesahan jumlah transaksiPengesahan jumlah dagangan semasa memerlukan jumlah dagangan yang lebih tinggi daripada 4 kitaran sebelumnya, yang mungkin terlalu ketat atau tidak cukup ketat, bergantung kepada keadaan pasaran. Mencapai pengesahan jumlah dagangan yang beradaptasi, yang dapat meningkatkan keberkesanan Setup 2 berdasarkan perubahan dinamik pasaran yang tidak menentu.

  3. Penapis masa bersepaduBeberapa tempoh perdagangan mungkin lebih sesuai untuk strategi ini daripada yang lain. Menambah penapis masa untuk mengelakkan perdagangan pada masa yang tidak menguntungkan (seperti tempoh turun naik yang tinggi sebelum pasaran dibuka atau ditutup) mungkin meningkatkan prestasi keseluruhan.

  4. Mempunyai kunci keuntungan separaStrategi keluar semasa adalah binari (memegang semua atau keluar semua). Dengan sistem keluar beratur, saiz kedudukan dapat dikurangkan secara beransur-ansur apabila keuntungan meningkat, dan sebahagian keuntungan dapat dikunci sambil mengekalkan beberapa potensi naik.

  5. Tambah pengesahan aset yang berkaitanDalam pasaran tertentu, pengesahan aset yang berkaitan dapat meningkatkan kualiti isyarat. Sebagai contoh, dalam perdagangan saham, kekuatan sektor atau industri dapat berfungsi sebagai penapis tambahan; dalam pertukaran asing, tingkah laku pasangan mata wang yang berkaitan dapat memberikan pengesahan tambahan.

  6. Penyesuaian turun naik pasaran bersepaduBergantung kepada turun naik pasaran (seperti ATR atau kadar turun naik sejarah), anda boleh menyesuaikan tahap hentian secara dinamik untuk menyesuaikan strategi dengan keadaan pasaran yang berbeza. Gunakan hentian yang lebih ketat dalam keadaan turun naik rendah dan hentian yang lebih luas dalam keadaan turun naik tinggi.

ringkaskan

Strategi penembusan segitiga penarikan tinggi dan pengesahan harga kuantiti menyediakan kaedah perdagangan yang komprehensif, yang menggabungkan pengenalan bentuk teknikal, prinsip momentum dan analisis kuantiti. Dengan menyediakan dua tetapan kemasukan yang saling melengkapi, strategi ini mengekalkan fleksibiliti dalam keadaan pasaran yang berbeza, manakala mekanisme penangguhan kehilangan yang dinamik menyediakan pengurusan risiko yang dioptimumkan.

Kelebihan utama strategi ini adalah standard kemasukan yang pelbagai dan pengurusan risiko yang bersepadu, menjadikannya sesuai untuk pelbagai gaya perdagangan dari dalam hari hingga jangka pendek. Walau bagaimanapun, ketergantungan keadaan pasaran dan cabaran pengoptimuman parameter adalah risiko utama yang perlu diperhatikan.

Dengan menambah penapis trend, mengoptimumkan logik pengesahan jumlah dagangan atau melaksanakan penyesuaian turun naik, peniaga dapat meningkatkan prestasi strategi. Akhirnya, strategi ini memberikan kerangka yang kuat yang dapat disesuaikan mengikut keutamaan risiko peribadi dan ciri-ciri pasaran, menjadikannya alat yang berharga bagi peniaga yang mencari pendekatan perdagangan yang didorong oleh teknologi dan terkawal oleh risiko.

Kod sumber strategi
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===