
Strategi ini adalah sistem perdagangan trend pengesanan gabungan pelbagai indikator, yang menggabungkan analisis tiga dimensi trend pasaran, momentum dan kadar turun naik. Logik utamanya adalah untuk menilai trend pasaran melalui satu indikator awan (Ichimoku Cloud), MACD untuk mengkonfirmasi momentum, Bollinger Band Width untuk menyaring keadaan turun naik pasaran, sambil memperkenalkan mekanisme pengesahan trend di peringkat mingguan, dan akhirnya untuk menguruskan risiko melalui stop loss dinamik berdasarkan ATR.
Strategi menggunakan mekanisme penapisan isyarat berlapis: pertama, menentukan trend besar pasaran dengan menilai harga di atas atau di bawah awan dengan menentukan jarak A dan B utama dalam satu indikator awan; kedua, menggunakan carta lurus MACD untuk menentukan intensiti pergerakan, yang memerlukan carta lurus pada waktu puncak yang lebih besar daripada -0.05, kurang dari 0 pada waktu puncak; ketiga, memperkenalkan garis purata 50 kitaran kitaran masa pada garis lingkaran untuk memastikan arah trend peringkat yang lebih besar; keempat, menggunakan penapisan indeks lebar lebar Brin untuk memfilterkan kadar pergerakan rendah, hanya apabila lebar lebar lebih besar daripada 0.02.
Strategi ini membina sistem pengesanan trend yang lengkap dengan penggabungan petunjuk pelbagai dimensi dan analisis kitaran masa berbilang, dan dilengkapi dengan mekanisme pengurusan risiko dinamik. Walaupun prestasi pengukuran kembali sangat baik, risiko yang dibawa oleh perubahan persekitaran pasaran masih perlu diperhatikan, disarankan untuk disahkan dengan teliti dan terus dioptimumkan di dalam talian.
/*backtest
start: 2024-11-01 00:00:00
end: 2025-02-19 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"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/
// © FIWB
//@version=6
strategy("Momentum Edge Strategy - 1D BTC Optimized", overlay=true)
// --- Input Parameters ---
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
bbWidthThreshold = input.float(0.02, title="Bollinger Band Width Threshold")
// --- Ichimoku Cloud ---
conversionLine = (ta.highest(high, 9) + ta.lowest(low, 9)) / 2
baseLine = (ta.highest(high, 26) + ta.lowest(low, 26)) / 2
leadingSpanA = (conversionLine + baseLine) / 2
leadingSpanB = (ta.highest(high, 52) + ta.lowest(low, 52)) / 2
priceAboveCloud = close > leadingSpanA and close > leadingSpanB
priceBelowCloud = close < leadingSpanA and close < leadingSpanB
// --- MACD Histogram ---
[_, _, macdHistogram] = ta.macd(close, 12, 26, 9)
// --- Multi-Timeframe Trend Confirmation ---
higherTFTrend = request.security(syminfo.tickerid, "W", close > ta.sma(close, 50))
// --- Bollinger Band Width ---
bbBasis = ta.sma(close, 20)
bbUpper = bbBasis + 2 * ta.stdev(close, 20)
bbLower = bbBasis - 2 * ta.stdev(close, 20)
bbWidth = (bbUpper - bbLower) / bbBasis
// --- ATR-based Stop Loss ---
atrValue = ta.atr(atrLength)
highestHigh = ta.highest(high, atrLength)
lowestLow = ta.lowest(low, atrLength)
longStopLoss = bbWidth < bbWidthThreshold ? lowestLow : close - atrValue * atrMultiplier
shortStopLoss= bbWidth < bbWidthThreshold ? highestHigh : close + atrValue * atrMultiplier
// --- Entry Conditions ---
longCondition = priceAboveCloud and macdHistogram > -0.05 and higherTFTrend and bbWidth > bbWidthThreshold
shortCondition = priceBelowCloud and macdHistogram < 0 and not higherTFTrend and bbWidth > bbWidthThreshold
// --- Strategy Execution ---
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss)
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss)
// --- Plotting ---
plot(leadingSpanA, color=color.new(color.green, 80), title="Leading Span A")
plot(leadingSpanB, color=color.new(color.red, 80), title="Leading Span B")
plotshape(series=longCondition ? close : na, title="Long Signal", location=location.belowbar, color=color.green)
plotshape(series=shortCondition ? close : na, title="Short Signal", location=location.abovebar, color=color.red)