
Strategi ini adalah sistem mengikuti tren yang menggabungkan beberapa indikator teknis, termasuk grafik awan (Ichimoku), indikator MACD, dan rata-rata pergerakan jangka panjang (EMA200). Melalui kerja sama terkoordinasi dari indikator-indikator ini, strategi tersebut membentuk sistem perdagangan yang lengkap, yang tidak hanya dapat menangkap tren pasar secara akurat, tetapi juga secara dinamis menyesuaikan posisi take-profit dan stop-loss melalui ATR untuk mencapai pengendalian risiko yang efektif.
Strategi ini menggunakan mekanisme konfirmasi tiga kali lipat untuk mengidentifikasi sinyal perdagangan. Pertama, gunakan grafik awan Ichimoku untuk menentukan posisi harga. Ketika harga berada di atas grafik awan, Anda cenderung mengambil posisi beli, dan ketika berada di bawah grafik awan, Anda cenderung mengambil posisi jual. Kedua, gunakan indikator MACD untuk mengonfirmasi arah tren melalui perpotongan garis MACD dan garis sinyal. Terakhir, EMA periode 200 diperkenalkan sebagai filter tren untuk memastikan bahwa arah perdagangan konsisten dengan tren jangka panjang. Dalam hal pengendalian risiko, strategi ini menggunakan indikator ATR untuk secara dinamis menetapkan posisi stop-loss dan take-profit, yang memungkinkannya menyesuaikan secara adaptif sesuai dengan volatilitas pasar.
Strategi ini membangun sistem pelacakan tren yang relatif lengkap melalui penerapan gabungan indikator teknis multidimensi. Keunggulan utamanya terletak pada mekanisme konfirmasi sinyal ganda dan metode manajemen risiko dinamis, tetapi optimalisasi parameter masih diperlukan berdasarkan lingkungan pasar aktual. Desain strategi secara keseluruhan jelas dan praktis, sehingga cocok untuk diterapkan di pasar dengan tren yang jelas.
/*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")