オープンソースの定量的フレームワークバックトレーダーFAQ:フィラー、注文実行量を総トランザクション量に関連付けます

完全なバックトレーダーのテクニカルチュートリアルはこちら

デフォルトでは、バックトレーダーで発行された注文が取引される場合、取引されたバーの総取引量(ボリューム)に関係なく、全量が取引されます。

たとえば、現在のバーの最後に、次の成行買い注文を作成します。

self.buy(size=100)

次に、次のバーまで、100株が始値で取引されます。次のバーの合計取引量が50株であっても、100株の取引順序には影響しません。

それで、注文量がバーの総量にリンクされるように、このデフォルトの動作を変更できますか?少なくとも総量を超えないようにしてください。方法があり、それはオーダーフルフィルメントオブジェクトフィラーを使用することです。フィラーには3種類あり、以下に紹介します。

 

(1)フィラーの固定数:FixedSize

使用方法は次のとおりです(100株の買い注文self.buy(size = 100)が戦略で作成され、次の2つのバーの合計取引量がそれぞれ90と80であると仮定します)。

...
filler = bt.broker.fillers.FixedSize(size=70)
cerebro.broker.set_filler(filler)
cerebro.run()

次に、バーの実際の注文数(買い注文または売り注文に関係なく)=分(サイズ、バーの総量、残りの注文数)

この場合、注文は別々に複数回実行される場合があります。注文は、最初のバーで70株、2番目のバーで30株を取引します。

フィラーパラメータのサイズがFalseに設定されている場合、同等のサイズはバーの合計取引量であり、最初のバーで90株が取引され、2番目のバーで10株が取引されます。

(2)固定バーパーセンテージのフィラー:FixedBarPerc

使用方法は次のとおりです(100株の買い注文self.buy(size = 100)が戦略で作成され、次の2つのバーの合計取引量がそれぞれ90と80であると仮定します)。

... 
filler = bt.broker.fillers.FixedBarPerc(perc=70) # 最多执行bar总成交量的70%
cerebro.broker.set_filler(filler) cerebro.run()

次に、バーでの注文の実際の取引数量(買い注文または売り注文に関係なく)= min(バーの合計取引量* perc / 100、注文の残りの数量)

次に、63株(90 * 70%)が最初のバーで取引され、37株が2番目のバーで取引されました。

(3)バーポイントパーセンテージのフィラー:BarPointPerc

使用方法は次のとおりです(100株の買い注文self.buy(size = 100)が戦略で作成され、次の2つのバーの合計取引量がそれぞれ90と80であると仮定します)。

... 
filler = bt.broker.fillers.BarPointPerc(minmov=0.1, perc=70)
cerebro.broker.set_filler(filler) cerebro.run()

 

この充填剤は、あまりにも明確に文書を読んでいない文書は言った:minmovは最低価格変更部、ボリューム(注文量)範囲内に均一に分布されている。ハイ-ローを 使用してminmovパーティションに。

BarPointPerc:高値から安値の価格範囲全体でバーのボリュームを均一に分散し、単一の価格ポイントに対応するボリュームのパーセンテージを使用します。

このBarPointPercフィラーがどのように注文を実行するかについては誰でも議論できます。

 

最後に、フィラーはいくつかの複雑なシナリオに合わせてカスタマイズすることもできますドキュメントを参照してください

おすすめ

転載: blog.csdn.net/qtbgo/article/details/111057196