
Strategi ini adalah strategi pengesanan trend berdasarkan penembusan tinggi baru dan penyaringan rata-rata garisan bulan. Ia mencari isyarat membeli dengan memantau sama ada harga telah melampaui paras tertinggi sebelum ini, dan menggunakan garisan bulan 8 kitaran purata bergerak sederhana ((8 SMA) sebagai syarat penyaringan jual untuk mengurangkan risiko penembusan palsu.
Strategi ini mempunyai dua bahagian utama:
Ini adalah strategi untuk mengesan trend yang direka dengan logik dan logik yang jelas. Dengan penggunaan gabungan penembusan tinggi baru dan rata-rata garis bulan, kedua-dua memastikan pengendalian yang berkesan terhadap trend dan pengendalian yang wajar terhadap risiko. Walaupun terdapat beberapa ketinggalan dan risiko penembusan palsu, tetapi dengan arah pengoptimuman yang disyorkan, prestasi keseluruhan strategi dijangka meningkat lagi.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true)
// Initialize the previous all-time high
var float prevAllTimeHigh = na
// Update the all-time high, excluding the current bar's high (use previous bar's high)
if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh)
prevAllTimeHigh := high[1]
// Monthly closing price and 8 SMA on monthly time frame
monthlyClose = request.security(syminfo.tickerid, "M", close)
monthlySMA = ta.sma(monthlyClose, 8)
// Variables to track the last signal type
var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell
// Debugging output to check the all-time high and conditions
plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High")
plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)")
// Buy signal: when the latest close is greater than the previous all-time high
buySignal = close > prevAllTimeHigh and lastSignal != 1
// Sell signal: when the monthly close is below the 8 SMA
sellSignal = monthlyClose < monthlySMA and lastSignal != 2
// Update the last signal type after triggering a signal
if (buySignal)
lastSignal := 1
if (sellSignal)
lastSignal := 2
// Execute the strategy orders
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.close("Buy")
// Optional: Plot buy and sell signals on the chart for visual reference
plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)