Chiến lược này kết hợp mô hình 123 đảo ngược và Ease of Movement (EOM) để giao dịch tại các điểm chuyển đổi. Mô hình 123 đảo ngược tạo ra tín hiệu khi giá hình thành các mô hình cụ thể trong 3 ngày liên tiếp. Chiến lược EOM sử dụng những thay đổi về giá và khối lượng để đo đạc động lực thị trường. Sự kết hợp của cả hai chiến lược xem xét các mô hình kỹ thuật cũng như động lực, cải thiện độ chính xác của tín hiệu giao dịch.
Chiến lược bao gồm hai thành phần:
Chiến lược đi dài khi tín hiệu EOM và 123 thẳng hàng ở phía dài, và đi ngắn khi tín hiệu thẳng hàng ở phía ngắn.
Những lợi thế của chiến lược này:
Kết hợp các mô hình giá và động lực để có độ chính xác tín hiệu tốt hơn
123 mô hình bắt được các bước ngoặt, EOM đo xu hướng động lực, hai bổ sung cho nhau
Stoch tránh những cú sốc trong quá trình củng cố
Đơn giản và dễ thực hiện
Các tham số có thể tùy chỉnh cho các môi trường thị trường khác nhau
Những rủi ro cần xem xét:
Tùy thuộc quá nhiều vào cài đặt tham số, cài đặt không phù hợp có thể dẫn đến giao dịch quá mức hoặc bỏ lỡ giao dịch
Nhiều bộ lọc có thể tạo ra quá ít tín hiệu
EOM nhạy cảm với biến động, có thể tạo ra tín hiệu sai
Hiệu suất trực tiếp yếu hơn backtest, cần kiểm soát vị trí kích thước
Chỉ phù hợp với các cổ phiếu xu hướng, không giới hạn thị trường
Chiến lược có thể được cải thiện bằng cách:
Tối ưu hóa các tham số để cân bằng tần số và chất lượng tín hiệu
Thêm stop loss để kiểm soát lỗ giao dịch duy nhất
Thêm bộ lọc xu hướng để tránh giao dịch ngược xu hướng
Bao gồm phân loại vị trí dựa trên biến động
Sử dụng máy học để tối ưu hóa các tham số một cách năng động
Chiến lược này tích hợp các mô hình giá và động lực cho giá trị thực tế cao. Nhưng tần suất giao dịch, kiểm soát lỗ và rủi ro chống xu hướng cần phải được quản lý. Cải tiến thêm các thông số, dừng lỗ, lọc xu hướng có thể tăng sự ổn định và lợi nhuận. Lý thuyết rõ ràng và dễ thực hiện cho các nhà giao dịch lượng.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 14/04/2020 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // This indicator gauges the magnitude of price and volume movement. // The indicator returns both positive and negative values where a // positive value means the market has moved up from yesterday's value // and a negative value means the market has moved down. A large positive // or large negative value indicates a large move in price and/or lighter // volume. A small positive or small negative value indicates a small move // in price and/or heavier volume. // A positive or negative numeric value. A positive value means the market // has moved up from yesterday's value, whereas, a negative value means the // market has moved down. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos EOM(BuyZone, SellZone) => pos = 0 xHigh = high xLow = low xVolume = volume xHalfRange = (xHigh - xLow) * 0.5 xMidpointMove = mom(xHalfRange, 1) xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0) nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0) pos := iff(nRes > BuyZone, 1, iff(nRes < SellZone, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- BuyZone = input(4000, minval=1) SellZone = input(-4000) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posEOM = EOM(BuyZone, SellZone) pos = iff(posReversal123 == 1 and posEOM == 1 , 1, iff(posReversal123 == -1 and posEOM == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) 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 )