Chiến lược này tạo ra các tín hiệu giao dịch dựa trên đường chéo vàng và đường chéo chết của các đường trung bình động với các chu kỳ khác nhau.
Chiến lược này đầu tiên tính toán các đường trung bình động trung hạn và ngắn hạn, ma1 và ma2, của giá, trong đó ma1 có chu kỳ ngắn hơn và ma2 có chu kỳ dài hơn. Sau đó nó tính toán sự khác biệt giữa ma1 và ma2 là ma3, và tiếp tục tính toán đường trung bình động trơn ma4 của ma3. Khi ma3 vượt qua ma4 lên, tín hiệu mua được tạo ra. Khi nó vượt xuống, tín hiệu bán được tạo ra.
Do đó, ma3 phản ánh xu hướng trung hạn của giá, và ma4 lọc một số tiếng ồn từ ma3 để tạo ra một tín hiệu giao dịch đáng tin cậy hơn. Các chu kỳ của ma1 và ma2 được đặt bởi tham số maLen. Người dùng có thể tối ưu hóa các tham số để đạt được cài đặt tốt nhất cho các thị trường khác nhau.
Những lợi thế của chiến lược này bao gồm:
Ngoài ra còn có một số rủi ro cho chiến lược này:
Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:
Chiến lược này tạo ra các tín hiệu giao dịch dựa trên đường chéo vàng và đường chéo chết của đường trung bình động. Bằng cách sử dụng ALMA và đường trung bình giá đa chu kỳ, các tín hiệu trở nên chính xác và đáng tin cậy hơn. Các tham số có thể điều chỉnh làm cho nó có thể áp dụng rộng rãi. Ngoài ra, logic đơn giản và rõ ràng và hoạt động tốt trong thị trường xu hướng. Do đó, nó có giá trị thực tế cao.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Oracle Move Strategy", overlay=true) maLen = input(30, "ma period") mode = input(defval="wma", options=["alma", "ema", "wma"]) price = close ma(src, len) => mode=="alma" ? alma(src, len, 0.85, 6) : mode=="ema"? ema(src, len) : wma(src, len) ma1 = ma(price, floor(maLen / 2)) ma2 = ma(price, maLen) ma3 = 2.0 * ma1 - ma2 ma4 = ma(ma3, floor(sqrt(maLen))) //plot(ma1, color = red) //plot(ma2, color = green) plot(ma3, color = blue) plot(ma4, color = orange) mafast = ma3 maslow = ma4 if (crossover(mafast, maslow)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(mafast, maslow)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)