ICHIMOKU KUMO TWIST STRATEGI

Penulis:ChaoZhang, Tarikh: 2023-10-27 16:36:59
Tag:

img

Ringkasan

Strategi Ichimoku Kumo Twist menggunakan garis penukaran, garis asas, dan garis rentang utama penunjuk Ichimoku untuk membina isyarat perdagangan sebagai strategi trend berikut. Ia mengenal pasti titik pembalikan trend jangka pendek dan sederhana dengan melihat perubahan dalam awan Ichimoku untuk mencari titik pecah risiko yang lebih rendah dan peluang overbought / oversold. Strategi ini boleh digunakan untuk perdagangan intraday serta perdagangan jangka menengah beberapa minggu.

Logika Strategi

Strategi ini terutamanya menggunakan tiga garis Ichimoku garisan penukaran, garis asas, dan rentang utama 1, bersama-sama dengan harga tinggi dan rendah candlesticks untuk mengira sempadan awan atas dan bawah. Garis penukaran mengira titik tengah tinggi dan rendah selama 9 lilin yang lalu, mewakili purata jangka pendek. Garis asas mengira titik tengah tinggi dan rendah selama 26 lilin yang lalu sebagai purata jangka panjang. Rentang utama 1 adalah purata penukaran dan garis asas. Rentang utama 2 adalah harga titik tengah 52 lilin yang lalu.

Isyarat beli dijana apabila rentang utama 1 melintasi rentang utama 2, manakala isyarat jual dijana apabila rentang utama 1 melintasi di bawah rentang utama 2. Strategi perdagangan hanya mengesan persilangan bullish dan bearish dari jangka pendek dan sederhana untuk menangkap perubahan trend.

Analisis Kelebihan

  • Strategi giliran awan Ichimoku menggabungkan kedua-dua trend jangka pendek dan jangka sederhana, yang dapat dengan berkesan mengenal pasti titik pembalikan trend.

  • Strategi berasaskan pembalikan purata mempunyai beberapa kelewatan terbina dalam untuk menapis bunyi bising.

  • Menggunakan awan untuk mengukur kekuatan trend membolehkan kemasukan dan keluar yang lebih baik.

  • Tiada pengoptimuman parameter diperlukan - parameter Ichimoku standard berfungsi dengan baik.

Analisis Risiko

  • Ichimoku mempunyai bahagian dalaman yang agak kompleks dan tidak terlalu sensitif terhadap tweak parameter yang membuat optimasi berlebihan sukar.

  • Terdapat beberapa isyarat palsu semasa pasaran terhad julat.

  • Perbezaan antara trend jangka pendek dan sederhana boleh menyebabkan kerosakan strategi.

  • Hentikan kerugian adalah penting untuk mengawal risiko, jika tidak, pengeluaran besar mungkin.

Peluang Peningkatan

  • Uji gabungan pemindahan dan tempoh asas yang berbeza untuk mencari keseimbangan yang optimum.

  • Tambah penapis dengan penunjuk lain untuk mengelakkan mengambil isyarat dalam formasi yang tidak baik.

  • Menggabungkan strategi stop loss seperti stop dinamik atau trailing.

  • Mengoptimumkan saiz kedudukan berdasarkan keadaan pasaran.

  • Tambah komisen dagangan dalam backtest untuk hasil yang lebih realistik.

Ringkasan

Secara keseluruhannya, strategi twist awan Ichimoku adalah strategi trend yang sederhana. Ia dapat mengenal pasti perubahan trend dengan berkesan dan mengambil kedudukan yang sejajar dengan arah trend. Tetapi pemantauan diperlukan dan kawalan risiko yang ketat diperlukan untuk penggunaan jangka panjang. Penambahbaikan berterusan dalam penyesuaian parameter, penapis kemasukan, mekanika kehilangan berhenti, dan banyak lagi dapat meningkatkan kestabilan dan keuntungan strategi ini.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
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 == "Crypto Doubled"
        20
    else
        if presets == "Crypto Singled"
            10
        else
            if presets == "Standard Doubled"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Crypto Doubled"
        60
    else
        if presets == "Crypto Singled"
            30
        else
            if presets == "Standard Doubled"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Crypto Doubled"
        120
    else
        if presets == "Crypto Singled"
            60
        else
            if presets == "Standard Doubled"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Crypto Doubled"
        30
    else
        if presets == "Crypto Singled"
            30
        else
            if presets == "Standard Doubled"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets",  options=["Crypto Doubled", "Crypto Singled", "Standard Doubled", "Standard Singled"], defval="Crypto Doubled")
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)

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

strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na))
strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na))

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