7.5. 下单 场景 证券类型

美股/港股/涡轮/牛熊证/美股期权/期货/外汇/CFD/现货

7.5.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.5.2. 美股

order_result = agent.client.place_order(order_id, SecurityType.STK, "AAPL", "", OrderSide.BUY, Currency.USD, 1, 180, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.3. 港股

order_result = agent.client.place_order(order_id, SecurityType.STK, "00700", "", OrderSide.BUY, Currency.USD, 100, 180, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.4. 涡轮

order_result = agent.client.place_order(order_id, SecurityType.WAR, "23929", "", OrderSide.BUY, Currency.HKD, 10000, 0.10, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.5. 牛熊证

order_result = agent.client.place_order(order_id, SecurityType.IOPT, "52237", "", OrderSide.BUY, Currency.HKD, 10000, 0.040, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.6. 美股期权

order_result = agent.client.place_order(order_id, SecurityType.OPT, "AAPL240405C00170000", "", OrderSide.BUY, Currency.USD, 1, 0.9, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.7. 期货

order_result = agent.client.place_order(order_id, SecurityType.FUT, "6J2406", "CME", OrderSide.BUY, Currency.USD, 1, 0.006, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.8. CFD

order_result = agent.client.place_order(order_id, SecurityType.CFD, "USD.HKD", "", OrderSide.BUY, Currency.USD, 1, 7, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.9. 现货黄金

order_result = agent.client.place_order(order_id, SecurityType.CMDTY, "XAUUSD", "", OrderSide.BUY, Currency.USD, 1, 1800, OrderType.LIMIT, TimeInForce.DAY, True)

7.5.10. CME:FOP

order_result =  self.client.place_order(order_id, SecurityType.FOP , "NQ    250919P20000000", "GLOBEX", OrderSide.BUY, Currency.USD, qty, price, OrderType.LIMIT, TimeInForce.DAY, True)