Chiến lược này kết hợp chỉ số Bollinger Band và chỉ số khối lượng để xác định các cơ hội đột phá động lực mạnh trên dải trên Bollinger khi khối lượng giao dịch cao và nhập vào các vị trí dài. Nó cũng sử dụng các chỉ số trung bình động để xác định hướng xu hướng và giảm rủi ro giữ các vị trí chết.
Chiến lược này chủ yếu xem xét ba yếu tố: mức giá, động lực và xu hướng. Khi giá vượt qua dải trên Bollinger vào vùng mua, sự gia tăng khối lượng giao dịch cho thấy động lực mạnh và dòng vốn chảy vào. Đây là thời điểm phù hợp để vào vị trí dài. Sau đó nó sử dụng đường trung bình động để xác định xu hướng thị trường để tránh giữ các vị trí chết. Bằng cách kết hợp hành động giá, động lực và kiểm soát rủi ro, nó nhằm mục đích nắm bắt lợi nhuận từ xu hướng mạnh.
Nhóm lọc âm lượng, nó chỉ mua trên động lực thực sự mạnh, giảm rủi ro.
Có thể cắt giảm lỗ theo thời gian thông qua xác định xu hướng trung bình động, giảm lỗ nắm giữ.
Thực hiện chiến lược định lượng kết hợp nhiều chỉ số để ra quyết định.
Các cấu trúc mã rõ ràng, dễ đọc và duy trì.
Bollinger Bands có thể thất bại trong các biến động giá cực đoan, mất tín hiệu hoặc tạo ra tín hiệu sai.
Không có lợi nhuận khi tổng khối lượng giao dịch thấp.
Việc xác định xu hướng của trung bình động cũng có thể thất bại, không thể đảm bảo hoàn toàn mức dừng lỗ hiệu quả.
Việc điều chỉnh tham số không đúng cũng ảnh hưởng đến lợi nhuận của chiến lược. Ví dụ, cửa sổ thời gian giao dịch được đặt quá ngắn có thể bỏ lỡ sự đảo ngược xu hướng.
Thêm nhiều chỉ số kỹ thuật hơn để phân tích xu hướng và hỗ trợ / kháng cự tốt hơn, cải thiện dừng lỗ, ví dụ như các mô hình nến, kênh, mức hỗ trợ chính.
Thêm các mô hình học máy để đánh giá khả năng thoát thực sự, giảm tín hiệu sai. ví dụ: mô hình học sâu LSTM.
Tối ưu hóa các chiến lược quản lý vốn như kích thước vị trí năng động, dừng lỗ để giảm tác động tổn thất giao dịch duy nhất.
Kiểm tra nhiều sản phẩm và khung thời gian hơn, điều chỉnh các thông số như Bollinger Bands, cửa sổ khối lượng để cải thiện tính mạnh mẽ của chiến lược.
Chiến lược này tích hợp các chỉ số Bollinger Band và khối lượng giao dịch để xác định các cơ hội mua động lực mạnh mẽ, với đường trung bình động đảm bảo dừng lỗ hiệu quả. So với các chiến lược chỉ số duy nhất, nó có độ chính xác và khả năng kiểm soát rủi ro cao hơn. Với thiết kế mô-đun, bộ lọc xu hướng và cơ chế dừng lỗ, nó tạo thành một chiến lược giao dịch đột phá động lực dễ tối ưu hóa.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 1h 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/ // © KAIST291 //@version=4 initial_capital=1000 strategy("prototype", overlay=true) length1=input(1) length3=input(3) length7=input(7) length9=input(9) length14=input(14) length20=input(20) length60=input(60) length120=input(120) ma1= sma(close,length1) ma3= sma(close,length3) ma7= sma(close,length7) ma9= sma(close,length9) ma14=sma(close,length14) ma20=sma(close,length20) ma60=sma(close,length60) ma120=sma(close,length120) rsi=rsi(close,14) // BUYING VOLUME AND SELLING VOLUME // BV = iff( (high==low), 0, volume*(close-low)/(high-low)) SV = iff( (high==low), 0, volume*(high-close)/(high-low)) vol = iff(volume > 0, volume, 1) dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100) weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100) //----------------------------------------------------------- Davgvol = sma(volume, dailyLength) Wavgvol = sma(volume, weeklyLength) //----------------------------------------------------------- length = input(20, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50, title="StdDev") mult2= input(1.5, minval=0.001, maxval=50, title="exp") mult3= input(1.0, minval=0.001, maxval=50, title="exp1") mult4= input(2.5, minval=0.001, maxval=50, title="exp2") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev dev2= mult2 * stdev(src, length) Supper= basis + dev2 Slower= basis - dev2 dev3= mult3 * stdev(src, length) upper1= basis + dev3 lower1= basis - dev3 dev4= mult4 * stdev(src, length) upper2=basis + dev4 lower2=basis - dev4 offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) //---------------------------------------------------- exit=(close-strategy.position_avg_price / strategy.position_avg_price*100) bull=( BV>SV and BV>Davgvol) bull2=(BV>SV and BV>Davgvol) bux =(close>Supper and close>Slower and volume<Davgvol) bear=(SV>BV and SV>Davgvol) con=(BV>Wavgvol and rsi>80) imInATrade = strategy.position_size != 0 highestPriceAfterEntry = valuewhen(imInATrade, high, 0) // STRATEGY LONG // if (bull and close>upper1 and close>Supper and high>upper and rsi<80) strategy.entry("Long",strategy.long) if (strategy.position_avg_price*1.02<close) strategy.close("Long") else if (low<ma9 and strategy.position_avg_price<close) strategy.close("Long") else if (ma20>close and strategy.position_avg_price<close ) strategy.close("Long") else if (rsi>80 and strategy.position_avg_price<close) strategy.close("Long") else if (strategy.openprofit < strategy.position_avg_price*0.9-close) strategy.close("Long") else if (high<upper and strategy.position_avg_price<close) strategy.close("Long") ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// strategy.entry("Short",strategy.short,when=low<ma20 and low<lower1 and close<Slower and crossunder(ma60,ma120)) if (close<strategy.position_avg_price*0.98) strategy.close("Short") else if (rsi<20) strategy.close("Short")