
Strategi ini adalah sistem perdagangan yang komprehensif, menggunakan analisis pelbagai kerangka masa, penggabungan penunjuk teknikal dan pengenalan bentuk untuk mencari peluang perdagangan yang berkemungkinan tinggi. Gagasan utamanya adalah dengan menganalisis konsistensi trend dalam lima bingkai masa yang berbeza: 1 minit, 5 minit, 15 minit, 1 jam dan 4 jam, menggabungkan bentuk lalu lintas, penembusan, dan dinamika untuk menangkap pergerakan pasaran dengan tepat. Strategi ini juga mempunyai mekanisme stop loss automatik yang menyesuaikan parameter pengurusan risiko mengikut dinamik pasaran yang tidak menentu.
Strategi ini adalah berasaskan kepada beberapa komponen utama:
Analisis trend pelbagai kerangka masaKaedah pertama ialah menggunakan fungsi tersuai:getTrend()Analisis trend dalam 5 bingkai masa yang berbeza. Pada setiap bingkai masa, sistem memeriksa sama ada EMA cepat lebih tinggi daripada EMA perlahan, sama ada nilai RSI melebihi 50 dan sama ada harga lebih tinggi daripada EMA cepat untuk menentukan tanda-tanda yang lebih banyak; sebaliknya, keadaan menentukan tanda-tanda yang kosong.
Pengesahan trendSistem hanya akan mempertimbangkan kemasukan apabila semua lima bingkai masa menunjukkan isyarat trend ke arah yang sama. Mekanisme konsensus trend yang ketat ini meningkatkan kebolehpercayaan isyarat.
Syarat kemasukan yang lebih baikSelain itu, syarat kemasukan adalah:
Sistem pengurusan risikoStrategi menggunakan kaedah pengiraan stop loss yang dinamik, menetapkan tahap stop loss berdasarkan turun naik harga terkini (High Low Price Difference) dan menetapkan sasaran stop loss menggunakan parameter kelipatan (Default 2.0)
Visualisasi sokongan / rintanganSistem ini secara automatik mengenal pasti dan memaparkan tahap sokongan dan rintangan yang penting, membantu peniaga memahami struktur pasaran semasa melalui bantuan visual.
Penapisan isyarat multidimensiDengan memerlukan keserasian pelbagai petunjuk teknikal dan jangka masa, kemungkinan isyarat palsu dikurangkan dengan ketara. Mekanisme pengesahan berganda ini membolehkan strategi hanya mencetuskan isyarat perdagangan dalam tetapan kebarangkalian tinggi.
Pengurusan risiko penyesuaianTahap stop loss dan stop loss tidak tetap, tetapi dikira berdasarkan pergerakan turun naik pasaran semasa, yang membolehkan strategi untuk mengekalkan nisbah risiko / pulangan yang sesuai dalam keadaan turun naik yang berbeza.
Sistem penglihatan lengkapStrategi mengandungi alat bantuan visual yang komprehensif, termasuk papan petunjuk trend, bingkai sokongan / rintangan, tanda isyarat perdagangan dan garis berhenti / kehilangan yang diramalkan, untuk memberikan analisis pasaran yang intuitif kepada peniaga.
Pengesahan pesananDengan meminta isyarat dagangan yang disertai dengan peningkatan jumlah dagangan yang ketara, strategi dapat mengenal pasti pergerakan pasaran yang berdaya saing, bukan hanya turun naik harga secara rawak.
Integrasi pengenalan bentuk: Merenggut bentuk sebagai sebahagian daripada syarat kemasukan, meningkatkan ketepatan strategi, kerana bentuk grafik ini biasanya mewakili perubahan ketara dalam sentimen pasaran.
Sering menyeimbangkan semula keperluanSinyal perdagangan mungkin agak jarang berlaku kerana strategi bergantung pada keserasian dalam pelbagai bingkai masa. Dalam kes tidak ada peluang perdagangan untuk jangka masa yang panjang, peniaga mungkin tergoda untuk menurunkan standard, yang menyebabkan pelaksanaan perdagangan yang tidak sesuai.
Ketergantungan isyaratStrategi ini sangat bergantung kepada petunjuk dan bentuk teknikal, dan dalam keadaan pasaran tertentu, seperti peristiwa berita yang tiba-tiba atau semasa turun naik yang melampau, isyarat ini mungkin tidak berfungsi atau memberikan petunjuk yang mengelirukan.
Risiko yang terlalu optimumStrategi menggunakan pelbagai parameter dan syarat, yang boleh menyebabkan data sejarah dioptimumkan secara berlebihan dan tidak berfungsi dengan baik dalam keadaan pasaran sebenar. Perlu dilakukan pengulangan yang menyeluruh dalam jangka masa yang cukup lama dan dalam keadaan pasaran yang berbeza.
Kerumitan pengiraanAnalisis pelbagai kerangka masa dan pengiraan pelbagai petunjuk memerlukan banyak sumber pengkomputeran, yang boleh menyebabkan masalah prestasi atau kelewatan pada platform perdagangan tertentu.
Penangguhan pengesanan perubahan trendOleh kerana strategi memerlukan keserasian dalam pelbagai bingkai masa, ia mungkin kehilangan peluang pada peringkat awal perubahan trend sehingga trend baru ditubuhkan di semua bingkai masa.
Penyesuaian parameterMekanisme diperkenalkan yang membolehkan panjang EMA, nilai RSI dan keperluan CMI disesuaikan secara automatik mengikut turun naik pasaran semasa atau masa perdagangan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Sistem berat kerangka masa: Daripada hanya memerlukan semua bingkai masa untuk menjadi seragam, sistem berat boleh dilaksanakan di mana isyarat bingkai masa yang lebih tinggi mempunyai kesan yang lebih besar, yang mungkin menghasilkan isyarat yang lebih tepat pada masanya, sambil mengekalkan standard kualiti yang tinggi.
Klasifikasi keadaan pasaranMenambah algoritma untuk mengesan sama ada pasaran semasa berada dalam keadaan trend atau dalam keadaan selang, dan menyesuaikan parameter strategi dengan sewajarnya. Sebagai contoh, ambang CMI yang lebih tinggi mungkin diperlukan dalam pasaran selang.
Integrasi Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan peraturan masuk dan keluar, mengenal pasti kombinasi isyarat yang paling berkesan berdasarkan data sejarah, dan terus memperbaiki dengan pengumpulan data baru.
Meningkatkan KepelbagaianTambahan lain yang tidak berkaitan dengan petunjuk teknikal, seperti tahap Fibonacci retracement, tahap harga kritikal, atau sentimen pasaran, untuk memberikan dimensi tambahan pengesahan.
Strategi perdagangan automatik merangkumi dinamika gabungan pelbagai bingkai masa adalah sistem perdagangan menyeluruh yang mengenal pasti peluang perdagangan berkemungkinan tinggi melalui mekanisme pengesahan berganda yang ketat. Dengan menggabungkan analisis trend, pengesahan jumlah transaksi, pengenalan bentuk dan pengurusan risiko dinamik, strategi ini bertujuan untuk memberikan isyarat perdagangan berkualiti tinggi sambil menguruskan risiko setiap perdagangan.
Walaupun syarat ketat strategi ini boleh menyebabkan isyarat perdagangan yang agak sedikit, ini sebenarnya adalah salah satu kelebihan utamanya kerana ia memberi keutamaan kepada kualiti isyarat daripada kuantiti. Strategi ini dapat meningkatkan lagi prestasinya dan kesesuaian dengan langkah-langkah pengoptimuman yang dicadangkan, terutamanya parameter penyesuaian diri dan klasifikasi keadaan pasaran.
Bagi peniaga yang mencari kaedah perdagangan yang sistematik dan disiplin, analisis pelbagai peringkat dan kaedah pengesahan yang ketat ini memberikan kerangka kerja yang kuat yang dapat mengekalkan konsistensi dalam pelbagai persekitaran pasaran sambil mengurangkan kesan bias emosi melalui peraturan automatik.
/*backtest
start: 2024-04-11 00:00:00
end: 2025-04-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("M.Shiham-XAUUSD Sniper Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, max_lines_count=500, max_boxes_count=500)
// === Input ===
fastLen = input.int(9, "Fast EMA")
slowLen = input.int(21, "Slow EMA")
rsiLen = input.int(14, "RSI Period")
tpMultiplier = input.float(2.0, "TP Multiplier")
slMultiplier = input.float(1.0, "SL Multiplier")
// === Function Trend Check ===
getTrend(tf) =>
emaFast = request.security(syminfo.tickerid, tf, ta.ema(close, fastLen))
emaSlow = request.security(syminfo.tickerid, tf, ta.ema(close, slowLen))
rsi = request.security(syminfo.tickerid, tf, ta.rsi(close, rsiLen))
price = request.security(syminfo.tickerid, tf, close)
isBuy = emaFast > emaSlow and rsi > 50 and price > emaFast
isSell = emaFast < emaSlow and rsi < 50 and price < emaFast
isBuy ? 1 : isSell ? -1 : 0
// === Trend by Timeframe ===
trend1m = getTrend("1")
trend5m = getTrend("5")
trend15m = getTrend("15")
trend1h = getTrend("60")
trend4h = getTrend("240")
// === Alert Conditions ===
allBuy = trend1m == 1 and trend5m == 1 and trend15m == 1 and trend1h == 1 and trend4h == 1
allSell = trend1m == -1 and trend5m == -1 and trend15m == -1 and trend1h == -1 and trend4h == -1
alertcondition(allBuy, title="All TF Buy", message="🔔 BUY SIGNAL! All timeframes agree: BUY XAUUSD")
alertcondition(allSell, title="All TF Sell", message="🔔 SELL SIGNAL! All timeframes agree: SELL XAUUSD")
txt(val) => val == 1 ? "BUY" : val == -1 ? "SELL" : "-"
clr(val) => val == 1 ? color.green : val == -1 ? color.red : color.gray
// === Table Dashboard (Optional Toggle) ===
showTable = input.bool(true, "Show Trend Dashboard")
var table t = table.new(position.top_right, 2, 6, border_width=1)
if showTable and bar_index % 5 == 0
table.cell(t, 0, 0, "Timeframe", text_color=color.white, bgcolor=color.black)
table.cell(t, 1, 0, "Signal", text_color=color.white, bgcolor=color.black)
table.cell(t, 0, 1, "1 MIN", text_color=color.white)
table.cell(t, 1, 1, txt(trend1m), bgcolor=clr(trend1m), text_color=color.white)
table.cell(t, 0, 2, "5 MIN", text_color=color.white)
table.cell(t, 1, 2, txt(trend5m), bgcolor=clr(trend5m), text_color=color.white)
table.cell(t, 0, 3, "15 MIN", text_color=color.white)
table.cell(t, 1, 3, txt(trend15m), bgcolor=clr(trend15m), text_color=color.white)
table.cell(t, 0, 4, "1 H", text_color=color.white)
table.cell(t, 1, 4, txt(trend1h), bgcolor=clr(trend1h), text_color=color.white)
table.cell(t, 0, 5, "4 H", text_color=color.white)
table.cell(t, 1, 5, txt(trend4h), bgcolor=clr(trend4h), text_color=color.white)
// === Support/Resistance Box ===
pHigh = ta.pivothigh(high, 5, 5)
pLow = ta.pivotlow(low, 5, 5)
// === Volume Spike ===
avgVol = ta.sma(volume, 20)
volSpike = volume > avgVol * 2
// === Breakout + Alert ===
breakoutUp = high > ta.highest(high, 20)[1] and volSpike
alertcondition(breakoutUp, title="Breakout Up", message="🚀 XAUUSD Breakout Up with Volume")
breakoutDown = low < ta.lowest(low, 20)[1] and volSpike
alertcondition(breakoutDown, title="Breakout Down", message="⚠️ XAUUSD Breakout Down with Volume")
// === Engulfing Pattern ===
bullishEngulf = open[1] > close[1] and close > open and open < close[1] and close > open[1]
bearishEngulf = open[1] < close[1] and close < open and open > close[1] and close < open[1]
// === Moving Averages, Momentum & RSI ===
rsi = ta.rsi(close, rsiLen)
cmiPeriod = 14
cmi = 100 * math.abs(close - close[cmiPeriod]) / (ta.highest(high, cmiPeriod) - ta.lowest(low, cmiPeriod))
vwma = ta.vwma(close, 20)
plot(cmi, title="CMI", color=color.purple, display=display.none)
plot(vwma, title="VWMA", color=color.orange, display=display.none)
ma30 = ta.sma(close, 30)
plot(ma30, title="MA 30", color=color.blue)
// === STRATEGY MODE: Auto Entry & TP/SL ===
longEntry = allBuy and bullishEngulf and volSpike and rsi > 55 and cmi > 30 and close > vwma
shortEntry = allSell and bearishEngulf and volSpike and rsi < 45 and cmi > 30 and close < vwma
if (longEntry)
strategy.entry("Buy", strategy.long)
entry = close
sl = entry - (high - low) * slMultiplier
tp = entry + (entry - sl) * tpMultiplier
strategy.exit("TP Buy", from_entry="Buy", stop=sl, limit=tp)
if (shortEntry)
strategy.entry("Sell", strategy.short)
entry = close
sl = entry + (high - low) * slMultiplier
tp = entry - (sl - entry) * tpMultiplier
strategy.exit("TP Sell", from_entry="Sell", stop=sl, limit=tp)
if longEntry
entry = close
sl = entry - (high - low) * slMultiplier
tp = entry + (entry - sl) * tpMultiplier
if shortEntry
entry = close
sl = entry + (high - low) * slMultiplier
tp = entry - (sl - entry) * tpMultiplier
// === Plot Signals ===
plotshape(bullishEngulf, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="Bull")
plotshape(bearishEngulf, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="Bear")
plotshape(breakoutUp, title="Breakout Up", location=location.belowbar, color=color.blue, style=shape.labelup, text="BO↑")
plotshape(breakoutDown, title="Breakout Down", location=location.abovebar, color=color.orange, style=shape.labeldown, text="BO↓")