
Chiến lược này sử dụng đường trung bình EMA của hai chu kỳ khác nhau để đánh giá xu hướng đảo ngược bằng cách giao nhau, để làm tín hiệu vào và ra. Chiến lược đơn giản, dễ hiểu và dễ vận hành.
Chiến lược này sử dụng hàm ta.ema để tính hai đường trung bình EMA, một dài 10 chu kỳ và một dài 20 chu kỳ, đại diện cho xu hướng ngắn hạn và dài hạn. Mã dùng ta.crossover và ta.crossunder để đánh giá sự giao nhau của hai EMA, làm nhiều khi đi qua EMA dài hạn trên EMA ngắn hạn và trống khi đi qua EMA dài hạn dưới EMA ngắn hạn.
Chiến lược này cũng sử dụng biến số lastCrossTime để ghi lại thời gian giao dịch cuối cùng, để ngăn chặn việc giao dịch không có ý nghĩa khi giao dịch lặp lại. Mỗi khi giao dịch có hiệu quả, trước tiên xóa tất cả các vị trí hiện tại, sau đó mở lệnh theo hướng giao dịch. Sau khi mở vị trí, thiết lập dừng lỗ để thanh toán vị trí.
Các chiến lược của chúng tôi rất đơn giản, rõ ràng, dễ hiểu và dễ vận hành.
Sử dụng EMA để đánh giá điểm đảo ngược xu hướng là một chiến lược chỉ số kỹ thuật phổ biến và hiệu quả.
Sử dụng EMA theo chu kỳ khác nhau, bạn có thể đảm bảo nắm bắt xu hướng lớn, đồng thời tăng độ nhạy cảm với những thay đổi ngắn hạn.
Cài đặt Stop Loss để kiểm soát rủi ro và lợi nhuận của một giao dịch.
Sử dụng lastCrossTime biến lọc các tín hiệu lặp lại để tránh giao dịch vô nghĩa.
EMA cross dễ tạo ra tín hiệu sai và có một số rủi ro sai lệch.
TP và SL cố định khó đối phó với sự thay đổi của thị trường, nên thiết lập dừng lỗ động.
Hệ thống chỉ dựa trên EMA Cross dễ gây thiệt hại trong tình huống chấn động.
Không tính đến tác động của chi phí giao dịch, trong hoạt động thực tế cần chú ý đến chi phí giao dịch như spread.
Chiến lược này chủ yếu được áp dụng cho các hoạt động theo xu hướng và có thể không hiệu quả trong các hoạt động chấn động.
Có thể cải thiện bằng cách tối ưu hóa lỗ dừng, tăng điều kiện lọc, kết hợp các chỉ số khác. Khi thực hành, cần kiểm soát rủi ro chặt chẽ để tránh tổn thất đơn lẻ quá lớn.
Các tham số có thể được thử nghiệm để tối ưu hóa EMA, tìm kiếm sự kết hợp chu kỳ phù hợp hơn.
Thêm các chỉ số hỗ trợ như KDJ, MACD. Tránh giao dịch không có ý nghĩa trong tình huống chấn động.
Thiết lập dừng lỗ động, chẳng hạn như dừng lỗ biên theo xu hướng.
Tăng khả năng phán đoán về khối lượng giao dịch và xem xét thêm khi xuất hiện một lượng lớn.
Kết hợp với các hình dạng đồ họa khác để đánh giá, chẳng hạn như phá vỡ các điểm kháng cự quan trọng.
Cân nhắc đến tác động chi phí của ổ cứng và đặt mức dừng lỗ hợp lý.
Chiến lược tổng thể của chiến lược này rất đơn giản và rõ ràng, sử dụng xu hướng đánh giá chéo chậm và nhanh chóng của đường trung bình EMA, kết hợp với dừng lỗ để kiểm soát lợi nhuận rủi ro. Chiến lược này dễ vận hành, nhưng có một số rủi ro đánh giá sai, cần tối ưu hóa các tham số chỉ số hơn nữa, và hỗ trợ bằng các chỉ số kỹ thuật khác để giảm sai.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('XXXquang', overlay=true)
// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)
takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)
ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)
var float lastCrossTime = na
if ta.crossover(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Buy Order', strategy.long, qty=lotSize)
strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
if ta.crossunder(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Sell Order', strategy.short, qty=lotSize)
strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)