Chiến lược thoát khỏi Ichimoku

Tác giả:ChaoZhang, Ngày: 2023-10-13 16:48:22
Tags:

Tổng quan

Chiến lược Ichimoku Breakout sử dụng khái niệm trung bình động và sử dụng mối quan hệ giữa các đường Ichimoku và giá để xác định hướng xu hướng. Nó thuộc về chiến lược theo xu hướng. Nó đi dài khi giá phá vỡ trên các đường và đi ngắn khi giá phá vỡ dưới các đường, theo xu hướng.

Phân tích nguyên tắc

Cốt lõi của chiến lược này dựa trên lý thuyết của các đường Ichimoku.donchian()chức năng để tính toán trung bình của mức cao nhất và thấp nhất trong một khoảng thời gian nhất định như đường cân bằng. sau đó đánh giá nếu giá vượt qua đường này để tạo ra tín hiệu giao dịch.

Cụ thể, chiến lược đầu tiên tính toán đường Tenkan (TS) sử dụngTenKhi giá phá vỡ trên đường, nó được coi là một xu hướng di chuyển và tạo ra một tín hiệu dài. Khi giá phá vỡ dưới đường, nó được coi là đảo ngược xu hướng và tạo ra một tín hiệu ngắn.

Ngoài ra, chiến lược tính toán tuyến Kijun (KS) sử dụngKijcùng vớiTSChỉ khiTSthập giá trênKSsẽ có một tín hiệu dài được kích hoạt.

Mã cũng vẽ đám mây Ichimoku để hỗ trợ đánh giá hướng xu hướng. Đường Chikou được tính để xác định mối quan hệ của nó với giá như một điều kiện phụ trợ.

Phân tích lợi thế

  • Sử dụng trung bình động để xác định xu hướng, đơn giản và dễ hiểu
  • Ichimoku Cloud cung cấp tham chiếu bổ sung để cải thiện độ chính xác
  • Chikou Line thêm lọc tín hiệu như một điều kiện phụ trợ
  • Điều chỉnh linh hoạt có sẵn với các kết hợp tham số khác nhau

Phân tích rủi ro

  • Chiến lược trung bình động nhạy cảm với các thông số, các giai đoạn khác nhau có thể tạo ra kết quả khác nhau
  • Theo xu hướng thuần túy không thể đánh giá xu hướng so với phạm vi, rủi ro mất mát tồn tại
  • Việc xử lý các giai đoạn hợp nhất kém, dễ bị tín hiệu sai
  • Phán đoán đám mây không ổn định, có thể gây hiểu lầm

Xem xét kết hợp với các chỉ số động lực như MACD cho sức mạnh xu hướng. áp dụng nhiều hệ thống trung bình động để cải thiện sự ổn định. hoặc kết hợp dừng lỗ để kiểm soát rủi ro.

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

  • Thêm các chỉ số động lực để xác định sức mạnh xu hướng
  • Xem xét nhiều hệ thống trung bình động, ví dụ như thập giá vàng
  • Thêm các chỉ số kênh và biến động để phát hiện phạm vi
  • Tối ưu hóa các tham số để tìm kết hợp thời gian tốt nhất
  • Kết hợp chiến lược dừng lỗ để hạn chế lỗ cho mỗi giao dịch

Kết luận

Chiến lược Breakout Ichimoku tương đối đơn giản và thẳng thắn, phù hợp cho người mới bắt đầu hiểu xu hướng bằng cách sử dụng đường trung bình động. Nó cũng có thể được mở rộng với nhiều chỉ số cho các hệ thống phong phú. Tuy nhiên, hiệu suất thực tế của nó đòi hỏi phải xác minh và tối ưu hóa hơn nữa trước khi áp dụng trong giao dịch trực tiếp, đặc biệt là trong kiểm soát rủi ro.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Ichimoku Crypto Breakout", shorttitle="Ichimoku Breakout", overlay=true)

Ten = input(18, minval=1, title="Tenkan")
Kij = input(52, minval=1, title="Kijun")
LeadSpan = input(104, minval=1, title="Senkou B")
Displace = input(52, minval=1, title="Senkou A")
SpanOffset = input(52, minval=1, title="Span Offset")

sts = input(true, title="Show Tenkan")
sks = input(true, title="Show Kijun")
ssa = input(true, title="Show Span A")
ssb = input(true, title="Show Span B")

source = close

//Script for Ichimoku Indicator
donchian(len) => avg(lowest(len), highest(len))
TS = donchian(Ten)
KS = donchian(Kij)
SpanA = avg(TS, KS)
SpanB = donchian(LeadSpan)

CloudTop = max(TS, KS)

Chikou = source[Displace]
SpanAA = avg(TS, KS)[SpanOffset]
SpanBB = donchian(LeadSpan)[SpanOffset]

//Kumo Breakout (Long)
SpanA_Top = SpanAA >= SpanBB ? 1 : 0
SpanB_Top = SpanBB >= SpanAA ? 1 : 0

SpanA_Top2 = SpanA >= SpanB ? 1 : 0
SpanB_Top2 = SpanB >= SpanA ? 1 : 0

SpanA1 = SpanA_Top2 ? SpanA : na
SpanA2 = SpanA_Top2 ? SpanB : na

SpanB1 = SpanB_Top2 ? SpanA : na
SpanB2 = SpanB_Top2 ? SpanB : na

