Chiến lược Ichimoku Kinko Hyo


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

Tổng quan

Chiến lược cân bằng một mắt sử dụng khái niệm đường trung bình, sử dụng mối quan hệ giữa đường trung bình và giá để đánh giá xu hướng, thuộc chiến lược theo dõi xu hướng. Khi giá trên đường trung bình, hãy làm nhiều, khi đi xuống, hãy làm trống, theo xu hướng.

Phân tích

Chiến lược này chủ yếu dựa trên ý tưởng về đường cong, sử dụng cốt lõidonchian()Chức năng này tính trung bình giá cao nhất và giá thấp nhất trong một chu kỳ nhất định, làm đường trung bình. Sau đó, đánh giá xem giá có vượt qua đường trung bình hay không, để tạo ra tín hiệu giao dịch.

Cụ thể, chiến lược này bắt đầu bằng tính toánTenĐường trung bình của chu kỳTSĐường tham chiếu: khi giá vượt qua đường trung bình, nó được coi là đi vào xu hướng và tạo ra tín hiệu đa; khi giá vượt qua đường trung bình, nó được coi là đảo ngược xu hướng và tạo ra tín hiệu ngắn.

Ngoài ra, chiến lược còn tínhKijĐường trung bình của chu kỳKSTSKết hợp dây, tạo điều kiện lọc, tránh tín hiệu sai. Chỉ khiTSĐeo trên mạngKSKhi có dây, nó sẽ kích hoạt nhiều tín hiệu.

Mã cũng vẽ một bản đồ đám mây, xác định mối quan hệ vị trí của nó, hỗ trợ xác định hướng xu hướng.ChikouLINE, để đánh giá mối quan hệ của nó với giá cả, như là một điều kiện phụ trợ.

Phân tích lợi thế

  • Sử dụng đường trung bình để đánh giá xu hướng, nguyên tắc đơn giản và dễ hiểu
  • Kết hợp với bản đồ đám mây để tăng cơ sở phán đoán, tăng độ chính xác
  • TăngChikouĐường dây là điều kiện phụ trợ để lọc thêm tín hiệu
  • Có thể điều chỉnh một cách linh hoạt bằng cách sử dụng các kết hợp đồng tuyến của các tham số khác nhau

Phân tích rủi ro

  • Chiến lược trung bình nhạy cảm với các tham số, hiệu quả khác nhau giữa các tham số khác nhau
  • Chỉ theo dõi đường trung bình, không thể xác định xu hướng và phạm vi, có nguy cơ mất mát
  • Không thể xử lý chu kỳ tổng hợp, dễ phát ra tín hiệu sai
  • Hồ sơ hỗ trợ đánh giá không ổn định, có thể gây hiểu nhầm

Có thể xem xét kết hợp các chỉ số xu hướng như MACD phán đoán, sau đó tạo tín hiệu; áp dụng hệ thống đa kết hợp đồng tuyến, tăng sự ổn định; hoặc thêm các chiến lược kiểm soát rủi ro dừng lỗ.

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

  • Tăng cường các chỉ số động lực để đánh giá xu hướng mạnh mẽ
  • Xem xét hệ thống đa phương tiện, như đa phương tiện Gold Cross
  • Tăng kênh và chỉ số biến động để đánh giá khoảng cách.
  • Tối ưu hóa tham số, tìm kiếm kết hợp chu kỳ tốt nhất
  • Tham gia chiến lược dừng lỗ để kiểm soát tổn thất đơn lẻ

Tóm tắt

Chiến lược cân bằng một mắt nói chung là đơn giản và trực tiếp, phù hợp với người mới bắt đầu, hiểu xu hướng thông qua đường trung bình; đồng thời có thể thực hiện nhiều chỉ số kết hợp, hiệu quả hệ thống phong phú. Tuy nhiên, hiệu quả thực tế của chiến lược này vẫn chưa được xác minh, vẫn cần kiểm tra tối ưu hóa liên tục để sử dụng trong giao dịch thực tế.

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