Chiến lược này kết hợp chiến lược đảo ngược dao động kép và chiến lược tối ưu hóa tỷ lệ tín hiệu-gọi tiếng ồn để tạo thành một chiến lược giao dịch mạnh mẽ và ổn định hơn.
Chiến lược đảo ngược dao động kép tính toán các giá trị K nhanh và chậm của 14 ngày qua để xác định xem có đảo ngược trong hai ngày giao dịch liên tiếp không. Nếu đảo ngược xảy ra khi K nhanh dưới 50, đó là tín hiệu mua. Nếu K nhanh trên 50, đó là tín hiệu bán.
Chiến lược tối ưu hóa tỷ lệ tín hiệu-gọi tiếng ồn tính toán tỷ lệ tín hiệu-gọi tiếng ồn của 21 ngày qua và làm mịn nó bằng đường trung bình di chuyển đơn giản 29 ngày. Khi tỷ lệ tín hiệu-gọi tiếng ồn vượt trên đường trung bình di chuyển, đó là tín hiệu bán. Khi vượt dưới, đó là tín hiệu mua.
Cuối cùng, chiến lược này chỉ bắt đầu giao dịch mua hoặc bán khi cả hai chiến lược phát ra cùng một tín hiệu.
Kết hợp nhiều chiến lược có thể tạo ra các tín hiệu giao dịch chính xác hơn và tránh các tín hiệu sai từ một chiến lược duy nhất.
Chiến lược đảo ngược dao động kép nắm bắt các điểm đảo ngược xu hướng. Tối ưu hóa tỷ lệ tín hiệu-gọi tiếng ồn lọc ra các tín hiệu sai. Làm việc cùng nhau, chúng có thể giao dịch chính xác khi đảo ngược.
Các thông số tối ưu như 14 ngày nhanh / chậm stochastics và 21 ngày tín hiệu-độ ồn thời gian nắm bắt xu hướng gần đây mà không có quá nhiều tiếng ồn.
Các tín hiệu xác nhận kép làm giảm đáng kể rủi ro giao dịch và tránh mất mát không cần thiết.
Các tín hiệu đảo ngược có thể bị chậm và bỏ lỡ đáy hoặc đỉnh tuyệt đối. Các tham số có thể được điều chỉnh để rút ngắn thời gian trễ.
Chứng nhận tín hiệu kép có thể bỏ lỡ một số cơ hội giao dịch. Điều kiện xác nhận có thể được nới lỏng nhưng cũng làm tăng rủi ro.
Các thông số tỷ lệ tín hiệu-gọi tiếng ồn cần tối ưu hóa. Thời gian không đúng có thể gây ra tín hiệu bị thiếu hoặc sai.
Theo dõi nhiều chỉ số làm tăng sự phức tạp.
Kiểm tra nhiều kết hợp chỉ số hơn để tìm ra các tín hiệu combo tốt hơn, như MACD, RSI v.v.
Tối ưu hóa các thông số của chiến lược đảo ngược để có tín hiệu chính xác và kịp thời hơn.
Tối ưu hóa các khoảng thời gian tỷ lệ tín hiệu-gọi với tiếng ồn để tìm sự cân bằng tối ưu.
Thêm các chiến lược dừng lỗ để kiểm soát tổn thất tiềm năng cho các giao dịch đơn.
Xem xét các phương pháp học máy để tự động tối ưu hóa các thông số để thích nghi tốt hơn.
Chiến lược này kết hợp các chiến lược đảo ngược dao động kép và tỷ lệ tín hiệu-gọi tiếng ồn để cung cấp các tín hiệu ổn định tại các điểm đảo ngược xu hướng. Các thông số tối ưu hóa làm giảm đáng kể các tín hiệu sai, và xác nhận kép làm giảm rủi ro giao dịch. Việc tối ưu hóa thêm như các thông số chỉ số, dừng lỗ có thể cải thiện hiệu suất. Nhìn chung, đây là một chiến lược ổn định với giá trị giao dịch thực tế.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 196/01/2021 // 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 // The signal-to-noise (S/N) ratio. // And Simple Moving Average. // // 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 SignalToNoise(length) => StN = 0.0 for i = 1 to length-1 StN := StN + (1/close[i])/length StN := -10*log(StN) StN(length,Smooth) => pos = 0.0 StN = SignalToNoise(length) SMAStN = sma(StN, Smooth) pos := iff(SMAStN[0] > StN[0] , -1, iff(SMAStN[0] < StN[0], 1, 0)) pos strategy(title="Combo Backtest 123 Reversal & Signal To Noise", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- lengthStN = input(title="Days", type=input.integer, defval=21, minval=2) SmoothStN = input(title="Smooth", type=input.integer, defval=29, minval=2) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posStN = StN(lengthStN,SmoothStN) pos = iff(posReversal123 == 1 and posStN == 1 , 1, iff(posReversal123 == -1 and posStN == -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 )