Chiến lược này đo thời gian giá ở lại trong các vùng khác nhau để xác định các khu vực ma sát thấp và giao dịch đột phá trong các khu vực này.
Tính toán tỷ lệ giá tồn tại xung quanh mức hiện tại trong N giai đoạn trước như ma sát giá.
Xác định xem giá có đi vào các vùng ma sát thấp với thời gian tồn tại tối thiểu gần đây không.
Sử dụng MA cân nhắc nhanh để xác định hướng xu hướng gần đây.
Lấy lợi nhuận khi giá lại vào vùng ma sát cao dự đoán sự đảo ngược xu hướng.
Các tham số có thể tùy chỉnh bao gồm sự quay lại ma sát, khu vực thoát ra vv
Sự ma sát giá tránh các thị trường khác nhau và tìm thấy các khu vực bùng phát xu hướng.
MA nhanh kết hợp với ma sát để xác định hướng.
Hình ảnh trực quan hiển thị mức độ ma sát giá.
Các thông số mặc định được tối ưu hóa cho giao dịch tần số cao tiền điện tử.
Logic đơn giản và rõ ràng dễ hiểu và tùy chỉnh.
Sự ma sát giá không thể dự đoán đầy đủ các động thái trong tương lai.
MA nhanh có thể tạo ra thời gian không chính xác.
Không hiệu quả trong và ra khỏi giao dịch.
Tối ưu hóa có nguy cơ quá phù hợp.
Các thông số cố định có thể hoạt động kém hơn ở các thị trường biến động.
Kiểm tra các khoảng thời gian khác nhau để tính toán ma sát giá.
Đánh giá các loại MA khác nhau để xác định xu hướng gần đây.
Tối ưu hóa các thông số khu vực thoát hiểm để tăng sự ổn định.
Thêm stop loss và take profit để quản lý rủi ro.
Xem xét các thông số năng động để thích nghi với thị trường thay đổi.
Kiểm tra lại trên nhiều biểu tượng và khung thời gian.
Chiến lược này giao dịch các vùng ma sát giá có tiềm năng đột phá có khả năng cao, với ưu và nhược điểm.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //made for 30m chart with BTCUSD or other cryptocurrency strategy("LUBE",overlay=false ) friction=0.0 barsback=input(500,"bars back to measure friction",step=100) flevel=input(50,"0-100 friction level to stop trade",step=2) tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2) fl=flevel/100 tl=tlevel/100 for i = 1 to barsback friction := if high[i] >= close and low[i] <= close friction+(1+barsback)/(i+barsback) else friction range=input(100,"bars back to measure lowest friction",step=10) lowf = lowest(friction,range) highf = highest(friction,range) midf = (lowf*(1-fl)+highf*fl) lowf2 = (lowf*(1-tl)+highf*tl) plot(friction) m=plot(midf[5],color=color.red) l=plot(lowf2[5],color=color.white) h=plot(highf[5],color=color.white) fill(l,h,color.white) src = input(title="Source", type=input.source, defval=close) //FIR Filter _fir(src) => (4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10 fir = _fir(src) trend = fir > fir[1]? 1:-1 //bgcolor(trend==1?color.lime:color.red,transp=50) long=friction<lowf2[5] and trend == 1 short=friction<lowf2[5] and trend == -1 end=friction > midf[5] keeplong=0 keeplong:=long?1:nz(keeplong[1]) keeplong:=short or end?0:keeplong keepshort=0 keepshort:=short?1:nz(keepshort[1]) keepshort:=long or end?0:keepshort bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50) leverage=input(2,"leverage",step=.5) enableshort=input(true,"enable shorts?") barcount=0 barcount:=nz(barcount[1])+1 contracts=min(max(.000001,(strategy.equity/close)*leverage),50000) strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts) strategy.close("Long",when=short or end ) strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts) strategy.close("Short",when=(long or end) and enableshort==true) alertcondition(keeplong==1 and keeplong[1]==0,"LONG") alertcondition(keepshort==1 and keepshort[1]==0,"SHORT") alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")