Chiến lược biến động thích nghi các phần tử khối lượng hữu hạn

Tác giả:ChaoZhang, Ngày: 2023-10-17 14:50:13
Tags:

img

Tổng quan

Chiến lược này sử dụng phương pháp phần tử khối lượng hữu hạn kết hợp với các số liệu biến động thích nghi để xác định tín hiệu dài và ngắn, thuộc về các chiến lược theo xu hướng. Nó áp dụng cho tất cả các khung thời gian và có thể tự động điều chỉnh các tham số để thích nghi với các mức biến động khác nhau.

Nguyên tắc

Chiến lược đầu tiên tính toán giá trung bình cao và thấp, giá trung bình đóng của N thanh gần đây và giá trung bình cao, thấp và đóng của thanh trước. Sau đó nó tính toán lợi nhuận logarithmic Intra và Inter cho thanh hiện tại và thanh trước. Trong khi đó, nó tính toán biến động Vintra và Vinter của Intra và Inter.

Dựa trên mức độ biến động và các tham số có thể điều chỉnh, hệ số cắt giảm thích nghi CutOff được xác định. Khi thay đổi giá vượt quá CutOff, các tín hiệu dài hoặc ngắn được tạo ra. Cụ thể, nó tính toán sự khác biệt MF giữa giá đóng hiện tại và mức giá trung bình của giá cao và thấp. Khi MF lớn hơn CutOff, đó là tín hiệu dài. Khi MF nhỏ hơn CutOff âm, đó là tín hiệu ngắn.

Cuối cùng theo các tín hiệu, dòng tiền được tính toán, phát ra tín hiệu vị trí pos và vẽ đường cong FVE của Finite Volume Element.

Ưu điểm

  1. Các thông số thích nghi, áp dụng cho các khung thời gian và mức độ biến động khác nhau mà không cần điều chỉnh bằng tay.

  2. Chụp chính xác các thay đổi xu hướng của giá.

  3. Đường cong FVE phản ánh rõ ràng sự so sánh giữa các lực dài và ngắn.

  4. Cơ sở lý thuyết vững chắc của phân tích dòng tiền, tín hiệu tương đối đáng tin cậy.

Rủi ro

  1. Có thể tạo ra nhiều tín hiệu sai trong khi thị trường biến động mạnh mẽ.

  2. Không thể xử lý khoảng cách giá cả. Có thể xem xét kết hợp các chỉ số khác.

  3. Các tín hiệu dòng tiền có thể khác với phân tích kỹ thuật đôi khi.

Tối ưu hóa

  1. Có thể kiểm tra tác động của các giá trị N khác nhau. Nói chung N lớn hơn có thể lọc tiếng ồn.

  2. Có thể thử nghiệm các kết hợp khác nhau của Cintra và Cinter để tìm các thông số tối ưu.

  3. Có thể kết hợp với các chỉ số khác như MACD để cải thiện độ bền.

  4. Có thể xây dựng các cơ chế dừng lỗ để kiểm soát lỗ giao dịch duy nhất.

Kết luận

Nhìn chung, chiến lược này khá đáng tin cậy với các nguyên tắc vững chắc. Nó có thể phục vụ như một thành phần của các chiến lược theo xu hướng, và hoạt động tốt hơn khi kết hợp đúng với những người khác.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/08/2017
// This is another version of FVE indicator that we have posted earlier 
// in this forum.
// This version has an important enhancement to the previous one that`s 
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra 
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate 
// price changes in minute charts and underestimate corresponding changes in 
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to 
// all time frames automatically.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Volatility Finite Volume Elements", shorttitle="FVI")
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1, step=0.1)
Cinter = input(0.1, step=0.1)
reverse = input(false, title="Trade reverse")
xhl2 = hl2
xhlc3 = hlc3
xClose = close
xIntra = log(high) - log(low)
xInter = log(xhlc3) - log(xhlc3[1])
xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
xStDevInter = stdev(sma(xInter, Samples) , Samples)
xVolume = volume
TP = xhlc3
TP1 = xhlc3[1]
Intra = xIntra
Vintra = xStDevIntra
Inter = xInter
Vinter = xStDevInter
CutOff = Cintra * Vintra + Cinter * Vinter
MF = xClose - xhl2 + TP - TP1
FveFactor = iff(MF > CutOff * xClose, 1, 
             iff(MF < -1 * CutOff * xClose, -1,  0))
xVolumePlusMinus = xVolume * FveFactor
Fvesum = sum(xVolumePlusMinus, Samples)
VolSum = sum(xVolume, Samples)
xFVE = (Fvesum / VolSum) * 100
xEMAFVE = ema(xFVE, Perma)
pos = iff(xFVE > xEMAFVE, 1,
	   iff(xFVE < xEMAFVE, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xFVE, color=green, title="FVI")
plot(xEMAFVE, color=blue, title="FVI EMA")

Thêm nữa