
이 전략은 평균선 ((SMA), 브린 밴드 ((BB) 및 K선 형태를 결합한 트렌드 추적 거래 시스템이다. 이 전략은 주로 포식 형태를 거래 신호로 인식하고 200 일 평균선과 브린 밴드 중간 궤도를 트렌드 확인 지표로 결합하여 1:2의 리스크 수익률을 사용하여 위험을 제어한다.
전략의 핵심 논리는 여러 기술 지표의 조합을 통해 거래 신호를 확인하는 것입니다. 구체적으로:
가격이 200일 평균선과 브린 반도 궤도 위에 상향 침식 형태가 나타났을 때, 시스템은 다수 상점 포지션을 열었다. 그에 따라, 가격이 200일 평균선과 브린 반도 궤도 아래에 하향 침식 형태가 나타났을 때, 시스템은 빈 상점 포지션을 열었다.
이것은 구조적으로 완전하고 논리적으로 명확한 트렌드 추적 전략이다. 평행선, 브린밴드 및 삼키기 형태의 조합을 통해 거래 신호의 신뢰성을 보장하고 명확한 위험 제어 방법을 제공합니다. 약간의 지연성이 있지만, 전체적으로 운영성이 강한 위험 제어 가능한 거래 시스템이다.
/*backtest
start: 2025-01-08 00:00:00
end: 2025-02-07 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ardhankurniawan
//@version=5
//@version=5
strategy("Engulfing Candles Strategy with Risk-Reward 1:2 by ardhankurniawan", overlay = true)
// Menyimpan harga pembukaan dan penutupan dari candle sebelumnya dan saat ini
openBarPrevious = open[1]
closeBarPrevious = close[1]
openBarCurrent = open
closeBarCurrent = close
// Menghitung SMA 200
sma200 = ta.sma(close, 200)
// Menghitung Bollinger Bands (BB) dengan periode 14 dan standar deviasi 2
length = 14
src = close
mult = 2.0
basis = ta.sma(src, length) // Mid Bollinger Band (SMA)
dev = mult * ta.stdev(src, length) // Standard deviation
upperBB = basis + dev
lowerBB = basis - dev
midBB = basis // Mid Bollinger Band adalah SMA
// Kondisi Bullish Engulfing: harga pembukaan saat ini lebih rendah dari harga penutupan sebelumnya,
// harga pembukaan saat ini lebih rendah dari harga pembukaan sebelumnya, dan harga penutupan saat ini lebih tinggi dari harga pembukaan sebelumnya.
bullishEngulfing = (openBarCurrent <= closeBarPrevious) and (openBarCurrent < openBarPrevious) and (closeBarCurrent > openBarPrevious)
// Kondisi Bearish Engulfing: harga pembukaan saat ini lebih tinggi dari harga penutupan sebelumnya,
// harga pembukaan saat ini lebih tinggi dari harga pembukaan sebelumnya, dan harga penutupan saat ini lebih rendah dari harga pembukaan sebelumnya.
bearishEngulfing = (openBarCurrent >= closeBarPrevious) and (openBarCurrent > openBarPrevious) and (closeBarCurrent < openBarPrevious)
// Kondisi untuk membeli (buy) hanya jika Bullish Engulfing terjadi di atas SMA 200 dan Mid Bollinger Band
buyCondition = bullishEngulfing and close > sma200 and close > midBB
// Kondisi untuk menjual (sell) hanya jika Bearish Engulfing terjadi di bawah SMA 200 dan Mid Bollinger Band
sellCondition = bearishEngulfing and close < sma200 and close < midBB
// Menghitung Stop Loss dan Take Profit dengan Risk-Reward Ratio 1:2
longSL = low // SL di low candle bullish engulfing (prev low)
longRR = (close - low) * 2 // TP dengan Risk-Reward 1:2
longTP = close + longRR // TP untuk posisi long
shortSL = high // SL di high candle bearish engulfing (prev high)
shortRR = (high - close) * 2 // TP dengan Risk-Reward 1:2
shortTP = close - shortRR // TP untuk posisi short
// Strategi Buy ketika kondisi beli terpenuhi dengan SL dan TP
if buyCondition
strategy.entry("Buy", strategy.long) // Perintah beli ketika Bullish Engulfing terjadi di atas SMA 200 dan Mid Bollinger Band
strategy.exit("Sell Exit", from_entry = "Buy", stop = longSL, limit = longTP) // SL dan TP untuk posisi long
// Strategi Sell ketika kondisi jual terpenuhi dengan SL dan TP
if sellCondition
strategy.entry("Sell", strategy.short) // Perintah jual ketika Bearish Engulfing terjadi di bawah SMA 200 dan Mid Bollinger Band
strategy.exit("Buy Exit", from_entry = "Sell", stop = shortSL, limit = shortTP) // SL dan TP untuk posisi short
// Menambahkan kondisi untuk keluar dari posisi
if sellCondition
strategy.close("Buy") // Menutup posisi beli jika Bearish Engulfing terjadi di bawah SMA 200 dan Mid Bollinger Band
if buyCondition
strategy.close("Sell") // Menutup posisi jual jika Bullish Engulfing terjadi di atas SMA 200 dan Mid Bollinger Band
// Plotting SMA 200 dan Bollinger Bands
plot(sma200, color = color.blue, linewidth = 2, title = "SMA 200")
plot(upperBB, color = color.green, linewidth = 1, title = "Upper BB")
plot(lowerBB, color = color.red, linewidth = 1, title = "Lower BB")
plot(midBB, color = color.orange, linewidth = 2, title = "Mid BB")
// Alert condition
alertcondition(buyCondition, title = "Bullish Engulfing Above SMA 200 and Mid BB", message = "[CurrencyPair] [TimeFrame], Bullish Engulfing above SMA 200 and Mid Bollinger Band")
alertcondition(sellCondition, title = "Bearish Engulfing Below SMA 200 and Mid BB", message = "[CurrencyPair] [TimeFrame], Bearish Engulfing below SMA 200 and Mid Bollinger Band")