ICH Cloud mang đến chiến lược đảo ngược


Ngày tạo: 2023-10-27 16:36:59 sửa đổi lần cuối: 2023-10-27 16:36:59
sao chép: 2 Số nhấp chuột: 896
1
tập trung vào
1617
Người theo dõi

ICH Cloud mang đến chiến lược đảo ngược

Tổng quan

Chiến lược Ichimoku Kumo Twist sử dụng đường chuyển đổi, đường chuẩn và đường dẫn của chỉ số Ichimoku để xây dựng tín hiệu giao dịch, thuộc chiến lược theo dõi xu hướng. Nó tìm kiếm điểm đảo ngược của xu hướng ngắn hạn và trung hạn thông qua sự đảo ngược của dải mây Ichimoku để có được điểm phá vỡ có rủi ro thấp hơn và cơ hội bán tháo. Chiến lược này có thể được sử dụng cho giao dịch trong ngày hoặc giao dịch đường dài trung bình trong vài tuần.

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

Chiến lược này chủ yếu sử dụng ba đường trung bình của chỉ số Ichimoku - đường chuyển đổi, đường chuẩn và đường dẫn 1 và đường K để tính giá cao nhất và giá thấp nhất. Đường chuyển đổi tính trung bình giá cao nhất và giá thấp nhất của 9 đường K trước, đại diện cho đường trung bình ngắn hạn của biểu đồ cân bằng đầu tiên; đường chuẩn tính trung bình giá cao nhất và giá thấp nhất của 26 đường K trước, đại diện cho đường trung bình dài hạn. đường dẫn 1 là đường trung bình của đường chuyển đổi và đường chuẩn, đường dẫn 2 là đường trung bình của 52 đường K trước.

Đường dẫn 1 tạo ra tín hiệu mua khi nó đi qua đường dẫn 2, và đường dẫn 1 dưới đường dẫn 2 tạo ra tín hiệu bán. Chiến lược giao dịch này là theo dõi đường trung bình ngắn hạn và trung hạn để bắt được sự thay đổi của xu hướng.

Phân tích lợi thế

  • Ichimoku Cloud Belt Reversal Strategy kết hợp cả xu hướng ngắn hạn và trung hạn để xác định hiệu quả điểm đảo ngược xu hướng.

  • Chiến lược dựa trên đường thẳng, có một số độ trễ, có thể lọc một phần tiếng ồn.

  • Sử dụng Cloudband để đánh giá mức độ rõ ràng của xu hướng mạnh hoặc yếu, để thực hiện các bước vào và lối ra tốt hơn.

  • Không cần tối ưu hóa tham số, bạn có thể sử dụng tham số tiêu chuẩn của Ichimoku.

Phân tích rủi ro

  • Nguyên tắc Ichimoku phức tạp hơn, không nhạy cảm với điều chỉnh tham số và không dễ tối ưu hóa quá mức.

  • Có thể có nhiều tín hiệu sai trong thị trường.

  • Khi các xu hướng ngắn hạn và trung hạn bị lệch, chiến lược sẽ thất bại.

  • Cần phải kết hợp với Stop Loss để kiểm soát rủi ro, nếu không có thể gây ra tổn thất lớn.

Hướng tối ưu hóa

  • Có thể thử nghiệm các kết hợp các tham số khác nhau của đường chuyển đổi và đường chuẩn để tìm điểm cân bằng tốt nhất.

  • Kết hợp các chỉ số khác để lọc tín hiệu vào sân và tránh xây dựng sân trong một hình thức bất lợi rõ ràng.

  • Thêm chiến lược dừng lỗ, thiết lập dừng động hoặc dừng theo dõi.

  • Tối ưu hóa quản lý vị trí, điều chỉnh quy mô vị trí theo thị trường.

  • Ghi thêm phí giao dịch vào phản hồi để kết quả phản hồi chính xác hơn.

Tóm tắt

Ichimoku là một chiến lược có xu hướng trung bình. Nó có thể xác định hiệu quả các điểm biến hướng và mở vị trí theo hướng phù hợp với xu hướng. Tuy nhiên, chiến lược này cũng có một số chi phí giám sát và phải đi kèm với các biện pháp quản lý rủi ro nghiêm ngặt để sử dụng lâu dài.

Mã nguồn chiến lược
/*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)