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
74
75
76
77
78
79
80
81
# 报单状态
import random
import threading
 
from utils import tool
 
TORA_TSTP_OST_Cached = '0'  # 预埋
TORA_TSTP_OST_Unknown = '1'  # 未知
TORA_TSTP_OST_Accepted = '2'  # 交易所已接收
TORA_TSTP_OST_PartTraded = '3'  # 部分成交
TORA_TSTP_OST_AllTraded = '4'  # 全部成交
TORA_TSTP_OST_PartTradeCanceled = '5'  # 部成部撤
TORA_TSTP_OST_AllCanceled = '6'  # 全部撤单
TORA_TSTP_OST_Rejected = '7'  # 交易所已拒绝
TORA_TSTP_OST_SendTradeEngine = '#'  # 发往交易核心
 
# 报单价格条件
TORA_TSTP_OPT_AnyPrice = 1  # 任意价
TORA_TSTP_OPT_LimitPrice = 2  # 限价
TORA_TSTP_OPT_BestPrice = 3  # 最优价
TORA_TSTP_OPT_FixPrice = 4  # 盘后定价
TORA_TSTP_OPT_FiveLevelPrice = 5  # 五档价
TORA_TSTP_OPT_HomeBestPrice = 6  # 本方最优
 
# 买卖方向
TORA_TSTP_D_Buy = 0  # 买入
TORA_TSTP_D_Sell = 1  # 卖出
 
# 交易所代码
TORA_TSTP_EXD_COMM = 0  # 通用(内部使用)
TORA_TSTP_EXD_SSE = 1  # 上海交易所
TORA_TSTP_EXD_SZSE = 2  # 深圳交易所
TORA_TSTP_EXD_HK = 3  # 香港交易所
TORA_TSTP_EXD_BSE = 4  # 北京证券交易所
 
 
# 是否可以撤单
def is_can_cancel(state):
    if state == TORA_TSTP_OST_Cached or state == TORA_TSTP_OST_Unknown or state == TORA_TSTP_OST_Accepted or state == TORA_TSTP_OST_PartTraded:
        return True
    return False
 
 
# 是否已经撤单
def is_canceled(state):
    if state == TORA_TSTP_OST_AllCanceled or state == TORA_TSTP_OST_PartTradeCanceled:
        return True
    return False
 
 
# 是否已经成交
def is_deal(state):
    if state == TORA_TSTP_OST_PartTraded or state == TORA_TSTP_OST_AllTraded or state == TORA_TSTP_OST_PartTradeCanceled:
        return True
    return False
 
 
__order_ref_lock = threading.RLock()
__public_order_ref = int(tool.get_now_time_str().replace(":", ""))
 
 
# 创建订单引用
def create_order_ref():
    __order_ref_lock.acquire()
    try:
        global __public_order_ref
        __public_order_ref += random.randint(5, 20)
        return __public_order_ref
    finally:
        __order_ref_lock.release()
 
# 华鑫时间字符串格式转换函数
def convert_time(time_str, with_ms=False):
    time_str = str(time_str)
    if time_str.startswith("9"):
        time_str = f"0{time_str}"
    ms = "{:0<3}".format(time_str[6:])
    time_ = f"{time_str[0:2]}:{time_str[2:4]}:{time_str[4:6]}"
    if with_ms:
        return f"{time_}.{ms}"
    return time_