Chiến lược này được thiết kế dựa trên thập tự vàng và thập tự tử của các đường trung bình động kép. Nó đi dài khi đường trung bình động ngắn vượt qua đường trung bình động dài, và đóng vị trí khi đường trung bình động ngắn vượt qua đường trung bình động dài. Chiến lược đơn giản và dễ hiểu, phù hợp cho người mới bắt đầu học.
Chiến lược chủ yếu dựa trên các chỉ số sma (gần) 14) và sma (gần) 28.
Đầu tiên xác định các đường trung bình di chuyển ngắn và dài:
short_ma = sma(close, 14)
long_ma = sma(close, 28)
Sau đó xác định lối vào và lối ra dựa trên thập giá vàng và thập giá chết:
longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma)
Đi dài khi MA ngắn vượt qua MA dài:
strategy.entry("Buy", strategy.long, when = longCondition)
Khóa vị trí khi MA ngắn vượt qua dưới MA dài:
strategy.close_all(when = shortCondition)
Logic là đơn giản và rõ ràng, sử dụng các chéo của hai MAs để xác định các lối vào và lối ra.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Kiểm tra các khoảng thời gian MA ngắn và dài khác nhau, chẳng hạn như (5, 10), (10, 20), (20, 60) vv để tìm ra sự kết hợp tối ưu.
Thêm các bộ lọc như khối lượng giao dịch, chênh lệch giá vv gần các giao dịch chéo MA để tránh giao dịch quá mức trong các thị trường khác nhau.
Đặt giá dừng lỗ hoặc sử dụng MA như là đường dừng lỗ để kiểm soát lỗ giao dịch duy nhất.
Thêm các chỉ số phụ như MACD, KDJ vv để cải thiện hiệu suất chiến lược.
Tìm các điểm nhập tốt hơn gần MA thay vì nhập ngay tại giao lộ. Ví dụ, nhập vào các điểm phân kỳ MA.
Chiến lược MA kép rất đơn giản cho người mới bắt đầu sử dụng. Nhưng nó nhạy cảm với biến động thị trường và có rủi ro mất mát. Chúng ta có thể cải thiện nó bằng cách tối ưu hóa các thông số, thêm bộ lọc, kết hợp dừng lỗ, kết hợp các chỉ số khác v.v. Nó có thể hoạt động tốt trong xu hướng mạnh nhưng nên được sử dụng thận trọng hoặc dừng lỗ thích hợp trong các thị trường dao động.
[/trans]
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ //@version=2 // strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25) minGainPercent = input(0.6) gainMultiplier = minGainPercent * 0.01 + 1 longCondition = crossover(sma(close, 14), sma(close, 28)) shortCondition = crossunder(sma(close, 14), sma(close, 28)) avg_protection = input(1) gain_protection = input(1) strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true)) strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))