7.6. 下单 场景 订单类型
7.6.1. 准备
import time
from threading import RLock
from snbpy.common.constant.snb_constant import SecurityType, OrderSide, Currency, OrderType, TimeInForce
from snbpy.common.domain.snb_config import SnbConfig
from snbpy.snb_api_client import SnbHttpClient
class SnbAgent():
def __init__(self):
self.config = SnbConfig()
# 替换掉这里
self.config.account = "DU1234567"
# 替换掉这里
self.config.key = "1234567"
self.config.sign_type = 'None'
self.config.snb_server = 'sandbox.snbsecurities.com'
self.config.snb_port = '443'
self.config.timeout = 1000
self.config.schema = 'https'
self.client = SnbHttpClient(self.config)
self.last_ts = 0
self.sq = 0
self.lock = RLock()
self.client.login()
def gen_order_id(self):
with self.lock:
t = int(time.time())
if self.last_ts == t:
if self.sq == 999:
raise Exception("too many request in one second")
else:
self.sq += 1
else:
self.last_ts = t
self.sq = 0
return "{}{:03}".format(self.last_ts, self.sq)
if __name__ == '__main__':
agent = SnbAgent()
order_id = agent.gen_order_id()
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.BUY, Currency.USD, 1, 180, OrderType.LIMIT, TimeInForce.DAY, True)
print(order_result.result_str)
if order_result.succeed():
print("place order succeed")
cancel_result = agent.client.cancel_order(agent.gen_order_id(), order_id)
print(cancel_result.result_str)
else:
print("place order failed")
7.6.2. 限价单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.BUY, Currency.USD, 1, 180, OrderType.LIMIT, TimeInForce.DAY, True)
7.6.3. 市价单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.BUY, Currency.USD, 1, 0, OrderType.MARKET, TimeInForce.DAY, True)
7.6.4. 止损单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.SELL, Currency.USD,1,0, OrderType.STOP, TimeInForce.DAY, True, stop_price=180)
7.6.5. 止损限价单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.SELL, Currency.USD,1,179, OrderType.STOP, TimeInForce.DAY, True, stop_price=180)
7.6.6. 止盈单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.SELL, Currency.USD,1,0, OrderType.MARKET_IF_TOUCHED, TimeInForce.DAY, True, stop_price=200)
7.6.7. 止盈限价单
order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.SELL, Currency.USD,1,199, OrderType.LIMIT_IF_TOUCHED, TimeInForce.DAY, True, stop_price=200)