sendorder_entry.pyのソースコード
import urllib.request
import json
import pprint
import order_info
import time
import settings
def sendorder_entry():
obj = { 'Password': settings.password,
'Symbol': settings.symbol,
'Exchange': 1,
'SecurityType': 1,
'Side': settings.side,
'CashMargin': 2,
'MarginTradeType': 1,
'DelivType': 0,
'AccountType': 4,
'Qty': settings.qty,
'ClosePositionOrder': 0,
'Price': 0,
'ExpireDay': 0,
'FrontOrderType': 10}
json_data = json.dumps(obj).encode('utf-8')
url = 'http://localhost:' + settings.port + '/kabusapi/sendorder'
req = urllib.request.Request(url, json_data, method='POST')
req.add_header('Content-Type', 'application/json')
req.add_header('X-API-KEY', settings.token)
try:
print('###sendorder_entry')
with urllib.request.urlopen(req) as res:
#約定するまで1分待つ
time.sleep(settings.intervalAfterOrder)
# 約定した価格を調査する
order_info.orders_info()
except urllib.error.HTTPError as e:
print(e)
content = json.loads(e.read())
pprint.pprint(content)
except Exception as e:
print(e)
if __name__ == "__main__":
import sys
sendorder_entry()
エントリ注文を成行(‘FrontOrderType’: 10)で発注しています。ほぼkabuステーションのサンプルぼそのままです。
kabusapi/sample/Python/kabusapi_sendorder_cash_sell.py at master · kabucom/kabusapi
kabuステーションAPI ポータル. Contribute to kabucom/kabusapi development by creating an account on GitHub.
発注後、数珠繋ぎ方式で約定価格を調査する処理を呼びだしています。
ポイントは、41行目で1分待っているところでしょうか(settings.intervalAfterOrderに60秒を設定しています)。
これは、auカブコム証券のシステムで、成行とはいえ発注から即決済されることはなく、間髪入れずに約定価格を取得しようとしても取れないからです。
発注数が少ない場合は約定まで1分もかからないかもしれませんが、私の現在の設定の利食い幅、損切り幅ともに、1分間以内でその値に達することはそうないので、1分間でよしとしています。
コメント