sendorder_takeprofit.pyのソースコード
import urllib.request
import json
import pprint
import websocket
import time
import settings
def sendorder_takeprofit():
# 利食い指値注文
obj = { 'Password': settings.password,
'Symbol': settings.symbol,
'Exchange': 1,
'SecurityType': 1,
'Side': '2',
'CashMargin': 3,
'MarginTradeType': 1,
'DelivType': 2,
'AccountType': 4,
'Qty': settings.qty,
'ClosePositionOrder': 0,
'Price': settings.orderPrice - settings.margin,
'ExpireDay': 0,
'FrontOrderType': 20}
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_takeprofit')
with urllib.request.urlopen(req) as res:
content = json.loads(res.read())
#利食い指値注文の注文IDを保存
settings.orderID = content['OrderId']
#損切り用値監視
websocket.websocketA1()
except urllib.error.HTTPError as e:
print('###kabusapi_sendorder2:HTTPError')
print(e)
content = json.loads(e.read())
pprint.pprint(content)
except Exception as e:
print('###kabusapi_sendorder2:Exception')
print(e)
if __name__ == "__main__":
import sys
sendorder_takeprofit()
21行目で、グローバル変数格納用モジュール(setting.py)から、エントリ約定価格から、売りエントリなので利食い幅を引いて利食い価格の指値として、34行目で指値発注をしています。
そして、この利食い指値注文の注文IDだけは、キャンセル注文で絶対に必要になるのでsetting.pyに保存します。
その後で、数珠繋ぎ方式で、損切り用値監視モジュールを呼び出します。
コメント