
Strategi ini terutama menggunakan harga tertinggi, harga terendah dan harga penutupan pada hari perdagangan sebelumnya sebagai dukungan dan resistance level hari itu, melakukan lebih banyak ketika melewati resistance level, dan membuat kosong ketika kembali menguji support level, merupakan strategi penembusan yang khas.
Kode pertama mendefinisikan sebuah fungsi untuk menghitung level resistensi dukungan, calculatedSupportResistance, yang mengambil harga tertinggi, terendah, dan harga penutupan pada hari perdagangan sebelumnya sebagai level resistensi dukungan pada hari tersebut.
Fungsi ini kemudian dipanggil dalam logika utama untuk mendapatkan tiga bit harga dan menunjukkannya dalam peta.
Dalam logika retracement, jika harga close-out lebih rendah dari harga minimum hari sebelumnya dan harga saat ini lebih tinggi dari harga minimum tersebut merupakan terobosan, maka akan dilakukan over; jika harga close-out lebih tinggi dari harga tertinggi hari sebelumnya dan harga saat ini lebih rendah dari harga tertinggi tersebut yang merupakan terobosan, maka akan dilakukan over.
Dengan model terobosan seperti itu, penilaian tren dan sinyal perdagangan dapat dibuat.
Tanggapan:
Strategi ini secara keseluruhan merupakan strategi pemecahan yang khas, sederhana dan intuitif, dengan data hari perdagangan sebelumnya untuk membangun resistensi dukungan hari itu, dan mengevaluasi penembusan tersebut. Keuntungan adalah mudah dipahami, dan resistensi dukungan dapat dilihat secara langsung. Kelemahannya adalah adanya risiko pemecahan palsu, tidak dapat menentukan keberlangsungan tren.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)