
이 전략은 빠른 이동 평균과 느린 이동 평균의 교차 신호를 통해, Supertrend 지표가 제공하는 트렌드 방향 확인과 결합하여, 신뢰할 수 있는 거래 시스템을 형성한다. 전략 설계는 트렌드 확인과 동력의 변화의 두 가지 중요한 요소를 충분히 고려하여, 두 번의 검증 메커니즘을 통해 거래의 신호 신뢰성을 향상시킨다.
이 전략의 핵심 논리는 3가지 핵심 기술 지표의 결합된 사용에 기초하고 있습니다.
구매 신호는 두 가지 조건을 동시에 충족해야 합니다.
판매 신호는 다음과 같은 조건을 충족해야 합니다.
이 전략은 전체적인 구조, 논리적으로 명확한 트렌드 추적 전략이다. 일률적 시스템과 슈퍼트렌드 지표를 결합하여 신호 정확도와 지연성을 효과적으로 균형을 맞추고 있다. 전략의 시각적 디자인과 정보 표시 시스템은 거래자가 시장 상태를 신속하게 판단할 수 있도록 도와준다. 합리적인 매개 변수 최적화 및 위험 관리를 통해 이 전략은 트렌드 시장에서 좋은 거래 효과를 얻을 수 있다.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-07-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Advanced Supertrend + EMA Strategy", overlay=true)
// =================== PARAMETER INPUTS ===================
// EMA Parameters
emaFastLength = input.int(5, "Fast EMA", minval=1, maxval=50, group="EMA Settings")
emaSlowLength = input.int(20, "Slow EMA", minval=1, maxval=100, group="EMA Settings")
// Supertrend Parameters
atrPeriod = input.int(10, "ATR Period", minval=1, maxval=50, group="Supertrend Settings")
factor = input.float(3.0, "Factor", step=0.1, group="Supertrend Settings")
// =================== CALCULATIONS ===================
// EMA Calculations
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
// =================== SIGNAL GENERATION ===================
// EMA Crossovers
emaCrossUp = ta.crossover(emaFast, emaSlow)
emaCrossDown = ta.crossunder(emaFast, emaSlow)
// Supertrend Signals
stUp = direction < 0
stDown = direction > 0
// Buy and Sell Conditions
longCondition = emaCrossUp and stUp
shortCondition = emaCrossDown and stDown
// =================== GRAPHICAL INDICATORS ===================
// EMA Lines
plot(emaFast, color=color.new(color.blue, 0), linewidth=2, title="Fast EMA")
plot(emaSlow, color=color.new(color.red, 0), linewidth=2, title="Slow EMA")
// Supertrend Line
supertrendColor = direction < 0 ? color.green : color.red
plot(supertrend, color=supertrendColor, linewidth=2, title="Supertrend")
// Buy-Sell Signals
plotshape(longCondition, title="Buy", text="BUY", location=location.belowbar,
color=color.green, style=shape.labelup, size=size.normal, textcolor=color.white)
plotshape(shortCondition, title="Sell", text="SELL", location=location.abovebar,
color=color.red, style=shape.labeldown, size=size.normal, textcolor=color.white)
// =================== STRATEGY EXECUTIONS ===================
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.close("Long")
// =================== INFORMATION TABLE ===================
var table infoTable = table.new(position.bottom_right, 2, 4, bgcolor=color.new(color.black, 90))
// Signal Status
signalText = ""
signalColor = color.white
if (longCondition)
signalText := "BUY SIGNAL"
signalColor := color.green
if (shortCondition)
signalText := "SELL SIGNAL"
signalColor := color.red
// Table Content
table.cell(infoTable, 0, 0, "CURRENT SIGNAL", bgcolor=color.new(color.blue, 90))
table.cell(infoTable, 1, 0, signalText, text_color=signalColor)
table.cell(infoTable, 0, 1, "EMA TREND")
table.cell(infoTable, 1, 1, emaFast > emaSlow ? "UP" : "DOWN",
text_color=emaFast > emaSlow ? color.green : color.red)
table.cell(infoTable, 0, 2, "SUPERTREND")
table.cell(infoTable, 1, 2, direction < 0 ? "UP" : "DOWN",
text_color=direction < 0 ? color.green : color.red)
// Last Trade Information
table.cell(infoTable, 0, 3, "LAST TRADE")
table.cell(infoTable, 1, 3, longCondition ? "BUY" : shortCondition ? "SELL" : "-",
text_color=longCondition ? color.green : shortCondition ? color.red : color.white)