Strategi Perdagangan Kuantum Berdasarkan Awan Ichimoku

Penulis:ChaoZhang, Tarikh: 2024-01-12 14:20:43
Tag:

img

Ringkasan

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.

Prinsip Strategi

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.

Analisis Kelebihan

  1. Berdasarkan indikator carta awan Ichimoku, ia dapat menangkap trend dengan berkesan
  2. Dengan stop loss berasaskan ATR dan mengambil keuntungan, ia boleh mengawal risiko
  3. Mengguna mekanisme stop loss untuk mengunci keuntungan dengan baik
  4. Logik strategi adalah mudah dan jelas, mudah difahami dan disahkan
  5. parameterization boleh didapati, parameter boleh diselaraskan mengikut pasaran yang berbeza

Analisis Risiko

  1. Peta awan Ichimoku sangat sensitif terhadap tetapan parameter, tetapan yang tidak betul boleh kehilangan peluang perdagangan atau menghasilkan isyarat yang salah
  2. Jika amplitudo stop loss yang tertinggal ditetapkan terlalu besar, stop loss mungkin berlaku lebih awal
  3. Saham yang kuat boleh menembusi garis stop loss atau garis stop loss yang diberikan oleh penunjuk ATR
  4. Kos urus niaga juga akan memberi kesan kepada keuntungan

Penyelesaian untuk risiko yang sepadan:

  1. Mengoptimumkan parameter peta awan Ichimoku untuk mencari tetapan yang paling sesuai
  2. Menilai amplitudo stop loss yang munasabah, tidak terlalu besar atau terlalu kecil
  3. Untuk saham yang kuat, selesaikan julat stop loss dengan betul
  4. Pilih broker dengan komisen yang rendah

Arahan pengoptimuman

  1. Menggabungkan penunjuk teknikal lain untuk penapisan isyarat untuk mengurangkan perdagangan yang salah
  2. Mengoptimumkan parameter berdasarkan data sejarah / pengujian latar belakang
  3. Parameter untuk pelbagai jenis boleh dioptimumkan secara berasingan
  4. Pertimbangkan penyesuaian dinamik amplitudo stop loss
  5. Menggabungkan algoritma untuk melakukan kejuruteraan ciri untuk membina isyarat perdagangan yang lebih boleh dipercayai

Ringkasan

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)


Lebih lanjut