Đây là một chiến lược giao dịch dựa trên đường chéo hai đường trung bình động. Nó tạo ra tín hiệu mua và bán khi hai đường trung bình động có chiều dài khác nhau giao nhau. Cụ thể, nó đi dài khi MA nhanh hơn vượt qua trên MA chậm hơn, và đi ngắn khi MA nhanh hơn vượt qua dưới MA chậm hơn.
Lý thuyết cốt lõi của chiến lược này nằm trong các nguyên tắc chéo giữa hai đường trung bình động. Một đường trung bình động là giá trung bình toán học trong một khoảng thời gian nhất định. Nó giúp lọc tiếng ồn thị trường và tiết lộ xu hướng giá rõ ràng hơn.
Trong chiến lược này, MA ngắn hạn nắm bắt xu hướng ngắn hạn trong khi MA dài hạn nắm bắt xu hướng dài hạn.
Cụ thể, chiến lược tính toán các MA bằng cách sử dụng ta.sma trong khoảng thời gian dài và ngắn được xác định bởi người dùng. Sau đó nó sử dụng ta.crossover và ta.crossunder để phát hiện các giao thoa vàng và giao thoa chết giữa hai MA. Khi MA ngắn vượt trên MA dài, đi dài. Khi MA ngắn vượt dưới, đi ngắn.
Những lợi thế chính của chiến lược này bao gồm:
Ngoài ra còn có một số rủi ro:
Để giảm thiểu rủi ro, các tham số có thể được điều chỉnh, dừng lỗ và lấy lợi nhuận có thể được kết hợp hoặc các chỉ số kỹ thuật khác có thể được thêm vào.
Có chỗ cho việc tối ưu hóa thêm:
Tóm lại, đây là một chiến lược khởi đầu lý tưởng cho giao dịch thuật toán, nhờ sự đơn giản của nó trong logic và các tham số trong khi vẫn có thể nắm bắt hiệu quả sự đảo ngược thị trường.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true) // User-defined input for moving averages long_period = input(20, title="Long Period") short_period = input(5, title="Short Period") type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"]) // Calculating moving averages long_ma = ta.sma(close, long_period) short_ma = ta.sma(close, short_period) // Plot moving averages plot(long_ma, title="Long Moving Average", color=color.red) plot(short_ma, title="Short Moving Average", color=color.green) // Strategy logic for crossing of moving averages longCondition = ta.crossover(short_ma, long_ma) shortCondition = ta.crossunder(short_ma, long_ma) // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Optional: Add stop loss and take profit stop_loss_perc = input(1, title="Stop Loss (%)") / 100 take_profit_perc = input(2, title="Take Profit (%)") / 100 strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc)) strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))