始める無料で始める

sigCrossover を使う

この戦略ではロングのフィルターが必要ですが、それだけでは取引を実行する条件としては不十分です。ただし、その条件が成り立たなくなった瞬間に、戦略は一切ポジションを保有すべきではありません。この演習では、sigCrossover() 関数を使って、上で指定したルールの逆を実装します。

常に条件が成り立つかどうかを判定する sigComparison() と違い、sigCrossover() はシグナルが「最初に」発生した瞬間にだけ陽性を返し、その後は返しません。これは、取引の起点として使うシグナルに適しており、多くの場合で何度も取引が発生するのではなく、1回だけ起動させたいからです。

ここでは、SMA50SMA200 を下抜けることを指定して、sigCrossover() 関数を実装します。このシグナルは移動平均フィルターが「この戦略がポジションを持つのに適さない環境」と判断したときにポジションを手仕舞うため、filterexit と名付けます。

この演習はコースの一部です

Rで学ぶ金融トレーディング

コースを見る

演習の手順

  • add.signal() を使って、SMA50SMA200 を下抜ける 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 = "___")
コードを編集して実行