Uruchamianie strategii
Gratulacje! Udało ci się stworzyć strategię w quantstrat! Na podsumowanie: twoja strategia korzysta z trzech wskaźników i pięciu sygnałów. Wymaga ona, aby wartość wskaźnika DVO_2_126 była poniżej 20 oraz aby SMA50 było większe od SMA200. Strategia generuje sygnał sprzedaży, gdy DVO_2_126 przekroczy 80 od dołu lub gdy SMA50 spadnie poniżej SMA200.
Aby strategia działała poprawnie, zdefiniowano pięć sygnałów:
sigComparison— sprawdza, czySMA50jest większe odSMA200;sigThresholdzcrossustawionym naFALSE— sprawdza, czyDVO_2_126jest mniejsze od 20;sigFormula— łączy powyższe warunki i ustawiacrossnaTRUE;sigCrossover— sprawdza, czySMA50spada poniżejSMA200;sigThresholdzcrossustawionym naTRUE— sprawdza, czyDVO_2_126przekracza 80.
Strategia inwestuje 100 000 USD (wartość initeq) w każdą transakcję. Może wystąpić niewielkie uśrednianie kosztu, gdy DVO_2_126 oscyluje wokół 20, jednak jego wpływ jest zazwyczaj pomijalny w porównaniu z początkową alokacją.
W tym ostatnim rozdziale dowiesz się, jak przeglądać rzeczywiste wyniki swojego portfela. Najpierw jednak, aby wyniki zostały wygenerowane, musisz uruchomić strategię i uzupełnić standardowy kod konfiguracyjny, który pozwoli quantstrat zarejestrować wszystkie dane. Kod z tego ćwiczenia przyda ci się do skopiowania w przyszłych projektach.
To ćwiczenie jest częścią kursu
Handel finansowy w R
Instrukcje do ćwiczenia
- Użyj funkcji applyStrategy(), aby zastosować strategię (
strategy.st) do portfela (portfolio.st). Wynik zapisz w obiekcieout. - Uruchom niezbędne funkcje, które zarejestrują wyniki strategii:
updatePortf()z ustawionym parametremdaterange, a następnieupdateAcct()iupdateEndEq(). - Na podstawie uzyskanych danych sprawdź, czy uda ci się ustalić datę ostatniej transakcji.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Use applyStrategy() to apply your strategy. Save this to out
out <- applyStrategy(strategy = ___, portfolios = ___)
# Update your portfolio (portfolio.st)
updatePortf(___)
daterange <- time(getPortfolio(___)$summary)[-1]
# Update your account (account.st)
updateAcct(___, daterange)
updateEndEq(___)