Chiến lược này tối ưu hóa chiến lược chéo trung bình động thông thường bằng cách thiết lập ba trung bình động với các giai đoạn khác nhau, xây dựng mô hình chéo vàng với trung bình động 9 giai đoạn, 50 giai đoạn và 100 giai đoạn. Nó tạo ra tín hiệu mua khi MA ngắn hạn vượt qua MA trung hạn trong khi MA dài hạn đang trong xu hướng tăng.
Chiến lược này sử dụng ba đường trung bình động với các khoảng thời gian 9, 50 và 100. MA 9 giai đoạn là MA ngắn hạn, MA 50 giai đoạn là MA trung hạn và MA 100 giai đoạn là MA dài hạn. Các tín hiệu giao dịch được tạo ra bởi sự chéo chéo giữa MA ngắn hạn và MA trung hạn. Cụ thể, khi MA dài hạn đang trong xu hướng tăng (trên MA trung hạn), một tín hiệu mua được kích hoạt khi MA ngắn hạn vượt qua trên MA trung hạn. Một tín hiệu bán được kích hoạt khi MA ngắn hạn vượt qua dưới MA trung hạn.
So với chiến lược chéo trung bình di chuyển kép thông thường, chiến lược này thêm điều kiện đánh giá xu hướng trung và dài hạn trước khi tạo tín hiệu giao dịch, có thể lọc hiệu quả một số tín hiệu không hợp lệ. Khi xu hướng dài hạn không rõ ràng, chiến lược sẽ không tạo tín hiệu, tránh bị mắc kẹt trong hợp nhất. Đồng thời, chiến lược này phù hợp để nắm bắt xu hướng di chuyển trong ngắn và trung hạn, giảm khả năng xâm nhập mạnh mẽ.
Khi thiết lập các tham số cho chiến lược này, sự kết hợp của các giai đoạn trung bình động cần được điều chỉnh. Sự kết hợp của các giai đoạn khác nhau sẽ ảnh hưởng đến hiệu quả của chiến lược. Nếu các tham số giai đoạn không được thiết lập đúng cách, có nguy cơ tạo ra quá nhiều tín hiệu sai. Ngoài ra, các nhà giao dịch cần nhận thức được các rủi ro hệ thống tiềm ẩn và dừng lỗ kịp thời để giảm thiểu rủi ro.
Xem xét kết hợp các chỉ số khác để giúp đánh giá xu hướng thị trường, chẳng hạn như MACD, BOLL, vv, và thiết lập các điều kiện nhập cảnh nghiêm ngặt hơn, hoặc kết hợp các chỉ số biến động để xây dựng các đường trung bình động thích nghi để các thông số có thể tự động điều chỉnh dựa trên điều kiện thị trường để tối ưu hóa chiến lược hơn nữa.
Dựa trên đường chéo trung bình động kép thông thường, chiến lược này thêm phán đoán và điều kiện lọc MA dài hạn, có thể lọc hiệu quả các tín hiệu sai và phù hợp để nắm bắt các động thái xu hướng ngắn đến trung hạn. Đây là một chiến lược theo xu hướng đơn giản và thực tế. Tuy nhiên, các nhà giao dịch vẫn cần chú ý đến tối ưu hóa tham số và rủi ro hệ thống và xây dựng các chiến lược quản lý rủi ro khoa học.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)