pyalgotrade で取引戦略をバックテストしたいのですが、ストップロス注文の送信に問題があります。
ドキュメントには次のように記載されています。ポジションは、注文を出すためのより高いレベルの抽象化です。これらは基本的に入退出注文のペアであり、手動で注文するよりも簡単に返品と PnL を追跡できます。
でポジションに入ります
myPosition = self.enterLong(self.__instrument, amount, True)
これは基本的に株式の新しいポジションを開き、市場価格で購入します。これはそれ自体で機能します。
次に、ストップ注文を出すことを期待します
myPosition.exitStop(stoplossValue, True)
…しかし、これは本当に奇妙な振る舞いをします!
ポジションが isFilled の場合 (enterLong 注文が実行された場合)、exitStop はアサート エラーを発生させます。
注文が isFilled になる前 (isActive の間) に exitStop を呼び出すと、コードはアサート エラーを生成しませんが、アクティブな注文はすぐにキャンセルされます。
最初の注文がまだ実行されていないときに exitStop を呼び出すのはまったく意味がありません。それとも、私は自分の考えから完全に外れていますか?
残念ながら、pyalgotrade のチュートリアル戦略はストップロス ロジックを使用していません (これは悪いことです)。