Chiến lược này là một hệ thống theo xu hướng kết hợp nhiều chỉ số kỹ thuật, bao gồm Ichimoku Cloud, chỉ số MACD và đường trung bình động dài hạn (EMA200). Thông qua sự phối hợp của các chỉ số này, nó tạo thành một hệ thống giao dịch hoàn chỉnh không chỉ nắm bắt chính xác xu hướng thị trường mà còn kiểm soát rủi ro hiệu quả thông qua quản lý dừng động dựa trên ATR.
Chiến lược này sử dụng một cơ chế xác nhận ba lần để xác định tín hiệu giao dịch. Thứ nhất, nó sử dụng đám mây Ichimoku để đánh giá vị trí giá, ưa thích các vị trí dài khi giá ở trên đám mây và các vị trí ngắn khi dưới. Thứ hai, nó sử dụng chỉ số MACD, xác nhận hướng xu hướng thông qua đường MACD và đường truyền tín hiệu. Cuối cùng, nó kết hợp EMA 200 giai đoạn như một bộ lọc xu hướng để đảm bảo hướng giao dịch phù hợp với xu hướng dài hạn. Để kiểm soát rủi ro, chiến lược sử dụng chỉ số ATR để thiết lập động mức dừng lỗ và lấy lợi nhuận, cho phép chúng thích nghi với sự biến động của thị trường.
Chiến lược này xây dựng một hệ thống theo xu hướng tương đối hoàn chỉnh thông qua việc áp dụng kết hợp các chỉ số kỹ thuật đa chiều. Những lợi thế cốt lõi của nó nằm trong cơ chế xác nhận tín hiệu đa và phương pháp quản lý rủi ro năng động, mặc dù vẫn cần tối ưu hóa tham số dựa trên điều kiện thị trường thực tế.
/*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")