Nến trung bình Fibonacci với chiến lược trung bình động cho giao dịch định lượng

Tác giả:ChaoZhang, Ngày: 2024-01-19 14:36:45
Tags:

img

Tổng quan

Chiến lược này xây dựng nến trung bình và trung bình động dựa trên chuỗi Fibonacci để thực hiện giao dịch định lượng chỉ với các vị trí dài và không có vị trí ngắn.

Nguyên tắc chiến lược

Các bước chính của chiến lược này là:

  1. Tính toán giá trung bình đóng, cao, thấp và mở của 10 chu kỳ Fibonacci gần đây nhất để xây dựng một ngọn nến trung bình.

  2. Tính toán các đường trung bình di chuyển theo hàm số (EMA) 1-, 2-, 3-, 5-, 8-, 13-, 21-, 34- và 55 thời gian của giá đóng trung bình, và lấy đường trung bình của chúng để có được đường trung bình EMA.

  3. Thiết lập các điều kiện dài và đóng: mở vị trí dài khi nến trung bình cho thấy các mô hình tăng (như đóng trên mở, ngập tăng) và đóng trên EMA trung bình; đóng vị trí dài khi nến trung bình cho thấy các mô hình giảm (như đóng dưới mở, ngập giảm) và đóng dưới EMA trung bình.

Bằng cách tính toán nến trung bình để lọc biến động giá và kết hợp với các chỉ số trung bình động để tạo ra tín hiệu giao dịch, chiến lược này có thể xác định hiệu quả xu hướng và kiểm soát rủi ro giao dịch.

Ưu điểm

  1. Nến trung bình dựa trên trình tự Fibonacci có thể lọc tiếng ồn giá ngẫu nhiên hiệu quả và xác định các tín hiệu xu hướng.

  2. Trung bình của nhiều EMA tăng cường sự ổn định của mức hỗ trợ / kháng cự và cải thiện chất lượng tín hiệu.

  3. Chỉ có các vị trí dài làm giảm số lượng giao dịch, giảm chi phí giao dịch và tác động trượt.

  4. Hiệu suất tốt trên khung thời gian lớn hơn, phù hợp với giao dịch trung bình đến dài hạn.

Rủi ro

  1. Chiến lược chỉ dài có thể gây ra tổn thất đáng kể trên thị trường giảm.

  2. Các đường EMA có xu hướng tụt hậu, có khả năng bỏ lỡ các điểm xuất phát tốt nhất.

  3. Theo đuổi quá nhiều khung thời gian có thể bỏ lỡ cơ hội trong khung thời gian ngắn hơn.

  4. Không gian tối ưu hóa tham số hạn chế có nghĩa là hiệu suất giao dịch thực có thể hoạt động kém hơn kết quả backtest.

Các lĩnh vực cải tiến

  1. Có thể thử thêm lỗ dừng thích hợp vào các vị trí thoát khi lỗ tăng.

  2. Có thể kết hợp các biện pháp biến động như ATR để điều chỉnh kích thước vị trí một cách năng động.

  3. Có thể kiểm tra các vị trí ngắn phù hợp trong thời gian giảm để tăng lợi nhuận.

  4. Có thể tối ưu hóa các thông số EMA để tìm kết hợp tốt nhất.

Kết luận

Chiến lược này xác định các tín hiệu xu hướng cho giao dịch định lượng bằng cách xây dựng các nến trung bình Fibonacci và các chỉ số trung bình động. Nó tận dụng lợi thế của việc lọc tiếng ồn giá bằng nến trung bình và giảm chi phí giao dịch chỉ bằng cách đi dài. Nó cũng có những rủi ro của thị trường giảm giá cho các vị trí chỉ dài và các vấn đề EMA tụt hậu. Nhìn chung, chiến lược này kiểm soát rủi ro giao dịch từ nhiều khía cạnh và hoạt động tốt trên các khung thời gian lớn hơn, phù hợp với giao dịch trung hạn đến dài hạn.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


Thêm nữa