バージョン2への移行

概要

バージョン1からバージョン2への移行では、同じコードを変更せずに使用するとエラーが発生する可能性があるいくつかの重要な変更が導入されます。更新されたチュートリアルを確認することを強くお勧めします。このガイドは、移行プロセス中の一般的な落とし穴を回避するのに役立ちます。

成功の確認: elapse() == 0 を使用

バージョン1では、elapse 関数は成功時に True を返し、そうでない場合は False を返します。通常、戦略ループは while elapse(duration) を使用して成功を確認します。しかし、バージョン2では、elapse はブール値の代わりにコードを返し、0 が成功を示し、それ以外の値がエラーを示します。したがって、コードは戻り値が 0 であるかどうかを確認するように更新する必要があります。

例えば: while elapse(duration) == 0 コードが変更されない場合、成功を示す 0 の戻り値が False として扱われるため、失敗します。elapse に関連する他のメソッド、例えば submit_buy_ordersubmit_sell_order もブール値の代わりに elapse と同様のコードを返します。成功を確認するために、それらの戻り値が 0 であるかどうかを確認してください。

データフォーマットの変更

HftBacktest に供給されるデータフォーマットは大幅に変更されました。すべての情報を保持するために、生データからデータを再処理することを強くお勧めします。ただし、生データが利用できない場合は、v1 から v2 への データ変換ユーティリティ が提供されています。

主な変更点は次のとおりです。

  • SOA から AOS へ: フォーマットはカラム配列 (SOA) から構造化配列 (AOS) に変更されました。

  • サイドカラムの削除: side カラムが削除されました。バージョン2では、サイドは ev フィールドフラグ、BUY_EVENT および SELL_EVENT によって示されます。

  • タイムスタンプの処理: バージョン1では、データユーティリティはイベントの順序を修正するために、いずれかのタイムスタンプを -1 に置き換えて、取引所またはローカル側の無効なイベントを示します。バージョン2では、取引所またはローカル側のイベントの有効性は、ev フィールドの EXCH_EVENT および LOCAL_EVENT フラグによって決定されます。

  • タイムスタンプ単位: 厳密には強制されていませんが、タイムスタンプ単位はマイクロ秒からナノ秒に変更されました。

さらに、ライブ注文レイテンシーデータのフォーマットも SOA から AOS に変更されました。