
Chiến lược này kết hợp một số chỉ số chuyển động trung bình (EMA), chỉ số tương đối mạnh (RSI) và các điều kiện xuất phát dựa trên chênh lệch chuẩn để xác định cơ hội mua bán tiềm năng. Sử dụng EMA ngắn hạn (6,8,12 ngày), trung bình (5,5 ngày) và dài hạn (150,200,250 ngày) để phân tích chiều hướng và cường độ của xu hướng thị trường. RSI sử dụng các ngưỡng mua và bán có thể được cấu hình để đánh giá động lực và xác định tình trạng mua quá mức hoặc bán quá mức.
Bài viết này đề xuất một chiến lược giao dịch đột phá cao dựa trên nhiều đường trung bình di chuyển, RSI và lối thoát tiêu chuẩn. Chiến lược này phân tích thị trường từ hai chiều của xu hướng và động lực, đồng thời sử dụng cơ chế thoát tiêu chuẩn độc đáo, kiểm soát rủi ro trong khi nắm bắt cơ hội xu hướng.
/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true)
// Input parameters for EMA filter and its length
useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions")
emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions")
candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions")
exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12)
exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions")
// State variables to track if we are in a long or short position
var bool inLong = false
var bool inShort = false
// Calculating EMAs with fixed periods for visual reference
ema6 = ta.ema(close, 6)
ema8 = ta.ema(close, 8)
ema12 = ta.ema(close, 12)
ema55 = ta.ema(close, 55)
ema100 = ta.ema(close, 100)
ema150 = ta.ema(close, 150)
ema200 = ta.ema(close, 200)
emaFilter = ta.ema(close, emaFilterLength)
exitEma = ta.ema(close, exitEmaLength)
// Plotting EMAs
plot(ema6, "EMA 6", color=color.red)
plot(ema8, "EMA 8", color=color.orange)
plot(ema12, "EMA 12", color=color.yellow)
plot(ema55, "EMA 55", color=color.green)
plot(ema100, "EMA 100", color=color.blue)
plot(ema150, "EMA 150", color=color.purple)
plot(ema200, "EMA 200", color=color.fuchsia)
plot(emaFilter, "EMA Filter", color=color.black)
plot(exitEma, "Exit EMA", color=color.gray)
// Calculating the highest and lowest of the last N candles based on user input
highestOfN = ta.highest(high[1], candleCount)
lowestOfN = ta.lowest(low[1], candleCount)
// Entry Conditions with EMA Filter
longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter))
shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter))
// Update position state on entry
if (longEntryCondition)
strategy.entry("Buy", strategy.long, comment="B")
inLong := true
inShort := false
if (shortEntryCondition)
strategy.entry("Sell", strategy.short, comment="S")
inLong := false
inShort := true
// Exit Conditions based on configurable EMA and Std Dev Multiplier
smaForExit = ta.sma(close, exitEmaLength)
upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength)
lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength)
exitConditionLong = inLong and (close < upperExitBand or close < exitEma)
exitConditionShort = inShort and (close > lowerExitBand or close > exitEma)
// Strategy exits
if (exitConditionLong)
strategy.close("Buy", comment="Exit")
inLong := false
if (exitConditionShort)
strategy.close("Sell", comment="Exit")
inShort := false
// Visualizing entry and exit points
plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B")
plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")