Chiến lược này kết hợp biểu đồ đám mây Ichimoku với các chỉ số phụ khác nhau để theo dõi xu hướng. Nó chủ yếu sử dụng đám mây Ichimoku để xác định hướng xu hướng và MACD, CMF, TSI và các chỉ số khác để lọc để cải thiện chất lượng tín hiệu. Đây là một chiến lược xu hướng mạnh dựa trên các phán đoán toàn diện của nhiều yếu tố.
Chiến lược này chủ yếu sử dụng chuyển đổi của đám mây Ichimoku để đánh giá hướng xu hướng. Nó đi dài khi Tenkan-sen vượt qua trên đám mây và đi ngắn khi Tenkan-sen vượt qua bên dưới. Trong khi đó, nó sử dụng Chikou Span, biểu đồ MACD, CMF và TSI để lọc nhiều lớp để đảm bảo chất lượng tín hiệu.
Cụ thể, tín hiệu dài được kích hoạt khi:
Tín hiệu ngắn được kích hoạt khi các điều kiện trên được đảo ngược. Bằng các tiêu chí toàn diện như vậy, hầu hết các tín hiệu sai có thể được lọc ra và các xu hướng chính trên thị trường được nắm bắt.
Ưu điểm lớn nhất của chiến lược này là lọc ra các tín hiệu sai và bắt được xu hướng mạnh bằng cách kết hợp nhiều chỉ số.
Thông qua những phán đoán như vậy, chiến lược có thể xác định hiệu quả các lĩnh vực nóng trung dài hạn và lợi nhuận từ giao dịch xu hướng.
Những rủi ro chính của chiến lược này bao gồm:
Giải pháp:
Các hướng tối ưu hóa chính:
Tối ưu hóa tham số thông qua nhiều backtests hơn để tìm kết hợp tham số tốt hơn
Thêm cơ chế dừng lỗ để kiểm soát rủi ro
Thêm dừng lỗ để khóa lợi nhuận
Kiểm tra nhiều chỉ số hơn để tìm kết hợp bộ lọc tốt hơn
Thêm các quy tắc để phân biệt thoát thực sự
Chiến lược này kết hợp hiệu quả đám mây Ichimoku và nhiều chỉ số phụ trợ. Các cải tiến hơn nữa về tối ưu hóa tham số, cơ chế dừng lỗ, lựa chọn chỉ số có thể tăng cường tính ổn định và chất lượng tín hiệu để có lợi nhuận ổn định cao hơn. Chiến lược có giá trị thực tế mạnh mẽ.
/*backtest start: 2024-01-11 00:00:00 end: 2024-01-13 14:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0) //Inputs ts_bars = input(10, minval=1, title="Tenkan-Sen Bars") ks_bars = input(30, minval=1, title="Kijun-Sen Bars") ssb_bars = input(52, minval=1, title="Senkou-Span B Bars") cs_offset = input(26, minval=1, title="Chikou-Span Offset") ss_offset = input(26, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") middle(len) => avg(lowest(len), highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = avg(tenkan, kijun) senkouB = middle(ssb_bars) ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1]) ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1]) // Entry/Exit Signals fast_length = input(title="Fast Length", type=input.integer, defval=17) slow_length = input(title="Slow Length", type=input.integer, defval=28) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true) // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = mom(close, cs_offset-1) > 0 cs_cross_bear = mom(close, cs_offset-1) < 0 price_above_kumo = close > ss_high price_below_kumo = close < ss_low //CMF lengthA = input(8, minval=1, title="CMF Length") ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthA) / sum(volume, lengthA) //TSI long = input(title="Long Length", type=input.integer, defval=8) short = input(title="Short Length", type=input.integer, defval=8) price = close double_smooth(src, long, short) => fist_smooth = ema(src, long) ema(fist_smooth, short) pc = change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0 bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0 and mf < -0.1 and tsi_value < 0 strategy.entry("Long", strategy.long, when=bullish and long_entry) strategy.entry("Short", strategy.short, when=bearish and short_entry) strategy.close("Long", when=bearish and not short_entry) strategy.close("Short", when=bullish and not long_entry)