Chiến lược này được gọi là
Chiến lược bao gồm hai phần:
Chỉ số DEMA. Chỉ số này tính toán các đường trung bình chuyển động theo hàm số nhân 20 ngày và 2 ngày. Nó tạo ra tín hiệu giao dịch khi giá vượt qua đường 2 ngày từ trên hoặc vượt qua đường 20 ngày từ dưới.
(Giá cao nhất - Giá thấp nhất) / Chỉ số biến động giá đóng. Chỉ số này phản ánh phạm vi biến động của giá trong một khoảng thời gian. Ở đây chúng tôi tính trung bình di chuyển đơn giản 16 ngày của chỉ số biến động trong 20 thanh qua. Khi biến động của thanh hiện tại cao hơn hoặc thấp hơn giá trị trung bình này, nó tạo ra tín hiệu giao dịch.
Các tín hiệu từ hai phần được kết hợp. Nếu DEMA và chỉ số biến động cung cấp tín hiệu cùng một lúc, các lệnh giao dịch dài hoặc ngắn cuối cùng sẽ được tạo ra.
Chiến lược có những lợi thế sau:
Kết hợp nhiều chỉ số có thể làm giảm tín hiệu sai và cải thiện độ tin cậy tín hiệu.
Dòng 20 ngày có thể xác định hiệu quả xu hướng trung bình đến dài hạn, và đường 2 ngày có thể nắm bắt biến động ngắn hạn, làm cho sự kết hợp thích nghi với môi trường thị trường khác nhau.
Chỉ số biến động có thể phản ánh hiệu quả biến động thị trường và cơ hội giao dịch.
Bằng cách điều chỉnh các tham số, nó có thể thích nghi với các sản phẩm và thị trường chu kỳ khác nhau.
Chiến lược này cũng có một số rủi ro:
Trong xu hướng biến động thấp, chỉ số biến động có thể tạo ra các tín hiệu sai.
Trong các thị trường một chiều nhanh chóng, EMA đôi có thể chậm lại.
Sự phức tạp ngày càng tăng của nhiều chỉ số cũng làm tăng nguy cơ tối ưu hóa quá mức.
Chiến lược cũng có thể được tối ưu hóa trong các khía cạnh sau:
Thêm các cơ chế dừng lỗ có thể kiểm soát hiệu quả mỗi lệnh mất.
Tối ưu hóa các tham số cho các sản phẩm và chu kỳ khác nhau để cải thiện khả năng thích nghi.
Tăng các chỉ số thanh khoản và biến động để cải thiện chất lượng tín hiệu.
Thêm các thuật toán học máy để đạt được các thông số động và điều chỉnh trọng lượng.
Bằng cách kết hợp hai EMA và chỉ số biến động, chiến lược này có thể đạt được hiệu suất giao dịch tốt trong cả thị trường xu hướng và biến động. Ngoài ra còn có một số rủi ro cần tối ưu hóa và cải thiện hơn nữa. Nhưng nói chung, ý tưởng chiến lược là rõ ràng và có giá trị thực tế.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 12/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 // This histogram displays (high-low)/close // Can be applied to any time frame. // // // 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 HLCH(input_barsback,input_percentorprice,input_smalength) => pos = 0.0 xPrice = (high-low)/close xPriceHL = (high-low) xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength) pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 : xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ (H-L)/C Histogram ═════●' input_barsback = input(20, title="Look Back", group=I2) input_percentorprice = input(false, title="% change", group=I2) input_smalength = input(16, title="SMA Length", 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) prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength) iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosHLCH == 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)