Chiến lược này sử dụng nhiều tín hiệu đám mây Ichimoku để thiết kế một chiến lược theo xu hướng thuần túy nhằm mục đích nắm bắt xu hướng trung và dài hạn, lọc ra sự hợp nhất và theo hướng xu hướng mạnh.
Chiến lược này chủ yếu sử dụng Tenkan-sen, Kijun-sen, Chikou Span và các chỉ số chính khác từ đám mây Ichimoku.
Tóm lại, logic cốt lõi là: xác nhận xu hướng trung dài hạn -> chờ các tín hiệu tiếp tục xu hướng mạnh -> nhập để theo xu hướng -> thoát với lệnh dừng lỗ.
Cụ thể, để xác định xu hướng trung dài hạn, nó sử dụng mối quan hệ giữa Span dẫn đầu và tụt hậu (trên Span dẫn đầu màu xanh lá cây báo hiệu xu hướng tăng và ngược lại). Sau khi xác nhận xu hướng lớn hơn, giao thoa giữa Tenkan-sen và Kijun-sen cùng với các tín hiệu đột phá giá được sử dụng để xác định sự nối lại xu hướng; sau khi vào, Kijun-sen được sử dụng như là dừng lỗ để ra khỏi.
Điều này lọc ra các sự củng cố ngắn hạn đến trung hạn và cho phép nắm bắt các xu hướng mạnh mẽ cho hiệu suất vượt trội nhất quán trên thị trường.
(1) Sử dụng đám mây Ichimoku để xác định hướng xu hướng trung dài là có lợi cho việc định vị các cạnh hướng chính.
(2) Sự chéo giữa Tenkan-sen/Kijun-sen và thay đổi mối quan hệ giá với đám mây cho phép lọc hiệu quả các sự hợp nhất và bắt kịp xu hướng mạnh mẽ.
(3) Cơ chế dừng lỗ cuối cùng cho phép lái xe xu hướng lớn trong khi cũng kiểm soát các tổn thất cô lập một cách hiệu quả.
(4) Kết hợp các tín hiệu Ichimoku khác nhau tạo ra một hệ thống mạnh mẽ theo xu hướng trơn tru.
(1) Rủi ro hệ thống của việc xác định sai xu hướng lớn hơn Nếu xu hướng lớn hơn được chẩn đoán sai, tất cả các hành động tiếp theo sẽ mang lại rủi ro sai hướng.
(2) Rủi ro từ thời gian nhập cảnh không được lựa chọn đúng.
(3) Rủi ro từ các điểm dừng được đặt quá chặt chẽ.
(4) Tần suất giao dịch cao dẫn đến chi phí giao dịch quá cao.
(1) Kiểm tra các kết hợp khác nhau của các khoảng thời gian đầu vào Ichimoku để tìm các thông số tối ưu.
(2) Tối ưu hóa các bộ lọc nhập để đảm bảo nhập chất lượng cao.
(3) Điều chỉnh khoảng cách dừng để cân bằng rủi ro-lợi ích.
(4) Thêm các mức mục tiêu lợi nhuận dựa trên khoảng cách giữa các chỉ số giá-chìa khóa để tạo ra các cơ chế thu lợi nhuận thích nghi.
Chiến lược theo xu hướng của Ichimoku Cloud này tổng hợp nhiều tín hiệu Ichimoku để chẩn đoán xu hướng, thời gian nhập và dừng theo dõi. Thực hành cho thấy nó có thể nắm bắt hiệu quả các xu hướng trung dài hạn, lọc các sự hợp nhất và đạt được hiệu suất vượt trội nhất quán. Tối ưu hóa và thử nghiệm trong tương lai có thể cải thiện hơn nữa hiệu suất để có lợi nhuận vượt trội.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2) //*************************** // INPUT BACKTEST RANGE * //*************************** FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2010, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2000) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true //*************** //* ICHIMOKU * //*************** //inizializzazione parametri,, tenkanPeriods = input(9, minval=1, title="Tenkan-Sen") kinjunPeriods = input(26, minval=1, title="Kinjun-Sen") senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B") displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A") //definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line) averageHighLow(period) => avg(lowest(period), highest(period)) tenkan= averageHighLow(tenkanPeriods) kinjun = averageHighLow(kinjunPeriods) senkouSpanA = avg(tenkan, kinjun) senkouSpanB = averageHighLow(senkouSpanBPeriods) //definisco il colore della kumo in base al trend. senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na span1plotU = senkouSpan1Above ? senkouSpanA : na span2plotU = senkouSpan1Above ? senkouSpanB : na span1plotD = senkouSpan2Below ? senkouSpanA : na span2plotD = senkouSpan2Below ? senkouSpanB : na col = senkouSpanA >= senkouSpanB ? lime : red //plots Ichimoku plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue) plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red) plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua) plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime) plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red) //Cloud Lines Plot p1 = plot(span1plotU ? span1plotU : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col) p2 = plot(span2plotU ? span2plotU : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p3 = plot(span1plotD ? span1plotD : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p4 = plot(span2plotD ? span2plotD : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) //Fills that color cloud based on Trend. fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)') fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)') //*********************************************** //* condizioni ingresso ed uscita mercato * //*********************************************** isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement])) isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement])) isChinkouSpanSopra = high[displacement]<close isChinkouSpanSotto = low[displacement]>close filtroLong=isSopraKumo and isChinkouSpanSopra filtroShort=isSottoKumo and isChinkouSpanSotto //rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and (close<kinjun) //Breackout Kumo isBreackoutKumoEntryLong = crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) isBreackoutKumoEntryShort = crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun) ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort isExitLong = close<kinjun isExitShort = close>kinjun //ingressi ed uscite Mercato strategy.entry ("Long",long=true, when = window() and ConditionEntryLong) strategy.entry ("Short",long=false, when = window() and ConditionEntryShort) strategy.close(id="Long", when=isExitLong) strategy.close(id="Short", when=isExitShort) strategy.close_all(when=not window())