Chiến lược này là một chiến lược động lực dựa trên đường trung bình động. Nó tạo ra tín hiệu giao dịch bằng cách tính toán các đường trung bình động đơn giản của các giai đoạn khác nhau và so sánh các tình huống chéo của chúng. Cụ thể, khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, một tín hiệu mua được tạo ra; khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, một tín hiệu bán được tạo ra.
Lý thuyết cốt lõi của chiến lược này dựa trên hiệu ứng động lực, đó là sự bền vững của xu hướng giá cổ phiếu. Đường trung bình động có thể phản ánh hiệu quả xu hướng thay đổi giá cổ phiếu. Khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, điều đó có nghĩa là giá cổ phiếu bắt đầu đi lên; ngược lại, khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, điều đó có nghĩa là giá cổ phiếu bắt đầu đi xuống. Chiến lược này tạo ra các tín hiệu giao dịch dựa trên nguyên tắc này.
Cụ thể, một trung bình di chuyển đơn giản 13 ngày và một trung bình di chuyển đơn giản 34 ngày được xác định trong chiến lược. Sau khi tính toán hai trung bình di chuyển này dựa trên giá đóng cửa hàng ngày, mối quan hệ quy mô của chúng được so sánh. Nếu đường 13 ngày vượt qua đường 34 ngày, một tín hiệu mua được tạo ra, cho thấy giá cổ phiếu bước vào xu hướng tăng và một vị trí dài nên được thiết lập; nếu đường 13 ngày vượt qua dưới đường 34 ngày, một tín hiệu bán được tạo ra, cho thấy giá cổ phiếu bước vào xu hướng giảm và vị trí nên được đóng.
Lợi thế lớn nhất của chiến lược này là nó đơn giản và dễ hiểu và thực hiện. Đường trung bình động là một trong những chỉ số kỹ thuật cơ bản và thường được sử dụng nhất. Nguyên tắc của nó đơn giản và dễ hiểu và áp dụng.
Ngoài ra, việc thiết lập tham số của chiến lược này là linh hoạt và có thể được điều chỉnh theo các giống và điều kiện thị trường khác nhau. Ví dụ, các tham số chu kỳ của đường trung bình động có thể được thay đổi để điều chỉnh độ nhạy của chiến lược. Điều này cho phép tối ưu hóa và điều chỉnh chiến lược.
Rủi ro lớn nhất của chiến lược này là có thể có nhiều tín hiệu sai và bị mắc kẹt trong các thị trường giới hạn phạm vi. Khi giá dao động mạnh, đường trung bình động có thể tạo ra các chéo thường xuyên, dẫn đến tín hiệu sai. Tại thời điểm này, bạn cần điều chỉnh các tham số chu kỳ của đường trung bình động để lọc ra một số tiếng ồn.
Ngoài ra, khi có một sự đảo ngược thị trường lớn hơn, điểm dừng lỗ của chiến lược có thể bị phá vỡ, dẫn đến tổn thất lớn hơn. Điều này đòi hỏi phải tối ưu hóa chiến lược dừng lỗ và thư giãn phù hợp phạm vi dừng lỗ.
Các khía cạnh sau đây của chiến lược này có thể được tối ưu hóa:
Tối ưu hóa các tham số chu kỳ của đường trung bình động để tìm ra sự kết hợp tối ưu của các tham số cho các giống và điều kiện thị trường khác nhau.
Thêm lọc các chỉ số kỹ thuật khác như MACD và KD để tránh tạo ra tín hiệu sai trong các thị trường giới hạn phạm vi.
Tối ưu hóa và điều chỉnh năng động chiến lược dừng lỗ để tránh điểm dừng lỗ quá gần trong khi đảm bảo dừng lỗ, với xác suất vượt qua cao hơn.
Tăng cơ chế quản lý vị thế như đầu tư cố định và tỷ lệ vị thế để kiểm soát rủi ro giao dịch duy nhất.
Chiến lược này là một chiến lược chéo trung bình động rất cổ điển. Nó tạo ra tín hiệu mua và bán bằng cách tính toán và so sánh mối quan hệ giữa trung bình động ngắn hạn và dài hạn. Những lợi thế của chiến lược này là các thông số đơn giản, linh hoạt và phù hợp cho người mới bắt đầu học; những nhược điểm là các tín hiệu có thể không đủ ổn định và dễ bị mắc kẹt trong các thị trường giới hạn phạm vi. Với tối ưu hóa thích hợp, nó vẫn có thể trở thành một chiến lược định lượng rất thực tế.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // TODO: update strategy name strategy("{STRATEGY NAME}", overlay=true) // === TA LOGIC === // // // TODO: PUT YOUR TA LOGIC HERE LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34)) SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21)) // === INPUT BACKTEST DATE RANGE === enableShorts = input(false, title="Enable short entries?") FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2018, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === STRATEGY BUY / SELL ENTRIES === // TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal // long and short entries buy() => window() and LONG_SIGNAL_BOOLEAN sell() => window() and SHORT_SIGNAL_BOOLEAN if buy() strategy.entry("Long", strategy.long, comment="Long") if sell() if (enableShorts) strategy.entry("Short", strategy.short, comment="Short") else strategy.close("Long") // === BACKTESTING: EXIT strategy === sl_inp = input(10, title='Stop Loss %', type=float)/100 tp_inp = input(30, title='Take Profit %', type=float)/100 stop_level = strategy.position_avg_price * (1 - sl_inp) take_level = strategy.position_avg_price * (1 + tp_inp) strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)