Chiến lược hấp thụ vàng của Ichimoku Kumo Twist

Tác giả:ChaoZhang, Ngày: 2023-11-28 16:12:09
Tags:

img

Tổng quan

Chiến lược hấp thụ vàng Ichimoku Kumo Twist là một chiến lược giao dịch định lượng kết hợp chỉ số kỹ thuật thị trường Ichimoku và lọc phạm vi. Nó sử dụng chỉ số Ichimoku để xác định xu hướng thị trường và mức hỗ trợ và kháng cự quan trọng, cùng với các mẫu nến để tạo ra tín hiệu giao dịch. Trong khi đó, lọc phạm vi giúp kiểm soát tần suất giao dịch và rủi ro.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên chỉ số Ichimoku và các mô hình nến để đánh giá xu hướng thị trường. Ichimoku chứa đường chuyển đổi, đường cơ sở và đường mây, mối quan hệ chéo chéo của chúng chỉ ra xu hướng thị trường. Các đường mây cũng đóng vai trò là mức hỗ trợ và kháng cự. Chiến lược thiết lập các kết hợp tham số khác nhau để điều chỉnh độ nhạy của các đường Ichimoku. Ngoài ra, chiến lược xác định các mô hình và tạo ra tín hiệu mua khi đường chuyển đổi vượt qua trên đường cơ sở, và bán tín hiệu khi vượt qua bên dưới.

Ngoài ra, chiến lược có bộ lọc phạm vi ngày được thiết lập, do đó nó chỉ giao dịch trong phạm vi ngày được chỉ định. Điều này kiểm soát tần suất giao dịch. Ngoài ra, cài đặt dừng lỗ giúp giảm rủi ro bằng cách dừng lỗ khi giá chạy theo hướng không thuận lợi.

Phân tích lợi thế

  • Sử dụng chỉ số Ichimoku để đánh giá xu hướng thị trường, các tham số có thể điều chỉnh cho độ nhạy
  • Các tín hiệu giao dịch rõ ràng từ nhận dạng mô hình nến
  • Bộ lọc phạm vi ngày kiểm soát tần suất giao dịch
  • Cài đặt dừng lỗ để giảm rủi ro kịp thời

Phân tích rủi ro

  • Ichimoku chậm lại có thể bỏ lỡ xu hướng thay đổi nhanh chóng
  • Bộ lọc phạm vi ngày có thể bỏ lỡ một số cơ hội giao dịch
  • Thiết lập stop loss không chính xác có thể làm tăng lỗ

Các phương pháp như điều chỉnh các thông số Ichimoku, tối ưu hóa phạm vi ngày, sửa đổi điểm dừng lỗ có thể cải thiện và kiểm soát rủi ro.

Hướng dẫn tối ưu hóa

  • Kiểm tra các kết hợp tham số khác nhau để tìm cấu hình Ichimoku tối ưu
  • Kết hợp với các chỉ số khác để tránh các vấn đề chậm Ichimoku
  • Backtest để tối ưu hóa cài đặt phạm vi ngày
  • Đặt lệnh dừng lỗ theo sau theo điều kiện động

Tóm lại

Ichimoku Kumo Twist Gold-Absorbing Strategy tích hợp chỉ số Ichimoku, nhận dạng mô hình nến, lọc phạm vi để xác định xu hướng thị trường. Nó có thể nắm bắt hướng xu hướng khá rõ ràng. Thông qua các phương tiện như điều chỉnh tham số, kiểm soát rủi ro vv, có thể đạt được hiệu suất chiến lược tốt. Nhưng vấn đề tụt lại của Ichimoku nên được lưu ý và điều chỉnh tối ưu hóa liên tục.


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


Thêm nữa