Ichimoku Kumo Twist Strategi Mengasap Emas

Penulis:ChaoZhang, Tanggal: 2023-11-28 16:12:09
Tag:

img

Gambaran umum

Ichimoku Kumo Twist Gold-Absorbing Strategy adalah strategi perdagangan kuantitatif yang menggabungkan indikator teknis pasar Ichimoku dan penyaringan kisaran. Ini menggunakan indikator Ichimoku untuk menentukan tren pasar dan tingkat dukungan dan resistensi penting, bersama dengan pola lilin untuk menghasilkan sinyal perdagangan. Sementara itu, penyaringan kisaran membantu mengendalikan frekuensi dan risiko perdagangan.

Prinsip Strategi

Strategi ini terutama didasarkan pada indikator Ichimoku dan pola candlestick untuk menilai tren pasar. Ichimoku berisi garis konversi, garis dasar dan garis awan, hubungan silang mereka menunjukkan tren pasar. Garis awan juga bertindak sebagai level support dan resistance. Strategi ini mengatur kombinasi parameter yang berbeda untuk menyesuaikan sensitivitas garis Ichimoku. Selain itu, strategi ini mengidentifikasi pola dan menghasilkan sinyal beli ketika garis konversi melintasi di atas garis dasar, dan sinyal jual saat melintasi di bawah.

Selain itu, strategi ini memiliki filter rentang tanggal yang diatur, sehingga hanya diperdagangkan dalam rentang tanggal yang ditentukan. Ini mengontrol frekuensi perdagangan. Juga, pengaturan stop loss membantu mengurangi risiko dengan menghentikan kerugian ketika harga berjalan ke arah yang tidak menguntungkan.

Analisis Keuntungan

  • Menggunakan indikator Ichimoku untuk menilai tren pasar, parameter disesuaikan untuk sensitivitas
  • Sinyal perdagangan yang jelas dari pengenalan pola candlestick
  • Filter rentang tanggal mengontrol frekuensi perdagangan
  • Pengaturan stop loss untuk stop loss yang tepat waktu untuk mengurangi risiko

Analisis Risiko

  • Ichimoku tertinggal mungkin kehilangan tren yang cepat berubah
  • Filter kisaran tanggal mungkin melewatkan beberapa peluang perdagangan
  • Pengaturan stop loss yang tidak tepat dapat memperluas kerugian

Metode seperti menyesuaikan parameter Ichimoku, mengoptimalkan rentang tanggal, mengubah titik stop loss dapat meningkatkan dan mengendalikan risiko.

Arahan Optimasi

  • Uji kombinasi parameter yang berbeda untuk menemukan konfigurasi Ichimoku yang optimal
  • Gabungkan dengan indikator lain untuk menghindari masalah Ichimoku tertinggal
  • Backtest untuk mengoptimalkan pengaturan rentang tanggal
  • Setel kondisional stop loss dinamika

Ringkasan

Ichimoku Kumo Twist Gold-Absorbing Strategy mengintegrasikan indikator Ichimoku, pengenalan pola lilin, penyaringan rentang untuk menentukan tren pasar. Ini dapat memahami arah tren dengan sangat jelas. Melalui cara seperti penyesuaian parameter, kontrol risiko, dll, kinerja strategi yang baik dapat dicapai. Tetapi masalah Ichimoku yang tertinggal harus diperhatikan, dan penyesuaian optimasi terus dilakukan.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)

xlowest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xlowest(src, len) =>
    na(src[len]) ? xlowest_(src, len) : lowest(src, len)

xhighest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xhighest(src, len) =>
    na(src[len]) ? xhighest_(src, len) : highest(src, len)

dropn(src, n) =>
    na(src[n]) ? na : src

ichiConversionPeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        20
    else
        if presets == "Cpt 10 30 60 30"
            10
        else
            if presets == "Std 18 52 104 26"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        60
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Cpt 20 60 120 30"
        120
    else
        if presets == "Cpt 10 30 60 30"
            60
        else
            if presets == "Std 18 52 104 26"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Cpt 20 60 120 30"
        30
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")

conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"

lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)

lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs

donchian(len) =>
    avg(xlowest(lowsp, len), xhighest(highsp, len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)

strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2

plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")

p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)


Lebih banyak