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