Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Dùng add.signal() để thêm một sigCrossover chỉ định rằng SMA50 cắt xuống dưới SMA200.
  • 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 = "___")
Chỉnh sửa và Chạy Mã