FRAMA và chiến lược giao dịch chéo trung bình động dựa trên trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2023-12-22 16:08:23
Tags:

img

Tổng quan

Chiến lược này đầu tiên tính toán các đường trung bình di chuyển đơn giản 13 giai đoạn và 26 giai đoạn, và sau đó tính toán chỉ số FRAMA. Nó đi dài khi đường nhanh vượt qua đường chậm từ dưới lên, và thoát khỏi vị trí khi đường nhanh vượt qua đường chậm từ trên xuống hoặc khi chỉ số FRAMA vượt qua giá đóng từ trên xuống.

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

Chiến lược này chủ yếu sử dụng đường chéo trung bình động để tạo ra tín hiệu giao dịch. Khi đường trung bình động ngắn hạn phá vỡ đường trung bình động dài hạn từ dưới lên, nó cho thấy xu hướng đang chuyển từ giảm lên tăng, và đi dài. Khi đường trung bình động ngắn hạn vượt dưới đường trung bình động dài hạn, nó cho thấy sự đảo ngược sắp xảy ra và đóng vị trí.

Trong khi đó, chỉ số FRAMA được giới thiệu như một phán đoán phụ trợ. Chỉ số FRAMA là một đường trung bình động thích nghi được cải thiện dựa trên giả thuyết thị trường phân đoạn. Bằng cách tính toán tỷ lệ thay đổi logarithmic của kích thước biến động giá trong các khoảng thời gian khác nhau, nó ước tính kích thước phân đoạn của thị trường trong thời gian thực để điều chỉnh trơn tru của đường trung bình động. Khi chỉ số FRAMA vượt dưới giá đóng, nó chỉ ra tín hiệu đảo ngược xu hướng. Kết hợp với tín hiệu chéo trung bình động, nó cải thiện độ chính xác của phán đoán.

Phân tích lợi thế

Chiến lược này kết hợp hai đường chéo trung bình động và chỉ số FRAMA, có thể lọc hiệu quả các tín hiệu đột phá sai và cải thiện chất lượng tín hiệu giao dịch.

So với chỉ số và mô hình duy nhất, chiến lược này có thể cải thiện đáng kể chất lượng tín hiệu và giảm xác suất đánh giá sai.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm ở việc các đường trung bình động kép có thể tạo ra nhiều tín hiệu đột phá sai, và các thiết lập tham số của chỉ số FRAMA cũng sẽ ảnh hưởng đến hiệu quả.

Để kiểm soát các rủi ro trên, các thông số như thời gian trung bình động có thể được điều chỉnh phù hợp, hoặc lọc với các chỉ số khác.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra nhiều kết hợp và thời gian của các đường trung bình động để tìm cặp tham số tối ưu.

  2. Thêm chiến lược dừng lỗ để kiểm soát lỗ đơn.

  3. Kết hợp các chỉ số khối lượng giao dịch để tránh phá vỡ sai khi khối lượng thấp.

  4. Thêm các mô hình học máy để đánh giá tình trạng thị trường trong thời gian thực và điều chỉnh các tham số một cách năng động.

  5. Kết hợp các chỉ số tâm lý, tin tức và nhiều yếu tố khác để cải thiện chất lượng quyết định.

Kết luận

Chiến lược sơ bộ này kết hợp việc áp dụng crossover trung bình động kép và chỉ số FRAMA. Trên cơ sở duy trì sự đơn giản và trực giác, nó đã cải thiện hiệu quả chất lượng tín hiệu và đáng để thử nghiệm và tối ưu hóa hơn nữa. Với các tối ưu hóa như điều chỉnh tham số, giới thiệu chỉ số mới, chiến lược này có thể được mong đợi trở thành một chiến lược giao dịch ổn định và đáng tin cậy.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Fractal Adaptive Moving Average",shorttitle="FRAMA",overlay=true)


ma_fast = sma(close,13)

ma_slow = sma(close,26)
plot(ma_fast,color = green)
plot(ma_slow, color = yellow)
price = input(hl2)
len = input(defval=16,minval=1)
FC = input(defval=1,minval=1)
SC = input(defval=198,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price
plot(out,title="FRAMA",color=purple,transp=0)
entry() => crossover(ma_fast, ma_slow) and (out < close)
exit() => crossover(ma_slow, ma_fast) or crossunder(out, close)

strategy.entry(id= "MA cross", long = true, when = entry())
strategy.close(id= "MA cross", when = exit())

Thêm nữa