
Chiến lược này kết hợp với chỉ số giá VFI và đường trung bình di chuyển để xây dựng xu hướng, và kết hợp với chỉ số Brin để xác định sự kiện đảo ngược, để thực hiện sự kết hợp hữu cơ giữa giao dịch xu hướng và giao dịch chấn động.
Chiến lược này bao gồm:
Chỉ số VFI đánh giá xu hướng. Kết hợp tỷ lệ biến đổi đối số của giá điển hình và biến đổi khối lượng giao dịch để đánh giá xu hướng giá, để đạt được sự phù hợp hợp với giá cả.
Chỉ số chênh lệch EMA đánh giá xu hướng. Tính tỷ lệ chênh lệch giữa đường 20 và đường 50 để đánh giá xu hướng xu hướng đường dài.
Chỉ số Blink đánh giá ngược lại. Blink là đường trung bình di chuyển đơn giản 20 ngày, và băng thông là đường trung bình 1,5 lần.
Chỉ số VFI đánh giá mức độ đảo ngược. Các giá trị VFI gần giới hạn trên và dưới (,20) cho rằng xu hướng đảo ngược có khả năng cao hơn.
Trong trường hợp thỏa mãn các điều kiện của thời gian giao dịch, khi giá phá vỡ đường dây Bollin lên đường và chỉ số chênh lệch VFI, EMA đồng hướng lạc quan, làm nhiều; khi giá rơi xuống đường dây Bollin xuống đường hoặc VFI đạt đến một mức giá thấp.
Việc đưa ra chỉ số VFI giúp cho sự phù hợp của quan hệ giá trị và số lượng hợp lý hơn, tránh theo dõi mù quáng giá cả.
Sự phân biệt giá trị của EMA kết hợp với VFI làm cho sự phân biệt xu hướng ổn định và đáng tin cậy hơn.
Blinking được kết hợp với phán đoán đảo ngược của chỉ số VFI, làm cho chiến lược phù hợp hơn với biến động hai chiều của thị trường.
Các chỉ số giá cả không hoàn toàn tránh được nguy cơ phá vỡ giả.
Mức chênh lệch EMA bị chậm trễ và không thể phản ứng kịp thời với các biến động ngắn hạn.
Thiết lập không đúng các tham số Brin có thể dẫn đến rủi ro giao dịch thường xuyên hoặc captured market.
Giải pháp đối phó với rủi ro:
Kết hợp nhiều chỉ số để đánh giá xu hướng, tránh sự phụ thuộc vào chỉ số đơn lẻ.
Các tham số EMA không nên quá lớn hoặc quá nhỏ, điều chỉnh tham số thích hợp.
Kiểm tra tác động của thay đổi tham số của Brin trong các trường hợp thị trường khác nhau.
Tiếp tục tối ưu hóa các tham số VFI để làm cho nó nhạy cảm hơn.
Thêm các đánh giá đột phá dựa trên kênh giá hoặc chỉ số Envelopes.
Thử nghiệm thêm các chỉ số giá cả như OBV, PVT.
Giới thiệu công nghệ học máy và AI để tối ưu hóa động của tham số.
Chiến lược tổng hợp xem xét phán đoán xu hướng và phán đoán đảo ngược, sử dụng chỉ số VFI, chênh lệch EMA và đai Brin, để nắm bắt biến động hai chiều của thị trường. Bước tiếp theo sẽ tiếp tục tối ưu hóa cài đặt tham số, làm phong phú cơ sở phán đoán, mở rộng phạm vi áp dụng, nâng cao lợi nhuận ổn định của chiến lược.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 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/
// © beststockalert
//@version=4
strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true)
source = close
length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)
// session
pre = input( type=input.session, defval="0400-0935")
trade_session = input( type=input.session, defval="0945-1700")
use_trade_session = true
isinsession = use_trade_session ? not na(time('1', trade_session)) : true
is_newbar(sess) =>
t = time("D", sess)
not na(t) and (na(t[1]) or t > t[1])
is_session(sess) =>
not na(time(timeframe.period, sess))
preNew = is_newbar(pre)
preSession = is_session(pre)
float preLow = na
preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1]
float preHigh = na
preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1]
// vfi 9lazybear
ma(x,y) => 0 ? sma(x,y) : x
typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )
vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
//ema diff
ema20 = ema(close,20)
ema50 = ema(close,50)
diff = (ema20-ema50)*100/ema20
ediff = ema(diff,20)
//
basis = sma(source, 20)
dev = 1.5 * stdev(source, 20)
upper = basis + dev
lower = basis - dev
ema9 = ema(source, 9)
if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) ))
strategy.entry("Long", strategy.long)
if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) )
strategy.close("Long")