sigCrossover を使う
この戦略ではロングのフィルターが必要ですが、それだけでは取引を実行する条件としては不十分です。ただし、その条件が成り立たなくなった瞬間に、戦略は一切ポジションを保有すべきではありません。この演習では、sigCrossover() 関数を使って、上で指定したルールの逆を実装します。
常に条件が成り立つかどうかを判定する sigComparison() と違い、sigCrossover() はシグナルが「最初に」発生した瞬間にだけ陽性を返し、その後は返しません。これは、取引の起点として使うシグナルに適しており、多くの場合で何度も取引が発生するのではなく、1回だけ起動させたいからです。
ここでは、SMA50 が SMA200 を下抜けることを指定して、sigCrossover() 関数を実装します。このシグナルは移動平均フィルターが「この戦略がポジションを持つのに適さない環境」と判断したときにポジションを手仕舞うため、filterexit と名付けます。
この演習はコースの一部です
Rで学ぶ金融トレーディング
演習の手順
add.signal()を使って、SMA50がSMA200を下抜けるsigCrossoverを追加してください。- このシグナルには
filterexitというラベルを付けてください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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 = "___")