記事の更新日:2023年1月9日
auカブコム証券「kabuステーション®API」Pythonサンプルコードを丁寧に解説しています。
このブログ記事は下の解説ページの続きです。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page4 トークン取得を関数化 [kabuステーション®API]
いよいよ、株の買い注文です。
現物株式の買い注文サンプルコード解説
さっそく、現物株式の買い注文のサンプルコードを見てゆきましょう。
サンプルコードのファイル名は、 kabusapi_sendorder_cash_buy.py です。
現物株式の買い注文サンプルコードを、4つの要素に分解しました。
1~4の要素に分解しています。
- 要素1:ライブラリーのインポート
- 要素2:送信データーの作成
- 要素3:処理内容の指定
- 要素4:処理の実行
要素1:ライブラリーのインポート
要素1では、ライブラリーをインポートしています。
ライブラリーとは
Pythonの特徴としてライブラリーが豊富であることがよく上げられます。
正式なライブラリーの定義は「Python ライブラリーとは」などで検索してみてください。
ここでは、このように覚えても良いでしょう。
Pythonライブラリは、そのほとんどを無料で使うことが出来ます。
AI開発などに繋がる機械学習分野のライブラリが豊富なのも、Python人気に拍車を掛けているようです。
import ○□△ の記述で、ライブラリー○□△をインポートすることが出来ます。
ライブラリーの解説はこちらのページを参考にしてください。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page2 [kabuステーション®API]
要素2:送信データーの作成
要素2では、サーバーへ送るデーターを作成しています。
今回は発注のサンプルコードなので、発注する株の銘柄指定や指値、購入株式数などを指定しています。
サンプルコード5行目から25行目までで、発注条件を指定。
26行目の json_data = json.dumps(obj).encode(‘utf8’) は、発注条件をJSON形式に変換しています。
もう少し詳しく見てゆきましょう。
注文発注(現物・信用)のリファレンス
注文発注(現物・信用)のリファレンスを確認しましょう。
公式ホームページ中央の のリンクをクリックしてください。
ページ左の[POST]注文発注(現物・信用)をクリックすると、注文発注のリファレンスが表示されます。
サンプルコードとリファレンスを並べて表示させています。
リファレンスの文字が小さくてすいません。
文字が読み取れない場合は、公式リファレンスページを参照してください。
◇json_data = json.dumps(obj).encode(‘utf-8’)
最後にJSON形式に変換して、変数 json_data に格納しています。
要素3:処理内容の指定
要素3では、処理内容の指定をしています。
処理内容を送信するアドレス(url)を指定しています。
このアドレスは、もちろんリファレンスにも記載されています。
リファレンスページ右上の[POST]/sendorderをクリックしてください。
ここに表示されたURLが、28行目のコードで指定されたURLです。(本番用)
◇req = urllib.request.Request(url, json_data, method=’POST’)
要素1でインポートした urllib.request の機能を使って、サーバーにデーターを送る指示をしています。
◇req.add_header(‘Content-Type’, ‘application/json’)
ヘッダーの指示です。
解説は省きます(ここでは、おまじないだと思ってください。)
◇req.add_header(‘X-API-KEY’, ‘ed94b0d34f9441c3931621e55230e402’)
トークンを指定します。
サンプルコードの‘ed94b0d34f9441c3931621e55230e402’は例として記載されています。
実際に発注する際は、新たに有効なトークンを取得する必要があります。
要素4:処理の実行
要素4では処理を実行しています。
要素4の解説は、前ページと同様です。
解説をご覧になりたい方は、下のリンクからPage3に飛んでください。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page3 [kabuステーション®API]
実際に発注する
実際に発注してみましょう。
サンプルコードを少し変更しました。
◇変更点
#パスワードPassword を変数で指定
#トークンtoken_value を変数で指定
銘柄コードを変数に格納(1321 野村日経平均/ETF1321)
symbol = ‘1321’
コード内に発注リファレンスの説明をコメントして記載
#’SecurityType’: 1, 株式
#’Side’: ‘2’, 売り1 買い2
#’CashMargin’: 1, 信用区分1は現物
#’DelivType’: 2, 受け渡し区分2は預かり金
以下省略
正しいパスワードと有効なトークンを変数で指定して、このコードを実行すると、野村日経平均/ETF 1単位が発注されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import urllib.request import json import pprint #パスワードPassword を変数で指定 #トークンtoken_value を変数で指定 #symbol:銘柄コード 例 野村日経平均/ETF1321 symbol = '1321' #'SecurityType': 1, 株式 #'Side': '2', 売り1 買い2 #'CashMargin': 1, 信用区分1は現物 #'DelivType': 2, 受け渡し区分2は預かり金 #'FundType': 'AA', 資産区分(預かり区分)AAは信用代用 #'AccountType': 2, 口座種別2は一般 #'Qty': 1, 注文数量 #'FrontOrderType': 20, 執行条件 10:成り行き、20:指値、30:逆指値(ReverseLimitOrderで追加指定が必要) #'Price': 27785, 注文価格 #'ExpireDay': 0, 注文有効期限 #yyyyMMdd形式。 #「0」を指定すると、kabuステーション上の発注画面の「本日」に対応する日付として扱います。 #「本日」は直近の注文可能日となり、以下のように設定されます。 #引けまでの間 : 当日 #引け後 : 翌取引所営業日 #休前日 : 休日明けの取引所営業日 #ReverseLimitOrder 逆指値設定 obj = { 'Password': Password, 'Symbol': symbol, 'Exchange': 1, 'SecurityType': 1, 'Side': '2', 'CashMargin': 1, 'DelivType': 2, 'FundType': 'AA', 'AccountType': 2, 'Qty': 1, 'FrontOrderType': 20, 'Price': 28580, 'ExpireDay': 0, 'ReverseLimitOrder': { 'TriggerSec': 3, #1.発注銘柄 2.NK225指数 3.TOPIX指数 'TriggerPrice': 1600, 'UnderOver': 2, #1.以下 2.以上 'AfterHitOrderType': 1, #1.成行 2.指値 3. 不成 'AfterHitPrice': 0 } } json_data = json.dumps(obj).encode('utf-8') url = 'http://localhost:18080/kabusapi/sendorder' req = urllib.request.Request(url, json_data, method='POST') req.add_header('Content-Type', 'application/json') req.add_header('X-API-KEY', token_value) try: with urllib.request.urlopen(req) as res: print(res.status, res.reason) for header in res.getheaders(): print(header) print() content = json.loads(res.read()) order_id = content.get('OrderId') pprint.pprint(content) print('order_id:',order_id) except urllib.error.HTTPError as e: print(e) content = json.loads(e.read()) pprint.pprint(content) except Exception as e: print(e) |
kabuステーションの注文約定紹介の画面にも表示され、発注されていることが確認出来ました。
テストで発注した場合は、発注の取消を忘れずに行ってください。
auカブコム証券APIで発注した注文も、kabuステーションから取り消すことができます。
次に続く
ここらで、一息つきましょう。
この続きは、新しいページを作成します。
次は、信用取引の発注です。
この記事を書いた人
あしおゆたか
株式投資歴22年のシステムトレーダー(←主な取引手法)
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら