Эта стратегия представляет собой последовательную систему, которая сочетает в себе несколько технических индикаторов, включая облако Ичимоку, индикатор MACD и долгосрочную скользящую среднюю (EMA200).
Стратегия использует тройной механизм подтверждения для выявления торговых сигналов. Во-первых, она использует облако Ичимоку для оценки ценовой позиции, предпочитая длинные позиции, когда цена выше облака, и короткие позиции, когда ниже. Во-вторых, она использует индикатор 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")