前回の記事に引き続き、仮想通貨botの開発状況をまとめていきます。
今回は「CCXTライブラリを使った注文方法をマスターする」の続きです。
今回は自力で練習問題に取り組んでみました。
練習問題
「未約定の注文を一斉にキャンセルする」という課題に挑戦しました。
未約定の注文を獲得することとそれらをキャンセルすることの合わせ技なので、以下のコードを実行すればOKです。
import ccxt
from pprint import pprint
bitflyer = ccxt.bitflyer()
bitflyer.apiKey = 'APIキー'
bitflyer.secret = 'APIシークレット'
orders = bitflyer.fetch_open_orders(
symbol = "BTC/JPY:JPY",
params = { "product_code" : "FX_BTC_JPY" })
for o in orders:
bitflyer.cancel_order(
symbol = "BTC/JPY:JPY",
id = o["id"],
params = { "product_code" : "FX_BTC_JPY" })
ccxtライブラリのインポート、2行目(from pprint import pprint)は今回は不要、bitFlyerのプライベートAPIを使うための準備、orders・symbol・paramsの定義はこれまでと共通です。
重要なのは最後の5行です。
for o in orders:
bitflyer.cancel_order(
symbol = "BTC/JPY:JPY",
id = o["id"],
params = { "product_code" : "FX_BTC_JPY" })
ここでは、for文を使って「注文をキャンセルする」という指示の範囲を指定しています。
赤字の部分では、キャンセルする注文IDがoであるという設定をしています。oは単体の要素なので、{}ではなく[]を使って指定しています。
コードの書き順がわからなかったため、最後は答えを見て確認しました。
しかし、発想自体は正しかったため、その発想を正確に実行させるためにコードの書き方や基本ルールを覚えていく必要があります。
まとめ
課題に取り組むときは「何から手をつけたら良いのだろうか?」と一瞬不安になりました。
けれども、必要な要素を分解して考えてみるととても単純なことを組み合わせれば良いのだと気づいたのです。
やりたいことを言語化する力とそれを実装に持っていくまでのリサーチ力が大切なのだと改めて実感。
発想自体も、プログラミングという領域に馴染んできたような感覚があります。
次回はいよいよ、「売買ロジックを考えてbotにしていく」に挑戦です。
過去に一度トライして挫折したポイントなので、ここからはさらに丁寧に進めていきます。