#問題
先日書いた「Quantopian事始め」の記事で、期間を長くしてバックテストを実行しようとするとなぜか以下のエラーエッセージにぶち当たる。(3ヶ月くらいの期間で実行すると回る。)
BadOrderParameters: Attempted to place an order with a stop price of nan
どうやら損切り注文の部分で、なんかしらの銘柄の株価を取得できず、損切り価格の値がNanになっているために怒られているらしい。
#対策
損切り注文の部分でcan_trade()を使って、銘柄の取引が可能である場合に注文を実行するようにする。
if (position > 0) & (data.can_trade(stock)):
order_target_percent(stock, 0, style=StopOrder(price - (price*0.005)))
#結果
無事直近3年でもバックテストが回った。(結果はさておき)
can_trade関数は偉大すぎるので、基本的に注文を実装する時には適用した方がいいのかもしれない。