Chiến lược này là một hệ thống pullback được thiết kế cho các chứng khoán có biến động cao, vì vậy tự nhiên Bitcoin là một lựa chọn tuyệt vời để giao dịch. Điều này có thể được sử dụng trên biểu đồ hàng ngày hoặc trên khung thời gian thấp hơn (tôi tìm thấy kết quả tốt trên khung thời gian 3 giờ nhưng chưa thử nghiệm nó trên bất cứ thứ gì dưới 1 giờ).
Chiến lược tính toán biến động bằng cách so sánh sự thay đổi giá đóng của 2 ngọn nến trước đó, và sử dụng sự thay đổi giá này để tạo ra một đường trung bình động. Một dải được bọc xung quanh đường trung bình động với độ lệch chuẩn 1 cho dải bên trong và 2 cho dải bên ngoài. Nếu giá trên một bộ lọc MA (trung bình động) đã được đặt trước thì nó được xác định chúng ta đang trong xu hướng tăng nên chiến lược sẽ phát ra tín hiệu khi chúng ta đang trong xu hướng tăng và có một pullback gây ra dải lệch bên trong thấp hơn tăng, nhưng nếu giá tiếp tục và giảm qua dải lệch bên ngoài thì một tín hiệu mua sẽ không phát ra vì vấn đề này gây bất lợi cho sự gia tăng biến động quá lớn. Bạn có thể thấy sự gia tăng
Người dùng có thể thay đổi phạm vi ngày mà họ muốn kiểm tra, khoảng thời gian trung bình chuyển động để theo dõi biến động và sai lệch dải bên trong và bên ngoài. Trên BTC, tôi đã để lại các dải lệch bên trong và sai lệch bên ngoài trên các thiết lập tiêu chuẩn nhưng thấy việc theo dõi biến động 3 giai đoạn là tốt cho giao dịch biểu đồ 1 ngày và theo dõi biến động 5 giai đoạn là tốt cho biểu đồ 3 giờ. Vì đây không phải là một chiến lược mua và giữ, vì vậy để giao dịch, bạn có thể muốn gắn bó với các đồng xu lỏng nhất để bạn có thể vào và ra rất nhanh trên bất kỳ sàn giao dịch nào. Nếu bạn muốn thử điều này trên các thị trường ít biến động hơn thì thay đổi dải lệch bên trong ~ 0.75 sẽ hoạt động ổn trong các thị trường tương lai khác nhau. Lượng lợi nhuận và dừng lỗ dựa trên nhiều phạm vi giao dịch nhìn lại 7 nến qua.
Phương pháp giảm thiểu rủi ro:
Chọn cơ sở biến động thích hợp, kiểm soát kích thước vị trí.
Tối ưu hóa các thông số để giảm giao dịch không hiệu quả.
Dùng stop loss và take profit, quản lý tiền chặt chẽ.
Tập trung vào hiệu quả thực hiện, chọn các cơ sở chất lỏng.
Điều chỉnh các tham số để phù hợp với các đặc điểm cơ bản khác nhau.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa thời gian trung bình động để theo dõi tốt hơn sự biến động của các chứng khoán cơ bản khác nhau.
Điều chỉnh các thông số dải biến động để phù hợp hơn với phạm vi biến động cụ thể của chứng khoán cơ bản.
Thêm các bộ lọc khác như tăng âm lượng để xác nhận tín hiệu hơn nữa.
Sử dụng các kỹ thuật học máy để tối ưu hóa các thông số cho khả năng thích nghi.
Kiểm tra trên khung thời gian tần số cao hơn để nắm bắt nhiều cơ hội giao dịch hơn.
Thêm theo dõi dừng lỗ / lấy lợi nhuận để khóa lợi nhuận nhiều hơn.
Kết hợp với các chỉ số hoặc mô hình khác để xây dựng các chiến lược danh mục đầu tư định lượng.
Chiến lược tổng thể khá đơn giản và trực quan, xác định sự đảo ngược thông qua chỉ số biến động để nắm bắt các điểm chuyển hướng của thị trường. Có không gian tối ưu hóa lớn bằng cách điều chỉnh các tham số và kết hợp các chỉ số kỹ thuật khác để tăng cường sự ổn định và lợi nhuận hơn nữa. Tuy nhiên, các nhà giao dịch cần phải nhận thức được các vấn đề quá phù hợp và phù hợp đường cong. Chiến lược này phù hợp hơn với giao dịch ngắn hạn, đòi hỏi quản lý tiền tệ nghiêm ngặt để kiểm soát rủi ro. Nếu nắm vững đúng cách, nó có thể trở thành một công cụ mạnh mẽ để giao dịch tiền điện tử biến động cao.
/*backtest start: 2023-09-11 00:00:00 end: 2023-10-11 00:00:00 period: 4h basePeriod: 15m 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/ // © gary_trades //This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC). //It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest. //@version=4 strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100) //VOLATILTY CandleChange = ((close - close[1])/close)*100 //OR CandleChange = ((close[2] - close[1])/close)*100 plot(CandleChange, color=color.red, linewidth = 1) //VOLATILITY BANDS MAlen = input(7, minval=3, maxval=30, title=" MA Length") MAout = sma(CandleChange, MAlen) plot(MAout, color=color.black, display=display.none) InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band") OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band") devInner = InnerBand * stdev(CandleChange, MAlen) devOuter = OuterBand * stdev(CandleChange, MAlen) upper1 = MAout + devInner lower1 = MAout - devInner b1 = plot(upper1, "Upper Inner", color=color.gray) b2 = plot(lower1, "Lower Inner", color=color.gray) upper2 = MAout + devOuter lower2 = MAout - devOuter b3 = plot(upper2, "Upper Outer", color=color.gray) b4 = plot(lower2, "Lower Outer", color=color.gray) fill(b1, b3, color.rgb(250,145,175,70), title="Background") fill(b2, b4, color.rgb(250,145,175,70), title="Background") band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2) band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2) //LONG FILTER VolFilterL = CandleChange <= lower1 and CandleChange > lower2 SMAFilterL = close[1] > sma(close[1], 50) PriceFilterL = close > lowest(close,7) LongFilter = VolFilterL and SMAFilterL and PriceFilterL bgcolor(LongFilter ? color.new(color.green, 80) : na) //SHORT FILTER VolFilterS = CandleChange >= upper1 and CandleChange < upper2 SMAFilterS = close[1] < sma(close[1], 50) PriceFilterS = close < highest(close,7) ShortFilter = VolFilterS and SMAFilterS and PriceFilterS bgcolor(ShortFilter ? color.new(color.red, 80) : na) //SETTING BACK TEST INPUTS fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2100, title = "To Year", minval = 1970) startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00) time_condition = time >= startDate and time <= finishDate //ORDER DETAILS Risk = (high[7] - low[7])/ 7 Profit = Risk*1.15 Loss = Risk*0.65 AlertMSG = "New stategy position" + tostring(strategy.position_size) if (time_condition) strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG) if (LongFilter) LongStop = strategy.position_avg_price - Loss LongProfit = strategy.position_avg_price + Profit strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit) if (time_condition) strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG) if (ShortFilter) ShortStop = strategy.position_avg_price + Loss ShortProfit = strategy.position_avg_price - Profit strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)