
이 전략은 클라우드 차트(이치모쿠), MACD 지표, 장기 이동 평균(EMA200)을 포함한 여러 기술 지표를 결합한 추세 추종 시스템입니다. 이러한 지표의 조정된 협력을 통해 전략은 완전한 거래 시스템을 형성합니다. 이는 시장 동향을 정확하게 포착할 수 있을 뿐만 아니라 ATR을 통해 이익실현 및 손절매 포지션을 동적으로 조정하여 효과적인 위험 관리를 달성할 수 있습니다.
이 전략은 거래 신호를 식별하기 위해 삼중 확인 메커니즘을 사용합니다. 먼저, 이치모쿠 클라우드 차트를 사용하여 가격 위치를 파악합니다. 가격이 클라우드 차트 위에 있을 때는 롱 포지션을 취하는 경향이 있고, 가격이 클라우드 차트 아래에 있을 때는 숏 포지션을 취하는 경향이 있습니다. 둘째, MACD 지표를 이용해 MACD선과 신호선의 교차점을 통해 추세 방향을 확인합니다. 마지막으로, 200기간 EMA는 거래 방향이 장기 추세와 일치하도록 하는 추세 필터로 도입되었습니다. 위험 관리 측면에서 이 전략은 ATR 지표를 사용하여 손절매 및 이익 실현 포지션을 동적으로 설정하여 시장 변동성에 따라 적응적으로 조정할 수 있습니다.
이 전략은 다차원 기술 지표를 결합하여 적용하여 비교적 완전한 추세 추적 시스템을 구축합니다. 이 기술의 핵심 장점은 다중 신호 확인 메커니즘과 동적 위험 관리 방식에 있지만, 실제 시장 환경에 따라 매개변수 최적화가 여전히 필요합니다. 전략의 전반적인 설계는 명확하고 실용적이어서 뚜렷한 추세가 있는 시장에 적용하기에 적합합니다.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("JOJO长趋势", overlay=true, shorttitle="JOJO长趋势")
// Ichimoku 云图
conversionLine = ta.sma(high, 9) // 转换线
baseLine = ta.sma(low, 26) // 基准线
leadingSpanA = (conversionLine + baseLine) / 2 // 领先跨度A
leadingSpanB = (ta.sma(high, 52) + ta.sma(low, 52)) / 2 // 领先跨度B
laggingSpan = close[26] // 滞后跨度
// MACD 指标
macdLine = ta.ema(close, 12) - ta.ema(close, 26) // MACD 线
signalLine = ta.ema(macdLine, 9) // 信号线
macdHist = macdLine - signalLine // MACD 柱状图
// 长期均线
longTermEMA = ta.ema(close, 200) // 200周期EMA,用于确认长期趋势
// 声明多单和空单条件变量
var bool longCondition = false
var bool shortCondition = false
// 声明平仓条件变量
var bool exitLongCondition = false
var bool exitShortCondition = false
// 仅在K线完成后计算
if barstate.isconfirmed
longCondition := (close > leadingSpanA) and (macdLine > signalLine) and (close > longTermEMA) // 多单条件
shortCondition := (close < leadingSpanB) and (macdLine < signalLine) and (close < longTermEMA) // 空单条件
// 平仓条件
exitLongCondition := macdLine < signalLine or close < leadingSpanB // 多单平仓条件
exitShortCondition := macdLine > signalLine or close > leadingSpanA // 空单平仓条件
// 执行策略进入市场
if longCondition
strategy.entry("Long", strategy.long) // 多单进场
if shortCondition
strategy.entry("Short", strategy.short) // 空单进场
// 设置止损和止盈,使用 ATR 倍数动态调整
stopLoss = input.float(1.5, title="止损 (ATR 倍数)", step=0.1) * ta.atr(14) // 止损基于 ATR
takeProfit = input.float(3.0, title="止盈 (ATR 倍数)", step=0.1) * ta.atr(14) // 止盈基于 ATR
// 执行平仓
if exitLongCondition
strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit) // 多单平仓
if exitShortCondition
strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit) // 空单平仓
// 绘制买入和卖出信号
plotshape(series=barstate.isconfirmed and longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=barstate.isconfirmed and shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")