Använda sigCrossover
Ett långt filter är nödvändigt, men inte tillräckligt för att öppna en position i den här strategin. Däremot ska strategin inte hålla någon position alls i det ögonblick villkoret inte längre gäller. I den här övningen implementerar du motsatsen till regeln ovan med hjälp av funktionen sigCrossover().
Skillnaden mot sigComparison(), som alltid anger om ett villkor gäller eller inte, är att sigCrossover() bara ger ett positivt värde i det ögonblick signalen uppstår för första gången – inte igen efter det. Det är användbart för en signal som ska initiera en transaktion, eftersom du i de flesta fall bara vill ha en transaktion, snarare än att transaktioner utlöses om och om igen.
Här implementerar du funktionen sigCrossover() och anger att SMA50 korsar under SMA200. Du märker signalen filterexit, eftersom den avslutar din position när det glidande medelvärdesfiltret indikerar att marknadsläget inte är gynnsamt för att hålla en position.
Den här övningen är en del av kursen
Finansiell handel i R
Övningsinstruktioner
- Använd
add.signal()för att lägga till ensigCrossoversom anger attSMA50korsar underSMA200. - Märk signalen
filterexit.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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 = "___")