sigCrossover gebruiken
Een longfilter is nodig, maar niet genoeg om in deze strategie een trade te openen. Op het moment dat de voorwaarde niet meer geldt, mag de strategie echter helemaal geen positie meer aanhouden. In deze oefening implementeer je de omgekeerde regel van hierboven met de functie sigCrossover().
In tegenstelling tot sigComparison(), dat altijd aangeeft of een voorwaarde geldt of niet, geeft sigCrossover() alleen een positief signaal op het moment dat het signaal voor het eerst optreedt, en daarna niet opnieuw. Dat is handig voor een signaal dat een transactie moet starten, omdat je in de meeste gevallen slechts één transactie wilt, in plaats van dat transacties steeds opnieuw worden getriggerd.
In dit geval implementeer je de functie sigCrossover() met de specificatie dat de SMA50 onder de SMA200 kruist. Je geeft dit signaal het label filterexit, omdat het je positie sluit wanneer het voortschrijdend-gemiddeldefilter aangeeft dat de marktomgeving ongunstig is om een positie aan te houden.
Deze oefening maakt deel uit van de cursus
Financieel traden in R
Oefeninstructies
- Gebruik
add.signal()om eensigCrossovertoe te voegen waarin je specificeert dat deSMA50onder deSMA200kruist. - Geef dit signaal het label
filterexit.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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 = "___")