
Chiến lược này đầu tiên tính toán trung bình di chuyển đơn giản trong 13 chu kỳ và 26 chu kỳ, sau đó tính toán chỉ số FRAMA. Khi đường nhanh từ dưới lên vượt qua đường chậm, khi đường nhanh từ trên xuống vượt qua đường chậm hoặc khi chỉ số FRAMA từ trên xuống vượt qua giá đóng cửa.
Chiến lược này chủ yếu sử dụng giao dịch tín hiệu hình thành bằng cách chéo hai đường trung bình. Khi đường trung bình ngắn hạn từ dưới lên vượt qua đường trung bình dài hạn, nó cho thấy thị trường đã đi từ giảm xuống, làm nhiều; khi đường trung bình ngắn hạn từ trên xuống vượt qua đường trung bình dài hạn, nó cho thấy thị trường sắp đảo ngược, bằng phẳng.
Trong khi đó, chiến lược này đưa ra chỉ số FRAMA như một phán đoán hỗ trợ. Chỉ số FRAMA là một đường trung bình di chuyển thích nghi được cải thiện dựa trên giả thuyết thị trường phân chia. Nó ước tính chiều phân chia của thị trường bằng cách tính toán tỷ lệ biến đổi đối số của mức độ biến động giá trong các chu kỳ khác nhau, trong thời gian thực, do đó điều chỉnh động độ mịn của đường trung bình.
Chiến lược này kết hợp với đường nét hai chiều và chỉ số FRAMA, có thể lọc hiệu quả các tín hiệu phá vỡ giả và cải thiện chất lượng tín hiệu giao dịch. Đường nét hai chiều xác định hướng giao dịch chính, phán đoán trợ giúp FRAMA có thể tránh mất thời điểm đảo ngược trong tình huống chấn động.
So với chỉ số và mô hình đơn lẻ, chiến lược này có thể cải thiện đáng kể chất lượng tín hiệu, giảm khả năng sai lầm. Đồng thời, kết hợp với đường trung bình nhanh và chậm, có thể được thực hiện theo tiến độ, tránh bị đặt.
Rủi ro chính của chiến lược này là hai đường trung bình có thể tạo ra nhiều tín hiệu phá vỡ giả, và cài đặt tham số của chỉ số FRAMA cũng ảnh hưởng đến hiệu quả phán đoán. Ngoài ra, trong một số trường hợp, đường nhanh và đường chậm có thể không giao nhau trong thời gian dài giữa FRAMA và giá đóng cửa, dẫn đến không có cơ hội giao dịch.
Để kiểm soát các rủi ro trên, bạn có thể điều chỉnh các tham số chu kỳ trung bình thích hợp, hoặc kết hợp với các chỉ số khác để lọc. Ngoài ra, các tham số như chiều dài, yếu tố phân dạng của chỉ số FRAMA cũng cần thiết lập hợp lý cho các thị trường khác nhau, tránh quá mịn hoặc nhạy cảm.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Kiểm tra thêm các kết hợp đường trung bình và các tham số chu kỳ để tìm các cặp tham số tốt nhất.
Thêm chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ.
Kết hợp với chỉ số khối lượng giao dịch, tránh phá vỡ giả mạo với khối lượng thấp.
Thêm mô hình học máy, đánh giá tình trạng thị trường trong thời gian thực, tham số điều chỉnh động.
Kết hợp nhiều yếu tố như chỉ số cảm xúc, mặt tin tức để đánh giá cảm xúc của thị trường, nâng cao chất lượng ra quyết định.
Chiến lược này thực hành sơ bộ sử dụng chiến lược chéo song song song song với các chỉ số FRAMA. Dựa trên việc duy trì tính trực quan đơn giản, nó có hiệu quả trong việc nâng cao chất lượng tín hiệu và đáng để thử nghiệm và tối ưu hóa thêm. Với việc điều chỉnh các tham số, giới thiệu các chỉ số mới, chiến lược này có thể trở thành một chiến lược giao dịch định lượng ổ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())