//plot for Tenkan and Kijun (Current Timeframe)
p1= plot(sts and TS ? TS : na, title="Tenkan", linewidth = 2, color = gray)
p2 = plot(sks and KS ? KS : na, title="Kijun", linewidth = 2, color = black)
p5 = plot(close, title="Chikou", linewidth = 2, offset=-Displace, color = orange)

//Plot for Kumo Cloud (Dynamic Color)
p3 = plot(ssa and SpanA ? SpanA : na, title="SpanA", linewidth=2, offset=Displace, color=green)
p4 = plot(ssb and SpanB ? SpanB : na, title="SpanB", linewidth=2, offset=Displace, color=red)

p8 = plot(ssa and SpanA1 ? SpanA1 : na, title="Span A1 above", style=linebr, linewidth=1, offset=Displace, color=green)
p9 = plot(ssa and SpanA2 ? SpanA2 : na, title="Span A2 above", style=linebr, linewidth=1, offset=Displace, color=green)
p10 = plot(ssb and SpanB1 ? SpanB1 : na, title="Span B1 above", style=linebr, linewidth=1, offset=Displace, color=red)
p11 = plot(ssb and SpanB2 ? SpanB2 : na, title="Span B2 above", style=linebr, linewidth=1, offset=Displace, color=red)

fill(p8, p9, color = lime, transp=70, title="Kumo Cloud Up")
fill (p10, p11, color=red, transp=70, title="Kumo Cloud Down")

LongSpan = (SpanA_Top and source[1] < SpanAA[1] and source > SpanAA) or (SpanB_Top and source[1] < SpanBB[1] and source > SpanBB) ? 1 : 0
cupSpan = LongSpan  == 1 ? LongSpan : 0

//Kumo Breakout (Long)
//plotarrow(cupSpan, title="Kumo Breakout Long", colorup=green, maxheight=50)

//Kumo Breakout (Long) Alerts
Long_Breakout = (SpanA_Top ==1 and crossover(source, SpanAA)) or (SpanB_Top ==1 and crossover(source, SpanBB))
//Long_Breakout = ((SpanA_Top ==1 and crossover(KS, SpanAA)) or (SpanB_Top ==1 and crossover(KS, SpanBB))) and TS >= KS
//alertcondition(Long_Breakout, title="Kumo Breakout Long", message="Kumo Long")

//Kumo Breakout (Short)
ShortSpan = (SpanB_Top and source[1] > SpanAA[1] and source < SpanAA) or (SpanA_Top and source[1] > SpanBB[1] and source < SpanBB) ? 1 : 0
cdnSpan = ShortSpan == 1 ? ShortSpan : 0

//Kumo Breakout (Short)
//plotarrow(cdnSpan*-1, title="Kumo Breakout Short", colordown=red, maxheight=50)

//Kumo Breakout (Short) Alerts
Short_Breakout = (SpanA_Top ==1 and crossunder(source, SpanBB)) or (SpanB_Top ==1 and crossunder(source, SpanAA))
//alertcondition(Short_Breakout, title="Kumo Breakout Short", message="Kumo Short")

//Kumo Twist
Kumo_Twist_Long = SpanA[1] < SpanB[1] and SpanA > SpanB ? 1 : 0
Kumo_Twist_Short = SpanA[1] > SpanB[1] and SpanA < SpanB ? 1 : 0

cupD = Kumo_Twist_Long == 1 ? Kumo_Twist_Long : 0
cdnD = Kumo_Twist_Short == 1 ? Kumo_Twist_Short : 0

//Kumo Twist (Long/Short)
//plotarrow(cupD, title="Kumo Twist Long", colorup=green, maxheight=50)
//plotarrow(cdnD*-1, title="Kumo Twist Short", colordown=red, maxheight=50)

//Kumo Twist (Long/Short) Alerts
KumoTwistLong_Cross = crossover(SpanA, SpanB)
//alertcondition(KumoTwistLong_Cross, title="Kumo Twist Long", message="Kumo Twist Long")
KumoTwistShort_Cross = crossunder(SpanA, SpanB)
//alertcondition(KumoTwistShort_Cross, title="Kumo Twist Short", message="Kumo Twist Short")

//Kumo Twist (Long/Short) - Bar Color
BarColor = Kumo_Twist_Long ? green : Kumo_Twist_Short ? red : na
barcolor(BarColor)

//Chikou above/below Price
Chikou_Above = close > Chikou
Chikou_Below = close < Chikou

//Kumo Twist (Long/Short) - Plot Character on location of Chikou to Price & Price to Kumo
//plotchar(Kumo_Twist_Long and Chikou_Above, title="Kumo Twist Long and Chikou above Price", char="A", location=location.abovebar, color=green)
//plotchar(Kumo_Twist_Long and Chikou_Below, title="Kumo Twist Long and Chikou below Price", char="B", location=location.abovebar, color=red)
//plotchar(Kumo_Twist_Short and Chikou_Above, title="Kumo Twist Short and Chikou above Price", char="A", location=location.belowbar, color=green)
//plotchar(Kumo_Twist_Short and Chikou_Below, title="Kumo Twist Short and Chikou below Price", char="B", location=location.belowbar, color=red)

//Base and Conversion Line Cross
//long = cross(TS, KS) and TS>KS

long = (cross(TS, SpanA) or cross(TS, SpanB)) and TS>SpanA and TS>SpanB and TS>=KS
short = cross(TS, KS) and KS >= TS

strategy.entry("long", strategy.long, when=Long_Breakout)
strategy.entry("short", strategy.short, when=Short_Breakout)
//strategy.exit("bracket", when=short)

Thêm nữa