Strategi ini merancang sistem perdagangan kuantitatif berdasarkan penunjuk Ichimoku Cloud, terutamanya untuk aset dengan trend yang baik. Strategi ini mengintegrasikan fungsi seperti stop loss, mengambil keuntungan, dan trailing stop loss untuk mencapai keuntungan yang stabil.
Ichimoku Cloud terdiri daripada garis penukaran, garis asas, lead span 1, lead span 2 dan carta awan. Isyarat perdagangan strategi ini berasal dari hubungan antara harga dan carta awan. Khususnya, isyarat beli dihasilkan apabila harga melintasi di atas lead span 1; Isyarat jual dihasilkan apabila harga melintasi di bawah lead span 1. Di samping itu, lead span 2 juga berfungsi sebagai penunjuk penilaian tambahan.
Strategi ini juga menetapkan stop loss dan mengambil keuntungan berdasarkan indikator ATR. Indikator ATR dapat menangkap tahap turun naik pasaran dengan berkesan. Stop loss ditetapkan menjadi 2 kali ATR, dan mengambil keuntungan ditetapkan menjadi 4 kali ATR. Ini dapat mengawal kerugian tunggal dengan berkesan dan mengunci beberapa keuntungan.
Akhirnya, strategi ini menggunakan mekanisme stop loss yang menyusul. Khususnya, untuk kedudukan panjang, ia akan menggunakan 2 kali ATR sebagai amplitud callback untuk menyesuaikan garis stop loss dalam masa nyata untuk mengunci keuntungan; untuk kedudukan pendek, ia akan menggunakan 2 kali ATR sebagai amplitud callback untuk menyesuaikan garis stop loss dalam masa nyata untuk mengunci keuntungan.
Penyelesaian untuk risiko yang sepadan:
Secara amnya, strategi ini adalah strategi pengesanan trend yang stabil. Menghakimi arah trend berdasarkan penunjuk awan Ichimoku; menetapkan stop loss dan mengambil keuntungan menggunakan penunjuk ATR; menggunakan stop loss trailing untuk mengunci keuntungan. Kelebihannya adalah logik yang mudah, mudah difahami; kerugian tunggal boleh dikawal; trend boleh dikesan dengan berkesan. Tetapi terdapat juga beberapa risiko sensitiviti parameter dan kehilangan berhenti yang dilanggar. Dengan terus mengoptimumkan parameter dan strategi itu sendiri, prestasi yang lebih baik dapat diperoleh.
/*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)