ICHIMOKU KUMO TWIST STRATEGI

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

img

Gambaran umum

Strategi Ichimoku Kumo Twist menggunakan garis konversi, garis dasar, dan garis rentang utama dari indikator Ichimoku untuk membangun sinyal perdagangan sebagai strategi trend berikut. Strategi ini dapat digunakan untuk perdagangan intraday serta perdagangan jangka menengah multi-minggu.

Logika Strategi

Strategi ini terutama menggunakan tiga garis Ichimoku garis konversi, garis dasar, dan lead span 1, bersama dengan harga tinggi dan rendah candlesticks untuk menghitung batas awan atas dan bawah. garis konversi menghitung titik tengah dari tinggi dan rendah selama 9 lilin terakhir, mewakili rata-rata jangka pendek. garis dasar menghitung titik tengah dari tinggi dan rendah selama 26 lilin terakhir sebagai rata-rata jangka panjang. lead span 1 adalah rata-rata konversi dan garis dasar. lead span 2 adalah harga titik tengah dari 52 lilin terakhir.

Sinyal beli dihasilkan ketika lead span 1 melintasi lead span 2, sementara sinyal jual dihasilkan ketika lead span 1 melintasi under lead span 2. Strategi trading hanya melacak bullish dan bearish crosses dari short and medium term means untuk menangkap perubahan tren.

Analisis Keuntungan

  • Strategi twist awan Ichimoku menggabungkan tren jangka pendek dan jangka menengah, yang dapat secara efektif mengidentifikasi titik pembalikan tren.

  • Strategi yang didasarkan pada reversi rata-rata memiliki beberapa keterlambatan yang dibangun untuk menyaring kebisingan.

  • Menggunakan awan untuk mengukur kekuatan tren memungkinkan untuk peningkatan entri dan keluar.

  • Tidak perlu optimasi parameter - parameter Ichimoku standar bekerja dengan baik.

Analisis Risiko

  • Ichimoku memiliki internal yang cukup kompleks dan tidak terlalu sensitif terhadap tweak parameter yang membuat overoptimization sulit.

  • Bisa ada beberapa sinyal palsu selama pasar yang terikat rentang.

  • Perbedaan antara tren jangka pendek dan jangka menengah dapat menyebabkan kegagalan strategi.

  • Stop loss sangat penting untuk mengendalikan risiko, jika tidak drawdown besar mungkin.

Peluang Peningkatan

  • Uji kombinasi periode konversi dan awal yang berbeda untuk menemukan keseimbangan yang optimal.

  • Tambahkan filter dengan indikator lain untuk menghindari sinyal dalam formasi yang tidak menguntungkan.

  • Sertakan strategi stop loss seperti stop dinamis atau trailing.

  • Mengoptimalkan ukuran posisi berdasarkan kondisi pasar.

  • Tambahkan komisi perdagangan dalam backtest untuk hasil yang lebih realistis.

Ringkasan

Secara keseluruhan, strategi Ichimoku cloud twist adalah strategi trend moderat yang mengikuti tren. Ini dapat secara efektif mengidentifikasi perubahan tren dan mengambil posisi yang selaras dengan arah tren. Tetapi pemantauan diperlukan dan kontrol risiko yang ketat diperlukan untuk penggunaan jangka panjang. Perbaikan berkelanjutan dalam penyesuaian parameter, filter masuk, mekanika stop loss, dan banyak lagi dapat lebih meningkatkan stabilitas dan profitabilitas 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 banyak