BitflyerFXでCCXTを使って成行注文を出しその執行価格を取得する方法Bitflyerの自動売買BOTで成行注文を出す場合、その執行価格を把握しておきたい場面があると思います。この記事では成行注文の執行価格を表示するpythonコードを紹介しておきます。・CCXTライブラリを使うCCXT経由でBitflyerに成行注文を出す方法は、以前にこちらの記事で解説しているので参考にしてください。",e)print("20秒待機してやり直します")time.sleep(20)コードの解説まずは以下のコードでBitflyerから約定履歴の一覧を取得しています。」で自分の約定履歴の一覧を取得することができます。取得した約定履歴の一覧からは、[size]で数量、[price]で執行価格を取得することができます。基本的な流れ成行注文の場合、注文がいくつかに分割されて異なる価格で執行されることも多いです。そのため、上記の関数では以下の2つの情報を必要としています。成行注文は、分割されて約定しても全て同一の注文ID(order_acceptance_id)で記録されます。以下のような感じです。0.01}]そのため、成行注文を出したときに注文ID(order_acceptance_id)を覚えておいて、その注文IDで約定履歴を検索すれば、分割されて執行されたすべての注文を捕捉することができます。1.注文がすべて執行されたことを確認する成行注文を送った後に、20秒ごとに約定履歴をAPIで取得して、注文IDが一致している注文の「価格」と「数量」を取得します。それが以下の部分です。)そして「数量」の合計が、最初に送った注文数量と一致すれば、すべて約定したと判断します。一致しなければ、一致するまで20秒ごとに確認を繰り返します。ここでwhileループの先頭に戻る一致したらすべての注文が執行されたものとして次に進みます。2.執行価格の平均を計算するすべての注文数量が約定したことを確認できたら、執行価格を計算します。これは以下の式で計算できます。Bこれをpythonで1行で書くと以下のようになります。sum(size))3.注文サイズの計算方法の注意点もう1つだけ注意点があります。それが小数点の計算です。pythonでは2進法で小数を計算するため、成行注文が細かく割れてしまった場合には、注文サイズが送ったものと一致しなくなることがあります。0.21BTCを成行注文で出した場合を仮定してください。注文が以下のように割れて約定したとします。0.21BTCになります。それではpythonで同じ計算をしてみましょう。そこでround()を使って、注文したときと同じ桁数に小数点を丸める必要があります。それが以下の箇所です。lot:これを最初私はよくわかっていなかったのですが、note読者の方に症状を教えていただき発見できました。いつも計算が一致しないわけではなく、細かい単位で注文が割れた場合の一部のケースでこの症状がおこるようです。成行注文のコードと組み合わせる最後に成行注文を出すコードと組み合わせたパターンも書いておきます。以下のコードで成行注文を出せば、約定後にその執行価格を返すところまでセットで実行できます。損益やスリッページの計算、建値の計算、損切価格ラインの決定などに使ってください。コメントをキャンセルメールアドレスが公開されることはありません。