Używanie sigCrossover
Obecność długiego filtra jest warunkiem koniecznym, ale nie wystarczającym, aby strategia zajęła pozycję. W chwili, gdy warunek przestaje być spełniony, strategia powinna natychmiast zamknąć wszelkie otwarte pozycje. W tym ćwiczeniu zaimplementujesz regułę odwrotną do tej określonej powyżej, korzystając z funkcji sigCrossover().
W odróżnieniu od sigComparison(), która na bieżąco informuje o tym, czy dany warunek jest spełniony, sigCrossover() zwraca wartość pozytywną tylko w momencie pierwszego wystąpienia sygnału – i już nie powtarza tego w kolejnych krokach. Jest to przydatne w przypadku sygnałów inicjujących transakcje, gdy chcesz, aby dana transakcja została wykonana tylko raz, a nie wyzwalana wielokrotnie.
W tym przypadku zaimplementujesz funkcję sigCrossover(), określając, że SMA50 schodzi poniżej SMA200. Nadasz temu sygnałowi etykietę filterexit – sygnał ten będzie zamykał pozycję w momencie, gdy filtr oparty na średnich ruchomych wskaże, że warunki rynkowe nie sprzyjają utrzymaniu pozycji.
To ćwiczenie jest częścią kursu
Handel finansowy w R
Instrukcje do ćwiczenia
- Użyj
add.signal(), aby dodać sygnałsigCrossoverokreślający, żeSMA50schodzi poniżejSMA200. - Nadaj temu sygnałowi etykietę
filterexit.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 = "___")