Chiến lược này được thiết kế dựa trên chỉ số Keltner Channel của biểu đồ nến để theo dõi xu hướng bằng cách đánh giá sự đột phá giá của các dải kênh. Chiến lược này phù hợp với các vị trí nắm giữ trung hạn và có thể theo dõi hiệu quả xu hướng có tiềm năng lợi nhuận cao.
Lòng cốt của chiến lược này nằm trong việc xây dựng một Keltner Channel để đánh giá xu hướng giá và mức hỗ trợ / kháng cự tiềm năng. Cụ thể, nó đầu tiên tính toán đường EMA của các ngọn nến, sau đó thêm các dải trên và dưới ở khoảng cách keltnerDeviation nhân biến động ATR để xây dựng kênh Keltner. Khi giá vượt qua dải dưới, một vị trí dài được mở. Khi giá vượt qua dải trên, một vị trí ngắn được mở để theo xu hướng. Ngoài ra, chiến lược cũng cung cấp một tham số CloseOnEMATouch để kiểm soát có nên kiếm lợi nhuận khi giá chạm vào đường EMA.
Lý thuyết chính tập trung vào ba phần:
Xây dựng chỉ số kênh Keltner, bao gồm tính toán EMA, biến động ATR, dải trên và dưới.
Đánh giá các tín hiệu nhập cảnh dựa trên sự đột phá của các dải kênh, bao gồm cả việc đi dài khi giá vượt qua dải dưới và đi ngắn khi giá vượt qua dải trên.
Cung cấp tham số closeOnEMATouch để kiểm soát xem có nên lấy lợi nhuận khi giá chạm vào đường EMA.
Bằng cách kết hợp ba phần này, một chiến lược giao dịch theo xu hướng dựa trên các chỉ số kênh được thực hiện.
So với các chiến lược dừng lỗ chuyển động truyền thống, chiến lược này có những lợi thế chính sau:
Có thể theo dõi hiệu quả xu hướng thị trường và hướng chung.
Thời gian giữ tương đối dài trung hạn tránh giao dịch quá thường xuyên.
Bằng cách xem xét sự biến động, nó có một hiệu ứng lọc nhất định chống lại các điều kiện thị trường bất thường.
Cung cấp các cơ chế kiểm soát rủi ro thông qua dừng lỗ.
Do đó, chiến lược này rất phù hợp với các nhà giao dịch định lượng có đánh giá chính xác về xu hướng thị trường và theo đuổi việc sử dụng vốn cao.
Mặc dù có lợi thế, chiến lược này cũng phải đối mặt với một số rủi ro chính trong giao dịch thực tế:
Sự đảo ngược xu hướng đột ngột và bạo lực đặt ra rủi ro lớn nhất, có thể xâm nhập vào điểm dừng lỗ và gây ra tổn thất lớn.
Giá có thể dao động trong kênh và kích hoạt dừng lỗ nhiều lần.
Tần suất giao dịch cao có thể dẫn đến tác động nghiêm trọng đến lợi nhuận từ chi phí giao dịch và trượt.
Để kiểm soát những rủi ro này, chúng ta có thể điều chỉnh các tham số để làm cho phạm vi kênh hợp lý hơn, chọn các sản phẩm có biến động giá nhỏ hơn, hoặc mở rộng khoảng cách dừng lỗ một cách thích hợp.
Xem xét các rủi ro tiềm ẩn, chúng ta có thể tối ưu hóa thêm chiến lược trong các khía cạnh sau:
Tăng sự đa dạng của các phương pháp dừng lỗ. Hiện tại chỉ có phương pháp closeOnEMATouch được cung cấp. Chúng tôi có thể giới thiệu nhiều chỉ số dừng lỗ phụ để kiểm soát rủi ro toàn diện và đa chiều hơn.
Tối ưu hóa cài đặt tham số. Các phương pháp tự động hơn có thể được giới thiệu để tối ưu hóa các tham số để làm cho cài đặt Keltner Channel thông minh hơn và thích nghi hơn.
Bằng cách giới thiệu các mô-đun quản lý vốn, chúng ta có thể điều chỉnh các vị trí dựa trên rút tiền hoặc biến động thị trường.
Thêm các điều kiện lọc. Nhiều bộ lọc phụ trợ có thể được đặt trên cả hai đầu vào và dừng mất mát để tránh mất mát không cần thiết do tín hiệu sai.
Tóm lại, đây là một chiến lược theo xu hướng trung hạn điển hình dựa trên các chỉ số kênh. So với các chiến lược dừng lỗ di chuyển đơn giản, nó cung cấp một chức năng điều chỉnh rủi ro nhất định thông qua các yếu tố biến động và có thể theo dõi hiệu quả xu hướng để kiếm lợi nhuận. Tuy nhiên, rủi ro đảo ngược và dao động vẫn cần phải được theo dõi trong giao dịch trực tiếp. Tối ưu hóa tham số, mở rộng các phương pháp dừng lỗ và thêm các điều kiện lọc có thể giúp cải thiện thêm chiến lược.
/*backtest start: 2022-11-21 00:00:00 end: 2023-11-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true) price = open // build Keltner keltnerLength = input(defval=20, minval=1, title="Keltner EMA Period Length") keltnerDeviation = input(defval=2, minval=1, maxval=5, title="Keltner band width (in ATRs)") closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)") EMA = sma(price, keltnerLength) ATR = atr(keltnerLength) top = EMA + ATR * keltnerDeviation bottom = EMA - ATR * keltnerDeviation buyEntry = crossover(price, bottom) sellEntry = crossunder(price, top) plot(EMA, color=aqua,title="EMA") p1 = plot(top, color=silver,title="Keltner top") p2 = plot(bottom, color=silver,title="Keltner bottom") fill(p1, p2) if ( crossover(price, bottom)) strategy.entry("BUY", strategy.long, stop=bottom, comment="BUY") if( crossover(price,EMA) and closeOnEMATouch ) strategy.close("BUY") if ( crossunder(price, top)) strategy.entry("SELL", strategy.short, stop=top, comment="SELL") if( crossunder(price, EMA) and closeOnEMATouch ) strategy.close("SELL")