------0.21000000000000002そのため、合計サイズは四捨五入して規定の小数点以下に丸めておく必要があります。ご自身のBOTがすべての注文を小数点以下2桁で管理しているなら、小数点以下2桁で丸めれば大丈夫です。これが上記コードの以下の箇所です。前回の記事「CCXTでBitflyerに出した注文を管理・キャンセルする方法」の最後の練習問題の解答です。})fetch_open_orders()で未約定のすべての注文を取得し、それをfor文を使って1つずつキャンセルしていきます。指定するのが、今回のポイントでした。Bitflyerの場合は、product_codeを指定するのを忘れないようにしてください。いう変数に入れて順番に処理することができます。このとき、orders[?][“id”]は、for文の中では、o[“id”]で指定できます。前回の記事では、CCXTライブラリを使ってBitflyerの最終取引価格を取得し、それに基づいて「買い注文」をpythonのプログラムから出す方法を説明しました。送信した注文が約定したかどうかをチェックしたり、未約定の注文をキャンセルする方法を解説します。今回の説明にあたり、複数の注文があった方がいいので、前回作ったプログラムを使って3つほど注文を出してみましょう。pythonプログラムを3回実行するだけです。以下のように、3つの注文が置かれました。この注文情報をpythonのプログラムで取得してみましょう。Order)といいます。この未約定の注文は、「fetch_open_orders()」という共通の関数で取得できます。エディタに以下のコードを記述してください。)これを実行すると、以下のような結果が取得できます。前回までの記事を読んでいれば、特に目新しいことはないと思うので、コードの解説は省略します。paramsに「FX_BTC_JPY」を指定するのを忘れないようにしてください。先ほど出した未約定の注文が3つとも取得できているのが確認できます。fetch_open_orders()で取得した注文情報には、以下の情報が含まれます。注文をキャンセルする場合には、「注文ID」を使います。ここでは、シンプルに「注文ID」だけを表示したいので、以下のようにコードを修正しましょう。)変更したのは最後の「for文」のところだけですね。上記のfor文は、CryptowatchのAPIを取得する練習記事で解説したのと全く同じパターンです。」になっていることを把握できれば、同じやり方でデータを取り出せます。詳しくは「API編」の記事を参考にしてください。プログラミング未経験者の方にとって、for文は慣れるまで少しコツが必要です。最低限、for文/if文/while文だけは知らないと自動売買BOTが作れません。これらの構文を全く知らない方は、以下の記事を読んでおいてください。上記のコードを実行すると、以下のように注文IDだけを取得することができました。fetch_open_orders()の部分を、fetch_orders()に変更すれば、すべての注文(約定した注文/未約定の注文)をまとめて取得できます。何も指定しなければ直近100件のすべての注文が取得されますが、「count」というパラメーターを付ければ取得する件数を調整することができます。取得した注文情報の「status」を調べれば、約定したかどうかがわかります。closed」になっていれば約定しています。これを応用して、直近10件の注文が約定しているかどうかを調べるコードを書いてみましょう。以下のようになります。)で2つの変数の中身を繋いで表示することができます。間に空白や文字を入れることができます。上記のコードを実行すると以下のように表示されます。次はこの注文IDをもとにして、注文をキャンセルしてみましょう。注文をキャンセルする注文をキャンセルする場合は、cancel_order()という共通の関数を使います。注文IDがすでにわかっている場合は、以下のように書くだけでOKです。id=””の部分に注文IDを入れてください。間違えないようにしてください。Bitflyerでは、注文をキャンセルした際に、サーバーからは何のデータも返ってきません。キャンセルできたかどうかを確認したければ、もう1度、fetch_orders()を実行する必要があります。上記のコードを実行した後、もう1度、fetch_orders()を実行してみましょう。実行結果cancelで指定した注文が消えていますね。管理画面でも確認してみましょう。無事、注文が無くなっています。応用:一番新しい注文を取得してキャンセルするせっかくなので、手動で注文IDを指定するのではなく、fetch_open_orders()で取得した注文をそのままプログラムでキャンセルしてみましょう。今回は応用として「注文のうち一番新しいもの」を自動的にキャンセルします。取得した注文は、以下のように古い順番に並んでいます。[{注文1},{注文2},{注文3},....]この配列の最後の要素(一番新しい注文)を指定したければ、orders[-1]と指定すればOKです。コードを書いてみましょう。注文をキャンセルしています。取得した未約定の注文のうち、一番後ろの注文(一番最新の注文)の注文IDを指定しています。実行してもう1度、注文状況を取得してみましょう。無事、新しい方の注文が消えましたね。管理画面でも確認しておきましょう。新しい方の注文がキャンセルされています。注文の一覧を取得して、それらを「すべて」一括でキャンセルするプログラムを書いてみましょう。ヒントとしては、最初の「注文IDだけを表示する」のプログラムコードを修正して、for文の中に注文キャンセルのコードを入れるとうまくいきます。9件のコメントCCXTライブラリでBitflyerに注文を出す方法をマスターするさて、前々回の記事ではBitflyerのAPIを使って買い注文を出す方法を紹介しました。このとき注文を出すだけでも結構長いコードを書かなければならなかったのを覚えているでしょうか?CCXTライブラリを使えば、これを1行で書くことができます。最低注文単位は0.01BTCからです。現在(2018年4月)のレートでいうと9000円くらいですね。そのため、口座には最低1万円以上の資金が必要です。今回はレバレッジ無しで最低単位の注文をします。一応テストなので、約定しないように注意しながら、現在価格から10%以上離れた場所に指値を入れます。それをキャンセルするところまでプログラムしてみます。bitFlyerのアカウント登録がまだの方は、ぜひこちらから登録してください。2018年4月から最低注文単位が0.01BTCに引き上げられました。この記事はそれ以前に作成したものなので、画像が0.001BTCのままになっています。文字部分は修正しています。現在のBTC-FX価格を取得する前々回の記事では、BTC-FXの画面にログインして目視で価格を確認しました。今回はより本格的に、価格を調べるところもすべてPythonのプログラムでやりましょう。エディタを起動して以下のように記載してください。})pprint(ticker)コードの解説1行目と2行目でccxtライブラリとpprintライブラリをimportします。これは前回の記事と同じですね。pprintライブラリは配列を綺麗に表示するために使います。ccxt.bitflyer()」は、ビットフライヤーで関数を使うために必ず最初に書かなければならないコードです。準備のようなものだと思ってください。4行目でティッカー情報を取得しています。学んだように、ティッカー情報の取得はパブリックAPIなので、この時点ではAPIキーやシークレットは必要ありません。Bitflyerの場合は、FXでは「product_code」を「FX_BTC_JPY」に指定するのを忘れないようにしてください。黒い画面に表示しています。実行結果それでは、上記のコードをpythonファイルで保存して、Anacondaプロンプトで実行してみましょう。以下のように表示されました。None}この中で、最終取引価格(=現在価格)だけ知りたければ、「last」の部分を見ればOKです。この記事の執筆時点では、903111円(90万3111円)ですね。bid(買い板の中の最高価格)を見てもいいです。売買BOTのアルゴリズムで買いシグナルが出た場合、指値注文を入れるのであれば、この「bid」か「last」のどちらかの価格で指値を入れることが多いと思います。この取得したJSONデータから最終取引価格(last)だけ取り出したければ、先ほどのpythonのプログラムの5行目を以下のように書けばOKです。)これは「JSON形式のデータから欲しい数字だけを取り出そう!」の復習なので、わからない方はこちらを読んでください。FXの証拠金残高を確認する次にポジション管理のために、FXの証拠金残高などを取得してみましょう。エディタに以下のコードを書いてください。今回はプライベートAPIを使うので、APIキーとAPIシークレットを準備する必要があります。4行目・5行目の’**********’の部分に各自のAPIキー・シークレットをそれぞれ入力してください。証拠金残高を取得する共通の関数がありません。そのため、ここではBitflyerの「v1/me/getcollateral」というAPIを使っています。(collateralは英語で「担保」という意味です)。BitflyerのAPIドキュメントこのようにCCXTライブラリでは、共通のメソッドが見つからない場合に、各取引所で個別に提供されているAPIを、直接使うこともできます。具体的な方法については、以下の記事で紹介しています。他の場面でも困ったら参考にしてみてください。コードをAnacondaプロンプトで実行してみましょう。以下のような結果が表示されます。・預入証拠金の評価額(collateral)・ポジションの評価損益(open_position_pnl)・現在の必要証拠金(require_collateral)・現在の証拠金維持率(keep_rate)です。自動売買BOTでは、証拠金の残高から取得可能なポジションのサイズを自動計算させて、可変ロットで注文を出すこともできます。この方法は第7回の「資金管理編」で詳しく解説するので楽しみにしていてください。初心者の方は、まずは固定ロット(0.1BTCなど)でちゃんと売買できるようになりましょう!買い注文を出す今回はテストなので、最終取引価格が90万円のところ、10%以上離して80万円で買い指値を入れてみます。数量は最低単位の0.01BTCにします。注文には、「create_order()」というCCXTの共通の関数を使います。エディタを起動して以下のコードを書いてください。出すための関数、買い注文・売り注文を出すための関数もありますが、上記のように、create_order()で詳細を指定すれば、全パターンの注文を出せますので、この1つだけ書き方を覚えたほうが簡単です。以下だけ覚えてください。各取引所のAPIに渡せるパラメーターBitflyerでは、「product_code」を「FX_BTC_JPY」に指定するのを忘れないようにしてください。これを忘れると現物注文になります。6行目で、Bitflyerのサーバーに注文を出すと、サーバーから注文IDが返ってきます。この注文IDは、今後、注文状況を確認したりキャンセルするときに使います。そのため、返ってきた値は、orderという変数で受け取り、それをpprint()で画面に表示しています。実行結果それでは、上記のコードをpythonファイルで保存して、Anacondaプロンプトで実行してみましょう。以下のように表示されれば成功です。実際にBitflyerのFX画面でも、注文が通っていることが確認できます。今回の記事はここまでです。4件のコメントCCXTが便利な理由!CCXTライブラリをインストールしよう前回の記事では、BitflyerのAPIを使って実際にBTC-FXの買い注文を出す方法を解説しました。長い記事だったので、疲れた方も多いかもしれませんね(笑)。読んでくださった方は、いきなりライブラリの利用からから入る方よりも、間違いなく「本質的な部分」の理解が深まっているはずなので自信を持ってください!さて、今回からはCCXTという外部のライブラリを使って、全く同じ「bitFlyerに買い注文を出す」コードを、もっと簡単に実装する方法を紹介します。CCXTライブラリのgithubページなぜCCXTライブラリを使うのか?1つ目の理由は、自分で長いコードを書かなくて済むからです。前回の記事では、「sendchildorder」というBitflyerのAPIを利用して、pythonプログラムからBitflyerのサーバーに注文を出すことができました。実際には、このAPIを利用するためには、以下のような手順を踏まなければなりませんでした。1)現在時刻のタイムスタンプを作る2)注文価格や数量などのパラーメータを設定する3)パラメーターをJSON形式に変換する4)メッセージ認証コード(暗号署名)を作る5)通信用のヘッダーを作成する6)リクエストを送るこのうち実質的に(2)の部分以外は、すべてのAPIリクエストで共通の処理です。毎回、自分で書かなくても、自動的に実行してくれたら楽ですよね。買い注文を出す場合には、「指値か/成行か」「買いか/売りか」「注文ロット数は?」「指値の価格は?」といった随時、変更したい部分だけを指定し、それ以外の部分は1つの関数にまとめておいて、いつでも呼び出せるようにしておけば、プログラムを書くのが遥かに楽になります。これをやってくれるのがライブラリです。取引所ごとのAPIの違いを気にしなくていい!2つ目の理由は、取引所ごとのAPIの仕様の違いを無くすためです。APIというのは、各取引所が独自に開発しているものなので、取引所によって仕様が違います。bitFlyerでは「sendchildorder」というAPIで注文を出しましたが、Zaifの場合は「trade」というAPIを使いますし、bitbankであれば、「order」というAPIを使います。通信に含めるパラメーターのルールも、取引所ごとに違います。Bitflyerは「size」で注文ロット数を指定しますが、Zaifは「amount」で注文ロット数を指定しなければなりません。このような取引所ごとのAPIの違いを気にしながら、自動売買BOTを作るのはかなり面倒です。1つの売買ロジックを複数の取引所で試したい場合でも、取引所ごとにpythonコードを書き直さなければなりません。裁定取引のように取引所間の価格差を利用した売買BOTを作りたい場合、取引所ごとに注文の方法が違うと非常に厄介です。CCXTライブラリで出来ることCCXTなどのライブラリは、このような「各取引所ごとのAPIによる注文の違い」を、見えない裏側でまとめて処理してくれます。そのため、先頭の1行目でCCXTライブラリを読み込めば、あとはすべての取引所で共通の関数を使うことができます。以下のような関数(メソッド)がすべての取引所で「共通」で使えます。板情報の取得また各取引所ごとのAPIをCCXTライブラリを経由して直接使うこともできます。bitFlyerにしか存在しないAPIを使いたい場合は、上記の共通のメソッドを使わずに、直接、BitflyerのAPIを利用することもできます。詳しい使い方は今後の記事で説明していきます!CCXTをインストールしようまずはCCXTライブラリをPythonにインストールしていきましょう。Anacondaプロンプトを起動して以下の1行を打ち込むだけです。ccxtすると以下のようにインストールが開始されます。」と出て、また文字が打てる状態になれば、インストールは完了です。Bitflyerで出来ることを確認しておく早速、CCXTライブラリを使ってpythonプログラムを1つ書いてみましょう。今回は、BitFlyerでできることを把握するために、対応している共通の関数(メソッド)の一覧を確認してみます。エディタを起動して以下のコードを書いてみてください。ccxt」は、CCXTライブラリを利用するための1文です。これは今後、CCXTを使うときには必ず記述します。pprint」は、pprint()を使ってデータを綺麗に表示するためにインポートしてみました。今までの記事では、すべてprint()だけで表示していましたが、改行がないと見にくいデータは、pprint()で表示した方が綺麗です。ccxt.bitflyer()」も、Bitflyerの取引所を使う場合には最初に必ず書かなければならないコードです。準備のようなものだと思ってください。4行目の「bitflyer.has」は、CCXTライブラリにあるBitflyerのプログラムが、どの共通関数に対応しているかを確認するためのコードです。これをpprint()を使って黒い画面に表示しています。実行結果それでは実行してみましょう!以下のように表示されました。「True」と記載されているものは、Bitflyerでも使えます。以下のような共通関数は使えるということですね。見てのとおり、結構、使えない(Flaseになっている)関数もあります。前回の記事を読んでくださった方ならわかると思いますが、CCXTライブラリは結局のところ、各取引所のAPIを裏側で叩いているだけのものが多いです。そのため、各取引所が該当するAPIを提供してくれていなければ使えません。上記の共通メソッドにはパラメーターを渡すこともできますが、どのようなパラメーターを渡すことができるかは、各取引所のAPIの仕様によって異なります。データを取得するためには、”FX_BTC_JPY”というパラメーターを渡さなければなりません。渡さないとBTC現物のデータが返ってきます。このようなルールも、裏で各取引所のAPIが動いていることを知っていなければ、なかなか自分で気づいたり調べることが難しいと思います。そのため、前回の記事ではわざわざ1度、APIだけで注文を出す方法を学びました。CCXTのインストールができず、3.6にダウングレードするとできたという報告があるようです。出来ない方は参考にしてください。シンプルに「買い」の注文を出してみることにします。今回はあくまでテストなので、成約しないように、最低単位のBTCを指値で注文します。注文後は、いったん自分で手動で注文をキャンセルしてください。最低注文単位は0.01BTCからです。現在(2018年4月)のレートでいうと1万円くらいですね。bitFlyerFXで注文するための必要証拠金は、レバレッジの倍率によって違います。レバレッジ2倍で100万円分(=約1BTC)のポジションを取るには、最低50万円の残高が必要です。レバレッジ10倍であれば、最低10万円の残高が必要です。ちなみに追証ラインは80%、ロスカットライン(証拠金維持率)は50%です。レバレッジ2倍の例だと、90万円を切った時点で追証がかかり、75万円を切ると強制決済されます。レバレッジ10倍の場合だと、98万円を切った時点で追証がかかり、95万円を切ると強制決済されます。・Bitflyerの必要証拠金について・Bitflyerのロスカット(証拠金維持率)についてこの記事では0.01BTCの注文しか出しませんので、残高は数万円もあれば十分です。2018年4月から最低注文単位が0.01BTCに引き上げられました。この記事はそれ以前に作成したものなので、文字部分は修正していますが、一部の画像が0.001BTCのままになっています。bitFlyerの買い注文のAPIbitFlyer(FX)の買い注文のAPIは以下のような形式になります。https://api.bitflyer.jp/v1/me/sendchildorder今まで勉強したパブリックAPIに似ていますね。こちらのURLは今までのようにブラウザで見ることはできません。理由は「POSTメソッドという通信方式で送らないといけないから」ですが、意味がわからなくても構いません。何となく以下のようなパラメーターをボディに含めて送る方式だと理解してください。必要なパラメーター1)product_code取引する通貨種類のこと。現物なら「BTC_JPY」。今回はFXなので「FX_BTC_JPY」2)child_order_type指値注文か成行注文か、という意味。今回は指値注文なので「LIMIT」と入れる。3)side買い(ロング)か売り(ショート)か。今回は買いエントリーするので「BUY」と入れる。4)price指値注文を入れる場合には、価格の指定が必須になる。今回は練習なので、bitFlyerFXの管理画面にログインして現在価格を確認して、そこから10~20%乖離した価格(間違って成約しない価格)を入れる。5)size注文数量(ロット数)。今回は、最低単位の0.01BTCだけ買いたいので、「0.01」を入れる。他にも設定できるパラメーターはありますが、今回、指定する必須のパラメーターはこれだけです。どのようなパラーメーターを設定できるのかは、BitflyerのAPI仕様書を見ればわかります。前の記事でも言いましたが、なるべく自分でAPI仕様書を読むことに対して、抵抗感が無くなるようにしておきましょう。買い注文のAPI仕様書(公式ドキュメント)買い注文の価格についてもう少しレベルの高い自動売買BOTだと、指値の注文価格は当然、自動で設定します。API経由で現在の板情報を取得して、買い板の中で一番高い価格(買い気配値)を設定することが多いです。当ブログでAPIの使い方を学んでくださった方は、大雑把なやり方のイメージは付くと思います。今回の記事では、BTC-FXの管理画面にログインして、自分の目で現在価格を確かめ、少し離したところに指値を入れることにします。この記事の執筆時点では、最終取引価格が90万500円なので、今回は10%以上離して、80万円に買い指値を入れてみます。具体的なPythonコードあまり前置きが長くなっても良くないので、いったん具体的なソースコードを全部見ておきましょう。長くなりますが、怖がらないで、まずはザっと意味を想像しながら、読んでみてください。)今まで当ブログで紹介した中では、一番長いpythonコードが出てきました。「ほら...やっぱり、プログラムは難しいじゃないか...騙された....」と思った方もいるかもしれません。上記をすべて自分で書く必要は全くありません。実は、「買い注文をするコード」を1行書くだけで実行してくれる便利な「ライブラリ」が存在するからです。「なんだよ!だったら最初からそれを教えろよ!」と思うかもしれません。次の記事からはその方法を紹介します。1度だけでいいので、「自分でAPI経由で注文してみる」ということをやってみることをお勧めします。応用力をつけて欲しいCCXTなどの便利なライブラリは、結局のところ、内側でBitflyerのAPIを呼んでいるだけにすぎません。内側で「どのようなことが行われているのか?」のイメージを掴んでおくことは、今後、自分で自動売買BOTを作る上で絶対に必要です。そのイメージがないと、「ライブラリでどんなことが可能なのか?」「どのようなカスタマイズが可能なのか?」「なぜ自分のコードが動かないのか?」「エラーが出た場合、どこに原因がありそうか?」が全く理解できなくなり、応用ができなくなるからです。内側で各取引所のAPIを呼んでいることを理解していれば、よりライブラリを便利に使いこなすことができます。BitflyerのAPIを直で使って注文を出すのは、今回の記事の1回限りなので、1度だけ勉強だと思って付き合ってみてください。繰り返しになりますが、プログラム初心者の方は、最初から自分でソースコードを書く必要はありません。最初に目指すべきなのは、「ソースコードを自力で読めるようになること」「読めば、大体、何をやっているのか理解できるようになること」です。読めるようになれば、ネットに落ちているソースコードを拾って、どの部分をカスタマイズすれば「やりたいこと」ができるのか、のアタリを付けることができます。ここでも上記のソースコードの意味を上から純に説明していきます。jsonまず最初にこのプログラムで必要なライブラリをインポートします。hashlibとhmacは、APIシークレットを暗号化して送るために使うライブラリです。requestsはAPIリクエスト(https://api.bitflyer.jp/~)を送るためのライブラリです。datetimeは現在時刻を取得するためのライブラリです。どの取引所でもAPIで注文を出すときには、現在時刻(タイムスタンプ)をリクエストに含めるのが普通です。jsonは、指値価格や注文量などのパラーメータをJSON形式に変換するために使います。"POST"ここは見れば意味がわかると思います。今回のプログラムで必要なURLやAPIキーなどの情報を最初に変数に入れておきます。今回はPOSTメソッドで通信するので、methodという変数も用意しておきます。str(datetime.datetime.today())現在時刻を、datetime.datetime.today()で取得します。この日付データを「文字」に変換するために、str()で囲っています。文字に変換しないとhttps通信で送れないからです。変換した結果を、「timestamp」という変数に入れておきます。json.dumps(param)これは、先ほど確認したように、bitFlyerのAPI注文で必要になるパラメーター(通貨の種類、指値/成行、ロング/ショート、指値価格、注文ロット数)です。これをparamという変数にセットして、それをjson.dumps()でJSON形式に変換します。JSON形式にしないと、HTTPS通信のデータとして送れないからです。JSON形式に変換したデータは、bodyという変数に入れておきます。これらのbodyのデータは、通信データの「ボディ」という部分に入れて送ります。メールの本文に該当するイメージです。).hexdigest()最初に読んだとき、この部分が一番、「難しい...わからない...」と思った方が多いかもしれません。この部分では、「この注文メッセージを作って送っているのが、本当にあなた本人である」「成りすましや通信途中での改竄がされていない」ということを証明するために、APIシークレットを鍵にして、本文を暗号化(署名)しています。いわゆるメッセージ認証コード(HMAC)という認証のための暗号アルゴリズムですが、暗号分野に興味のある方以外は、深く理解する必要はありません。何となく「こう書くものなんだ」と考えておいてください。python」で検索すればわかります。'application/json'}ここでは、通信データのヘッダーを作っています。メールのヘッダーのようなものですね。ここに、「APIキー」「現在時刻」と、さきほどの「暗号署名」をセットします。これで通信文の準備はできたので、あとはbitFlyerのサーバーに送るだけです。)requests()関数を使って、指定したURL(https://api.bitflyer.jp/~)宛に、さっき作った通信データ(bodyが注文情報、headersがAPIキーや署名)を、postメソッドで送っています。サーバーから返ってきた情報を、responseという変数に入れています。このrequests()は以前の記事でも何度も使いましたね。Pythonのプログラミングではめちゃくちゃよく使う関数なので、何となく慣れておきましょう。最後の2行は、bitFlyerのサーバーから返ってきた情報を、プロンプト(黒い画面)に表示するためのコードです。実行してみよう!上記のコードをエディタに打ち込んでください。コピペしてもいいですが、意味を考えながら自分の手で書き写した方が、プログラミングの上達は早くなります。できたら、いつものように「test.py」というファイル名で保存して、Anacondaプロンプトで実行してみましょう。'JRF20180314-181041-090404'}実際にbitFlyerのトレード画面にログインして注文状況を見てみましょう。注文が入っているのが確認できました。今回はテストなので間違って刺さらないように、現在価格が90万円のところ、80万円で買い指値を入れました。普通に「×」ボタンを押せば、注文をキャンセルできます。長いpythonのソースコードを自分で手打ちして動かした場合、1発では動かない方が普通なので安心してください。プログラミングはエラーを試行錯誤しながら修正する過程でしか上達しません。1発でエラーのないコードを書ける人はいません。何かしらの打ち間違いなので、エラーをよく読んでください。33」とあるので、33行目が何かしら間違ってるとわかります。defined」と書いてあります。名前がおかしいようですね。ここでは、「signature」のスペルミスでした。ステータスコードを確認する先頭に「404」と書かれています。これはpythonのプログラム自体は正しく書けていて、通信データ自体は送れたものの、bitFlyerのサーバーから「404」エラーが返ってきていることを意味しています。「404」はサーバー側で、リクエストURLが見つからなかった場合のステータスコードです。ここでは、指定したAPIのURLを書き間違ってました。ステータスコードを表示することで、エラーの原因を絞りこむことができます。最後に前述のように実際に自動売買BOTを作る際には、外部の方が作ってくれている便利な「ライブラリ」を使います。次の記事からはCCXTというライブラリを使います。それを使えば、今回のような買い注文を出すコードは1行で書けます。知っておいて欲しいのは、ライブラリはbitFlyerの公式が提供しているAPIではないということです。そのため、利用は自己責任になります。皆が使っているようなライブラリで、かつgithubなどで全コードが公開されているものは、ある程度は安全だと思いますが、一応、危険性は理解しておいてください。便利なライブラリとはいっても、基本的には、内側で各取引所のAPIを叩いているだけです。ライブラリを使っていて何か行き詰った場合は、「裏側でどのAPIを使ってるのか?」を考えたり調べたりしてみると、解決のヒントになります。