Đây là một chiến lược giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch giao dịch.
Chiến lược chủ yếu dựa trên phương pháp phân tích kỹ thuật chứng khoán Nhật Bản được gọi là Ichimoku Kinko Hyo, sử dụng nhiều đường trung bình động như đường TENKAN và KIJUN để xác định hướng xu hướng thị trường.
Đầu tiên, đường TENKAN là đường 9 ngày đại diện cho xu hướng ngắn hạn; đường KIJUN là đường 26 ngày đại diện cho xu hướng trung hạn. Khi đường TENKAN vượt qua trên đường KIJUN, một tín hiệu mua được tạo ra. Khi đường TENKAN giảm xuống dưới đường KIJUN, một tín hiệu bán được tạo ra. Điều này tạo thành chiến lược đường chéo vàng và đường chéo chết cổ điển.
Thứ hai, chiến lược cũng giới thiệu đường Senkou Span A (SSA) và đường Senkou Span B (SSB). Đường SSA là mức trung bình của đường TENKAN và KIJUN trong khi đường SSB là mức trung bình động 52 ngày.
Cuối cùng, để lọc các tín hiệu giả, chiến lược này cũng kiểm tra vị trí giá so với Chikou Span (giá đóng bị trì hoãn 26 ngày)
Đây là một chiến lược trung bình động rất điển hình.
Sử dụng hai đường trung bình động của các giai đoạn khác nhau có hiệu quả đánh giá hướng xu hướng ngắn hạn và trung hạn đồng thời.
Xu hướng dài hạn được xác định với các dải Kumo để tránh mua trong thị trường giảm dài hạn.
So sánh giá với đường Chikou bị trì hoãn lọc ra rất nhiều tín hiệu giả và giảm các giao dịch không cần thiết.
Bằng cách sử dụng kỹ năng các chức năng khác nhau của đường trung bình động, chiến lược này có thể theo dõi xu hướng trên các khung thời gian ngắn, trung bình và dài.
Những rủi ro chính của chiến lược này bao gồm:
Các chiến lược trung bình động có xu hướng tạo ra nhiều tín hiệu giả.
Chiến lược này tập trung rất nhiều vào các tín hiệu kỹ thuật mà không xem xét các yếu tố cơ bản.
Không có cơ chế dừng lỗ được bao gồm. Một khi đánh giá hướng thị trường sai, thua lỗ có thể tích lũy.
Do đó, chúng ta cần các hệ thống trung bình động tiên tiến hơn, các quy tắc dừng lỗ thích hợp hoặc các tín hiệu cơ bản bổ sung, để tinh chỉnh thêm chiến lược này và giảm rủi ro.
Chiến lược này cũng có thể được cải thiện trong các khía cạnh sau:
Tìm kiếm các bộ tham số ổn định và hiệu quả hơn thông qua nhiều backtests.
Thêm các quy tắc dừng lỗ.
bổ sung các tín hiệu cơ bản như sửa đổi ước tính lợi nhuận có chứa thông tin chi tiết về triển vọng của công ty.
Tối ưu hóa chiến lược so sánh giá dòng Chikou với các giải pháp ổn định hơn.
Bao gồm các tín hiệu lựa chọn cổ phiếu. Các yếu tố điểm như tỷ lệ PE và ROE có thể lọc các cổ phiếu chất lượng thấp hơn.
Đây là một chiến lược trung bình động rất điển hình và thực tế. Bằng cách đồng thời theo dõi xu hướng ngắn, trung bình và dài hạn, sử dụng các chức năng khác nhau của trung bình động, nó tạo ra các tín hiệu giao dịch với hiệu suất vững chắc. Chúng ta có thể cải thiện thêm bằng cách điều chỉnh tham số, thêm dừng lỗ, lựa chọn cổ phiếu vv. Nhìn chung đây là một chiến lược định lượng đầy hứa hẹn xứng đáng nghiên cứu và theo dõi.
/*backtest start: 2022-11-28 00:00:00 end: 2023-12-04 00:00:00 period: 1d basePeriod: 1h 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/ // © mdeous //@version=4 strategy( title="Ichimoku Kinko Hyo Strategy", shorttitle="Ichimoku Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency="USD", commission_type=strategy.commission.percent, commission_value=0.0 ) // // SETTINGS // // Ichimoku int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1) int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1) int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1) int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1) // Strategy int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1) bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false) // // HELPERS // color _red = color.red color _blue = color.blue color _lime = color.lime color _fuchsia = color.fuchsia color _silver = color.silver color _aqua = color.aqua f_donchian(_len) => avg(lowest(_len), highest(_len)) // // ICHIMOKU INDICATOR // float tenkan = f_donchian(TENKAN_LEN) float kijun = f_donchian(KIJUN_LEN) float ssa = avg(tenkan, kijun) float ssb = f_donchian(SSB_LEN) plot(tenkan, title="Tenkan", color=_silver) plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua) _ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime) _ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red) fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90) // // STRATEGY // // Check if price is "above or below" Chikou (i.e. historic price line): // This detection is highly imperfect, as it can only know what Chikou position // was 2*offset candles in the past, therefore if Chikou crossed the price // line in the last 2*offset periods it won't be detected. // Use of this detection is disabled by default, float _chikou_val = close[OFFSET*2+1] float _last_val = close[OFFSET+1] bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true // Identify short-term trend with Tenkan bool _above_tenkan = min(open, close) > tenkan bool _below_tenkan = max(open, close) < tenkan // Check price position compared to Kumo bool _above_kumo = min(open, close) > ssa bool _below_kumo = max(open, close) < ssb // Check if Kumo is bullish or bearish bool bullish_kumo = ssa > ssb bool bearish_kumo = ssa < ssb // Correlate indicators to confirm the trend bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo // Build signals bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist bool go_long = below_chikou and (bullish_trend and (buy1 or buy2)) bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2)) // // COOLDOWN // f_cooldown() => _cd_needed = false for i = 1 to COOLDOWN by 1 if go_long[i] _cd_needed := true break _cd_needed go_long := f_cooldown() ? false : go_long // // ORDERS // strategy.entry("buy", strategy.long, when=go_long) strategy.close_all(when=exit_long) // // ALERTS // alertcondition( condition=go_long, title="Buy Signal", message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})." ) alertcondition( condition=exit_long, title="Sell Signal", message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})." )