Chiến lược này sử dụng chiều dài của thân nến để xác định hướng dài và ngắn. Nó tính toán chiều dài thân trung bình của 30 nến gần đây. Khi chiều dài thân nến tăng lớn hơn trung bình, nó sẽ dài. Khi chiều dài thân nến giảm lớn hơn trung bình, nó sẽ ngắn.
Chiến lược này đầu tiên tính toán chiều dài cơ thể của cây nến và chiều dài cơ thể trung bình của 30 cây nến gần đây.
Khi ngọn nến ngày hôm nay giảm (bar==-1) và chiều dài cơ thể lớn hơn chiều dài cơ thể trung bình, nó mở vị trí dài (lên 1).
Khi nến ngày hôm nay tăng (bar==1) và chiều dài cơ thể lớn hơn chiều dài cơ thể trung bình, nó mở vị trí ngắn (dn1).
Sau khi mở dài, nếu ngọn nến ngày hôm nay tăng (bar==1) và vị trí hiện tại có lợi nhuận, nó đóng vị trí dài.
Sau khi mở mua, nếu nến ngày hôm nay giảm (bar==-1) và vị trí hiện tại có lợi nhuận, nó đóng vị trí mua.
Chiến lược đơn giản và hiệu quả sử dụng chiều dài thân cây nến để xác định xu hướng thị trường. càng dài thân, xu hướng càng mạnh. vì vậy nó sử dụng chiều dài thân như tiêu chí cho dài và ngắn.
Những lợi thế của chiến lược này:
Lý thuyết đơn giản và rõ ràng, dễ hiểu và thực hiện.
Sử dụng chiều dài cơ thể nến để xác định xu hướng, tránh nhiễu nhiễu.
Sử dụng tính toán trung bình động, có thể thích nghi với những thay đổi của thị trường.
Thiết lập điều kiện thoát lợi nhuận để cải thiện lợi nhuận.
Các tham số có thể cấu hình, thích nghi với các môi trường thị trường khác nhau.
Những rủi ro của chiến lược này:
Cơ thể dài không nhất thiết phải là xu hướng mạnh, có thể là biến động bình thường.
Cửa sổ thời gian chiều dài cơ thể trung bình không đúng có thể bỏ lỡ cơ hội giao dịch.
Các sự kiện thiên nga đen có thể gây ra thiệt hại.
Giữ các vị trí quá lâu có thể làm tăng tổn thất.
Giải pháp:
Kết hợp với các chỉ số khác để xác định xu hướng, tránh giao dịch sai.
Kiểm tra các giá trị tham số khác nhau, tối ưu hóa tính toán chiều dài cơ thể trung bình.
Thiết lập stop loss để kiểm soát single loss.
Tối ưu hóa logic vào và ra để tránh giữ quá lâu.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Kết hợp MACD, RSI để xác định xu hướng, tránh các tín hiệu sai từ biến động bình thường.
Kiểm tra các thông số cửa sổ thời gian chiều dài cơ thể trung bình khác nhau để tìm ra các thông số tối ưu.
Thêm vị trí kích thước logic điều khiển, giảm dần kích thước vị trí khi gây ra tổn thất.
Đặt mục tiêu dừng lỗ hoặc lợi nhuận để kiểm soát tỷ lệ thua lỗ đơn.
Tối ưu hóa điều kiện nhập và xuất để tránh giao dịch không hiệu quả. Ví dụ, chờ 3 ngọn nến dài liên tiếp trước khi nhập.
Tránh giao dịch trong các khoảng thời gian nhất định hoặc xung quanh việc phát hành dữ liệu quan trọng để kiểm soát tổn thất do biến động.
Chiến lược có logic rõ ràng và dễ hiểu để so sánh thân nến với chiều dài trung bình của nó để thời gian nhập cảnh. Khoảng cách lớn để tối ưu hóa từ nhiều chiều để phù hợp hơn với môi trường thị trường khác nhau. Nhìn chung là một chiến lược giao dịch lượng giới thiệu đơn giản và đáng tin cậy phù hợp cho các nhà giao dịch mới bắt đầu sử dụng và học. Tiếp tục kết hợp nhiều chỉ số hơn và tối ưu hóa để cải thiện lợi nhuận và độ bền.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usebody = input(true, defval = true, title = "Use body") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Signals bar = close > open ? 1 : close < open ? - 1 : 0 body = abs(close - open) sbody = ema(body, 30) up1 = bar == -1 and (body > sbody or usebody == false) dn1 = bar == 1 and (body > sbody or usebody == false) plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0) exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus if up1 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if time > timestamp(toyear, tomonth, 31, 00, 00) or exit strategy.close_all()