Chiến lược này kết hợp các chỉ số DEMA và BPF để thực hiện việc lọc mua phá vỡ và bán quá mức mua, tạo ra các tín hiệu giao dịch ổn định và theo đuổi lợi nhuận tối đa.
Chiến lược bao gồm hai tiểu chiến lược:
Chiến lược DEMA
Nó sử dụng các đường trung bình di chuyển hàm số hai ngày và 20 ngày để tạo ra tín hiệu mua chéo vàng và bán chéo chết.
Chiến lược BPF
Chỉ số BPF kết hợp các biến đổi toán học để phát hiện các thành phần chu kỳ trong giá và hình thành các vùng mua quá mức trong một khoảng thời gian nhất định để tạo ra tín hiệu giao dịch.
Kết hợp cả hai cung cấp xác minh mạnh mẽ hơn về xu hướng và các yếu tố chu kỳ khi các tín hiệu mua / bán đồng thời xuất hiện. do đó độ tin cậy cao hơn, dẫn đến các điểm nhập và xuất ổn định hơn.
Lợi thế lớn nhất của chiến lược này là lọc chỉ số kép làm cho các tín hiệu ổn định và đáng tin cậy hơn. DEMA làm mịn giá và xác định hướng xu hướng; BPF nhận ra các đặc điểm chu kỳ và xác định các khu vực mua quá mức. Xác nhận chéo giữa hai có thể làm giảm đáng kể các tín hiệu sai do tiếng ồn giá và điều chỉnh chu kỳ.
Ngoài ra, chính chiến lược có tần suất giao dịch ít, tránh chi phí vốn và hoa hồng quá mức do giao dịch quá mức.
Rủi ro lớn nhất của chiến lược này là đánh giá sai tình trạng thị trường. Nó có xu hướng nhận tín hiệu sai trong các thị trường khác nhau và có thể chịu tổn thất dừng lớn khi xu hướng đảo ngược. Hơn nữa, cài đặt tham số cũng có thể ảnh hưởng đáng kể đến hiệu suất chiến lược.
Để giải quyết những rủi ro này, các phương pháp như tối ưu hóa các thông số chỉ số, thiết lập dừng lỗ / lấy lợi nhuận, kết hợp các chỉ số khác vv có thể được áp dụng để kiểm soát và cải thiện.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa chu kỳ thời gian. Kiểm tra các thiết lập tham số DEMA và BPF khác nhau để xác định sự kết hợp thời gian tối ưu.
Thêm cài đặt dừng lỗ / lấy lợi nhuận. Đặt kích thước dừng lỗ hợp lý để tránh tăng cường lỗ; lấy lợi nhuận phù hợp để khóa lợi nhuận một phần.
Thêm các bộ lọc chỉ số khác. chẳng hạn như khối lượng, MACD vv để tránh các tín hiệu gây hiểu nhầm từ khối lượng cao và chuyển vị trí.
Parameter tối ưu hóa thích nghi. Làm cho các thông số DEMA và BPF thích nghi dựa trên các điều kiện thị trường mới nhất để giữ cho chỉ số kịp thời.
Chiến lược này tích hợp các điểm mạnh của các chỉ số EMA và BPF kép với lọc kép để cải thiện chất lượng tín hiệu và theo đuổi lợi nhuận ổn định trung và dài hạn.
/*backtest start: 2023-01-10 00:00:00 end: 2024-01-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 05/04/2022 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // The related article is copyrighted material from // Stocks & Commodities Mar 2010 // // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length) => pos = 0.0 xPrice = close xXA = ta.ema(xPrice, Length) nHH = math.max(high, high[1]) nLL = math.min(low, low[1]) nXS = nLL > xXA or nHH < xXA ? nLL : nHH iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0) pos := nXS > close[1] ? -1 : iff_1 pos BPF(Length,Delta,SellZone,BuyZone) => pos = 0.0 xPrice = hl2 beta = math.cos(3.14 * (360 / Length) / 180) gamma = 1 / math.cos(3.14 * (720 * Delta / Length) / 180) alpha = gamma - math.sqrt(gamma * gamma - 1) BP = 0.0 BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2]) pos:= BP > SellZone ? 1 : BP <= BuyZone? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & Bandpass Filter', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ Bandpass Filter ═════●' LengthBPF = input.int(20, minval=1, group=I2) Delta = input(0.5, group=I2) SellZone = input.float(5, step = 0.01, group=I2) BuyZone = input.float(-5, step = 0.01, group=I2) var misc = '●═════ MISC ═════●' reverse = input.bool(false, title='Trade reverse', group=misc) var timePeriodHeader = '●═════ Time Start ═════●' d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader) m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader) y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader) StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false posEMA20 = EMA20(Length) prePosBPF = BPF(LengthBPF,Delta,SellZone,BuyZone) iff_1 = posEMA20 == -1 and prePosBPF == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosBPF == 1 and StartTrade ? 1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 if possig == 1 strategy.entry('Long', strategy.long) if possig == -1 strategy.entry('Short', strategy.short) if possig == 0 strategy.close_all() barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)