Sử dụng sigCrossover
Có một bộ lọc long là cần thiết, nhưng chưa đủ để vào lệnh cho chiến lược này. Tuy nhiên, ngay khi điều kiện không còn đúng, chiến lược không được nắm giữ bất kỳ vị thế nào. Trong bài này, bạn sẽ triển khai điều ngược lại với quy tắc đã nêu ở trên bằng cách dùng hàm sigCrossover().
Khác với sigComparison(), vốn luôn cho biết một điều kiện có đúng hay không, sigCrossover() chỉ trả về dương vào khoảnh khắc tín hiệu xuất hiện lần đầu tiên, và sau đó thì không. Điều này hữu ích cho một tín hiệu dùng để khởi tạo giao dịch, vì trong hầu hết trường hợp bạn chỉ muốn một giao dịch, thay vì kích hoạt lặp đi lặp lại.
Ở đây, bạn sẽ triển khai hàm sigCrossover() với chỉ định SMA50 cắt xuống dưới SMA200. Bạn sẽ gán nhãn tín hiệu này là filterexit, vì nó sẽ thoát vị thế khi bộ lọc trung bình động cho thấy môi trường không thuận lợi để chiến lược tiếp tục nắm giữ vị thế.
Bài tập này là một phần của khóa học
Giao dịch tài chính với R
Hướng dẫn bài tập
- Dùng
add.signal()để thêm mộtsigCrossoverchỉ định rằngSMA50cắt xuống dướiSMA200. - Gán nhãn tín hiệu này là
filterexit.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Add a sigCrossover which specifies that the SMA50 is less than the SMA200 and label it filterexit
add.signal(strategy.st, name = "___",
# We're interested in the relationship between the SMA50 and the SMA200
arguments = list(columns = c("___", "___"),
# The relationship is that the SMA50 crosses under the SMA200
relationship = "___"),
# Label it filterexit
label = "___")