Ichimoku Kumo Twist Strategi Mengambil Emas

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

img

Ringkasan

Strategi Ichimoku Kumo Twist Gold-Absorbing adalah strategi perdagangan kuantitatif yang menggabungkan penunjuk teknikal pasaran Ichimoku dan penapisan julat. Ia menggunakan penunjuk Ichimoku untuk menentukan trend pasaran dan tahap sokongan dan rintangan yang penting, bersama dengan corak lilin untuk menghasilkan isyarat perdagangan. Sementara itu, penapisan julat membantu mengawal kekerapan perdagangan dan risiko.

Prinsip Strategi

Strategi ini terutamanya berdasarkan kepada petunjuk Ichimoku dan corak candlestick untuk menilai trend pasaran. Ichimoku mengandungi garis penukaran, garis asas dan garis awan, hubungan silang mereka menunjukkan trend pasaran. Garis awan juga bertindak sebagai tahap sokongan dan rintangan. Strategi ini menetapkan kombinasi parameter yang berbeza untuk menyesuaikan kepekaan garis Ichimoku. Di samping itu, strategi ini mengenal pasti corak dan menghasilkan isyarat beli apabila garis penukaran melintasi di atas garis asas, dan isyarat jual apabila melintasi di bawah.

Selain itu, strategi ini mempunyai penapis julat tarikh yang ditetapkan, supaya ia hanya berdagang dalam julat tarikh yang ditentukan. Ini mengawal kekerapan perdagangan. Juga, tetapan stop loss membantu mengurangkan risiko dengan menghentikan kerugian apabila harga berjalan ke arah yang tidak menguntungkan.

Analisis Kelebihan

  • Menggunakan indikator Ichimoku untuk menilai trend pasaran, parameter yang boleh diselaraskan untuk kepekaan
  • Isyarat perdagangan yang jelas dari pengenalan corak candlestick
  • Penapis julat tarikh mengawal kekerapan dagangan
  • Tetapan Stop Loss untuk Stop Loss tepat pada masanya untuk mengurangkan risiko

Analisis Risiko

  • Ichimoku yang ketinggalan mungkin terlepas trend yang berubah dengan cepat
  • Penapis julat tarikh mungkin terlepas beberapa peluang perdagangan
  • Tetapan stop loss yang tidak betul boleh meningkatkan kerugian

Kaedah seperti menyesuaikan parameter Ichimoku, mengoptimumkan julat tarikh, mengubah titik stop loss boleh meningkatkan dan mengawal risiko.

Arahan pengoptimuman

  • Uji kombinasi parameter yang berbeza untuk mencari konfigurasi Ichimoku optimum
  • Gabungkan dengan penunjuk lain untuk mengelakkan isu Ichimoku tertinggal
  • Backtest untuk mengoptimumkan tetapan julat tarikh
  • Tetapkan pendedahan stop loss

Ringkasan

Ichimoku Kumo Twist Gold-Absorbing Strategy mengintegrasikan penunjuk Ichimoku, pengenalan corak candlestick, penapisan julat untuk menentukan trend pasaran. Ia dapat memahami arah trend dengan cukup jelas. Melalui cara seperti penyesuaian parameter, kawalan risiko dan lain-lain, prestasi strategi yang baik dapat dicapai. Tetapi masalah ketinggalan Ichimoku harus diperhatikan, dan penyesuaian pengoptimuman berterusan dibuat.


/*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 lanjut