Chiến lược này tích hợp chiến lược đảo ngược 123 và chiến lược đường phân định tương lai (FLD) để thực hiện một chiến lược giao dịch định lượng vào hoặc ra khỏi các vị trí khi cả hai chiến lược tạo ra tín hiệu đồng thời.
Chiến lược đảo ngược 123 bắt nguồn từ cuốn sách
Chiến lược đường phân định tương lai (FLD) là một chiến lược theo xu hướng dựa trên sự dao động định kỳ của giá. Các đường FLD được vẽ bằng cách di chuyển giá trung bình, cao hoặc thấp khoảng nửa chu kỳ vào tương lai. Các tín hiệu giao dịch được tạo ra khi giá vượt qua các đường FLD.
Chiến lược này kết hợp các chiến lược đảo ngược và theo xu hướng, nắm bắt cả cơ hội đảo ngược ngắn hạn và hướng xu hướng trung dài hạn trên nhiều khung thời gian cho giao dịch định lượng. Các yếu tố đảo ngược cung cấp cơ hội kiếm lợi nhuận ngắn hạn trong khi phần theo xu hướng đảm bảo giao dịch tổng thể phù hợp với xu hướng, kiểm soát hiệu quả rủi ro giao dịch. Hơn nữa, bản chất thích nghi của FLD cũng tăng cường sự ổn định của chiến lược.
Các rủi ro chính của chiến lược này đến từ sự đột phá sai của các tín hiệu đảo ngược và lỗi trong các phán đoán đường FLD. Đối với các tham số trước đây, các tham số có thể được điều chỉnh để xác nhận các tín hiệu đảo ngược hoặc thêm các chỉ số phụ trợ khác để cải thiện độ chính xác. Đối với các tham số sau, các tham số cần được tối ưu hóa để đảm bảo FLD mô tả chu kỳ thị trường chính xác hơn. Ngoài ra, các lỗi của FLD khi sự đảo ngược xu hướng lớn xảy ra cũng nên được xem xét.
Chiến lược này kết hợp các khái niệm đảo ngược và theo xu hướng cho lợi nhuận ổn định trong khung thời gian trung bình ngắn hạn.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 28/08/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 // An FLD is a line that is plotted on the same scale as the price and is in fact the // price itself displaced to the right (into the future) by (approximately) half the // wavelength of the cycle for which the FLD is plotted. There are three FLD's that can be // plotted for each cycle: // An FLD based on the median price. // An FLD based on the high price. // An FLD based on the low price. // // 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 FLD(Period,src) => pos = 0 pos := iff(src[Period] < close , 1, iff(src[Period] > close, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & FLD's - Future Lines of Demarcation", shorttitle="Combo", overlay = true) Length = input(15, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- Period = input(title="Period", defval=40) src = input(title="Source", type=input.source, defval=close) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posFLD = FLD(Period,src) pos = iff(posReversal123 == 1 and posFLD == 1 , 1, iff(posReversal123 == -1 and posFLD == -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 )