
Strategi ini dirancang berdasarkan indikator diagram awan Ichimoku untuk sistem perdagangan kuantitatif, terutama untuk aset dengan tren yang baik. Strategi ini menggabungkan fungsi seperti stop loss, stop loss, dan tracking stop loss untuk mencapai keuntungan yang stabil.
Grafik Ichimoku terdiri dari garis konversi, garis acuan, garis depan 1, garis depan 2, dan grafik awan. Sinyal perdagangan untuk strategi ini berasal dari hubungan harga dengan grafik awan. Secara khusus, sinyal beli dihasilkan ketika harga naik melewati garis depan 1; sinyal jual dihasilkan ketika harga turun melewati garis depan 1. Selain itu, garis depan 2 juga berfungsi sebagai indikator penilaian tambahan.
Strategi ini juga menetapkan stop loss dan stop loss berdasarkan indikator ATR. Indikator ATR dapat secara efektif menangkap tingkat fluktuasi pasar. Stop loss adalah 2 kali lipat dari ATR, dan stop loss adalah 4 kali lipat dari ATR. Ini dapat secara efektif mengendalikan kerugian tunggal dan mengunci sebagian dari keuntungan.
Akhirnya, strategi ini mengadopsi mekanisme tracking stop loss. Secara khusus, untuk melakukan pesanan berlebih, akan menggunakan 2 kali lipat dari ATR sebagai penarikan kembali, menyesuaikan stop loss line secara real time untuk mengunci keuntungan; Untuk melakukan pesanan udara, akan menggunakan 2 kali lipat dari ATR sebagai penarikan kembali, menyesuaikan stop loss line secara real time untuk mengunci keuntungan.
Solusi untuk menghadapi risiko:
Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang stabil. Berdasarkan indikator grafik awan Ichimoku untuk menentukan arah tren; Menggunakan indikator ATR untuk mengatur stop loss; Menggunakan pelacakan stop loss untuk mengunci keuntungan. Keunggulan adalah logika yang ringkas dan mudah dipahami; Dapat mengendalikan kerugian tunggal; Dapat secara efektif melacak tren.
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)
conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")
// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4
// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2
// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met
// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)