Použití sigCrossover
Splnění podmínky dlouhého filtru je sice nutné, ale nestačí k otevření pozice v této strategii. Jakmile ale tato podmínka přestane platit, strategie by neměla držet žádnou pozici. V tomto cvičení implementuješ opak výše uvedeného pravidla pomocí funkce sigCrossover().
Na rozdíl od sigComparison(), která průběžně vyhodnocuje, zda podmínka platí či nikoli, sigCrossover() vrátí kladný signál pouze v okamžiku, kdy podmínka poprvé nastane – a poté už ne. To se hodí pro signály, které spouštějí transakci: ve většině případů chceš jednu transakci, ne sérii opakovaných příkazů.
V tomto případě implementuješ funkci sigCrossover() tak, aby zachytila moment, kdy SMA50 klesne pod SMA200. Signál pojmenuješ filterexit, protože ukončí tvoji pozici ve chvíli, kdy filtr klouzavého průměru indikuje, že podmínky pro držení pozice nejsou příznivé.
Toto cvičení je součástí kurzu
Finanční obchodování v R
Pokyny k cvičení
- Pomocí
add.signal()přidej signálsigCrossover, který zachytí moment, kdySMA50klesne podSMA200. - Pojmenuj tento signál
filterexit.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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 = "___")