55@author: gaoan
66"""
77import re
8+
9+ from tigeropen .common .consts import SecurityType
810from tigeropen .trade .domain .contract import Contract
911
1012
@@ -13,7 +15,8 @@ def stock_contract(symbol, currency, local_symbol=None, exchange=None, contract_
1315 contract_id = contract_id )
1416
1517
16- def option_contract_by_symbol (symbol , expiry , strike , put_call , currency , multiplier = 100 , local_symbol = None , contract_id = None ):
18+ def option_contract_by_symbol (symbol , expiry , strike , put_call , currency , multiplier = 100 , local_symbol = None ,
19+ contract_id = None ):
1720 return Contract (symbol , currency , sec_type = 'OPT' , expiry = expiry , strike = strike , put_call = put_call ,
1821 multiplier = multiplier , local_symbol = local_symbol , contract_id = contract_id )
1922
@@ -26,7 +29,8 @@ def option_contract(identifier, multiplier=100, currency='USD'):
2629 multiplier = multiplier )
2730
2831
29- def future_contract (symbol , currency , expiry = None , exchange = None , contract_month = None , multiplier = None , local_symbol = None ):
32+ def future_contract (symbol , currency , expiry = None , exchange = None , contract_month = None , multiplier = None ,
33+ local_symbol = None ):
3034 return Contract (symbol , currency , sec_type = 'FUT' , expiry = expiry , exchange = exchange , contract_month = contract_month ,
3135 multiplier = multiplier , local_symbol = local_symbol )
3236
@@ -41,14 +45,28 @@ def cash_contract(symbol, currency, local_symbol=None):
4145 return Contract (symbol , currency , sec_type = 'CASH' , local_symbol = local_symbol )
4246
4347
48+ def war_contract_by_symbol (symbol , expiry , strike , put_call , local_symbol , multiplier = 100 , currency = 'HKD' ,
49+ contract_id = None ):
50+ """港股窝轮"""
51+ return Contract (symbol , currency = currency , sec_type = SecurityType .WAR .value , expiry = expiry , strike = strike ,
52+ put_call = put_call , local_symbol = local_symbol , multiplier = multiplier , contract_id = contract_id )
53+
54+
55+ def iopt_contract_by_symbol (symbol , expiry , strike , put_call , local_symbol , multiplier = 100 , currency = 'HKD' ,
56+ contract_id = None ):
57+ """港股牛熊证"""
58+ return Contract (symbol , currency = currency , sec_type = SecurityType .IOPT .value , expiry = expiry , strike = strike ,
59+ put_call = put_call , local_symbol = local_symbol , multiplier = multiplier , contract_id = contract_id )
60+
61+
4462def extract_option_info (identifier ):
4563 """
4664 从期权中提取 symbol, expiry 等信息
4765 :param identifier:
4866 :return:
4967 """
5068 if identifier :
51- tokens = re .findall (r'(\w+)\s*(\d{6})(C|P )(\d+)' , identifier , re .M )
69+ tokens = re .findall (r'(\w+)\s*(\d{6})([CP] )(\d+)' , identifier , re .M )
5270 if len (tokens ) == 1 :
5371 underlying_symbol , expiry , put_call , strike = tokens [0 ]
5472 expiry = '20' + expiry
0 commit comments