Chiến lược Ichimoku Balance Line là một chiến lược theo xu hướng xác định hướng xu hướng bằng cách tính trung bình động kết hợp với chỉ số Ichimoku Kinko Hyo cho giao dịch xu hướng rủi ro thấp.
Chiến lược này chủ yếu sử dụng chỉ số Ichimoku Kinko Hyo để xác định hướng xu hướng. Ichimoku Kinko Hyo, còn được gọi là
Chiến lược này kết hợp mối quan hệ giá với đường trung bình động để xác định hướng xu hướng. Nó tạo ra tín hiệu mua khi giá vượt qua đường cơ sở và đường chuyển đổi. Một tín hiệu bán được tạo ra khi giá phá vỡ dưới đám mây. Sự kết hợp này giúp lọc các đột phá sai và khóa hướng xu hướng.
Chiến lược có thể được tối ưu hóa theo nhiều cách:
Tóm lại, Chiến lược đường cân Ichimoku sử dụng đám mây Ichimoku để xác định hướng xu hướng, khóa xu hướng hiệu quả và tạo ra các tín hiệu giao dịch bằng cách kết hợp mối quan hệ giá với đường trung bình động, cho phép giao dịch xu hướng rủi ro thấp. Chiến lược có thể được điều chỉnh cho các môi trường thị trường khác nhau thông qua điều chỉnh và tối ưu hóa các tham số, làm cho nó có giá trị cho các nhà đầu tư nghiên cứu và sử dụng.
/*backtest start: 2022-12-19 00:00:00 end: 2023-12-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Credit for the initial code to nathanhoffer - I simply added the ability to select a time period // strategy("Cloud Breakout", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Component Code Start /////////////// testStartYear = input(2016, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true Ten = input(18, minval=1, title="Tenkan") Kij = input(60, minval=1, title="Kijun") LeadSpan = input(30, 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") sc = input(true, title="Show Chikou") 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(sc and KS ? KS : na, title="Chikou", linewidth = 2, color = orange) p5 = plot(sc and Displace ? close: na, 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 Long_Breakout = (SpanA_Top ==1 and crossover(source, SpanAA)) or (SpanB_Top ==1 and crossover(source, SpanBB)) 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 Short_Breakout = (SpanA_Top ==1 and crossunder(source, SpanBB)) or (SpanB_Top ==1 and crossunder(source, SpanAA)) //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 Chikou_Above = close > Chikou Chikou_Below = close < Chikou long = (cross(TS, SpanA) or cross(TS, SpanB)) and TS>SpanA and TS>SpanB and TS>=KS short = cross(TS, KS) and KS >= TS if testPeriod() strategy.entry("long", strategy.long, when=Long_Breakout) strategy.entry("short", strategy.short, when=Short_Breakout)