Strategi perdagangan kuantitatif berdasarkan carta awan Ichimoku


Tarikh penciptaan: 2024-01-12 14:20:43 Akhirnya diubah suai: 2024-01-12 14:20:43
Salin: 0 Bilangan klik: 680
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan carta awan Ichimoku

Gambaran keseluruhan

Strategi ini direka bentuk berdasarkan petunjuk grafik awan Ichimoku untuk sistem perdagangan kuantitatif, terutamanya untuk aset yang mempunyai trend yang baik. Strategi ini menggabungkan fungsi-fungsi seperti hentikan kerugian, menghentikan kerugian, dan mengesan kerugian, bertujuan untuk mencapai keuntungan yang stabil.

Prinsip Strategi

Carta awan Ichimoku terdiri daripada garisan peralihan, garisan asas, garisan hadapan 1, garisan hadapan 2 dan carta awan. Isyarat perdagangan untuk strategi ini berasal dari hubungan harga dengan garisan awan. Secara khusus, apabila harga naik melintasi garisan hadapan 1, ia menghasilkan isyarat beli; apabila harga turun melintasi garisan hadapan 1, ia menghasilkan isyarat jual.

Strategi ini juga menetapkan stop loss dan penangguhan berdasarkan ATR. Penunjuk ATR dapat menangkap kadar turun naik pasaran dengan berkesan. Stop loss adalah 2 kali ganda ATR dan penangguhan adalah 4 kali ganda ATR. Ini dapat mengawal kerugian tunggal dengan berkesan dan mengunci sebahagian keuntungan.

Akhirnya, strategi ini menggunakan mekanisme hentian pengesanan. Khususnya, untuk membuat pesanan berganda, akan menggunakan 2 kali ATR sebagai penarikan balik, menyesuaikan garis hentian untuk mengunci keuntungan; untuk membuat pesanan udara, akan menggunakan 2 kali ATR sebagai penarikan balik, menyesuaikan garis hentian untuk mengunci keuntungan.

Analisis kelebihan strategi

  1. Menggunakan indikator grafik awan Ichimoku untuk menangkap trend secara berkesan
  2. Penangguhan kerugian yang digabungkan dengan ATR untuk mengawal risiko
  3. Menggunakan mekanisme tracking stop loss, anda boleh mengunci keuntungan dengan baik
  4. Logik strategi ringkas, jelas, mudah difahami dan disahkan
  5. parametrization, parameter yang boleh disesuaikan mengikut pasaran yang berbeza

Analisis risiko

  1. Peta awan Ichimoku sensitif terhadap tetapan Paramer, tetapan yang tidak sesuai boleh kehilangan peluang perdagangan atau menghasilkan isyarat yang salah
  2. Tracking Stop Loss Jika setup terlalu besar, mungkin akan berhenti terlalu awal
  3. Saham yang kuat mungkin akan menembusi garis hentian yang diberikan oleh penunjuk ATR atau mengikuti garis hentian
  4. Kos transaksi juga memberi kesan kepada keuntungan

Penyelesaian untuk menghadapi risiko:

  1. Mengoptimumkan parameter Imej Awan Ichimoku untuk mencari tetapan yang paling sesuai
  2. Kaedah yang digunakan untuk menilai kadar kerugian yang boleh dikesan, tidak boleh terlalu besar atau terlalu kecil
  3. Perlindungan terhad untuk saham yang kuat
  4. Pilih broker dengan bayaran rendah

Arah pengoptimuman strategi

  1. Penapisan isyarat dalam kombinasi dengan penunjuk teknikal lain untuk mengurangkan perdagangan yang salah
  2. Optimumkan parameter berdasarkan data sejarah / retesting
  3. Tetapan parameter yang berbeza boleh dioptimumkan secara berasingan
  4. Anda boleh mempertimbangkan untuk menyesuaikan stop loss secara dinamik.
  5. Teknik ciri yang digabungkan dengan algoritma untuk mewujudkan isyarat dagangan yang lebih dipercayai

ringkaskan

Strategi ini secara keseluruhan merupakan strategi pengesanan trend yang stabil. Berdasarkan petunjuk grafik awan Ichimoku untuk menentukan arah trend; menetapkan stop loss dengan menggunakan indikator ATR; menggunakan pengesanan berhenti untuk mengunci keuntungan. Kelebihan adalah logiknya ringkas dan mudah difahami; boleh mengawal kerugian tunggal; boleh mengesan trend dengan berkesan.

Kod sumber strategi
/*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)