def add_option(message_array): global max_instrument_id for message_info in message_array: ticker = getattr(message_info, 'InstrumentID', '') exchange_name = getattr(message_info, 'ExchangeID', '') if exchange_name == 'CFFEX': exchange_id = 25 dict_key = '%s|%s' % (ticker, exchange_id) if dict_key in shf_db_dict: continue option_db = Instrument() max_instrument_id += 1 option_db.id = max_instrument_id option_db.ticker = ticker option_db.exchange_id = exchange_id option_db.fut_val_pt = getattr(message_info, 'VolumeMultiple', '') option_db.max_market_order_vol = getattr(message_info, 'MaxMarketOrderVolume', '') option_db.min_market_order_vol = getattr(message_info, 'MinMarketOrderVolume', '') option_db.max_limit_order_vol = getattr(message_info, 'MaxLimitOrderVolume', '') option_db.min_limit_order_vol = getattr(message_info, 'MinLimitOrderVolume', '') option_db.strike = getattr(message_info, 'StrikePrice', '') option_db.create_date = getattr(message_info, 'CreateDate', '') option_db.expire_date = getattr(message_info, 'ExpireDate', '') underlying_instr_id = getattr(message_info, 'UnderlyingInstrID', '') undl_ticker = underlying_instr_id.replace('HO', 'IH').replace('IO', 'IF') undl_ticker = rebuild_undl_ticker(undl_ticker) option_db.undl_tickers = undl_ticker instrument_name = getattr(message_info, 'InstrumentName', '') instrument_name = instrument_name.replace(u'期权', 'OPTION').replace( u'股指', 'IDX').strip() option_db.name = instrument_name if '-C-' in ticker: put_call = 1 else: put_call = 0 option_db.put_call = put_call option_db.market_status_id = 2 option_db.type_id = 10 # option option_db.market_sector_id = 6 option_db.round_lot_size = 1 option_db.tick_size_table = '0:0.2' option_db.longmarginratio = 1 option_db.shortmarginratio = 0.15 option_db.multiplier = 1 instrument_insert_list.append(option_db) print 'prepare insert option:', ticker
def add_option(message_array): global max_instrument_id for messageInfo in message_array: ticker = getattr(messageInfo, 'InstrumentID', '') exchange_name = getattr(messageInfo, 'ExchangeID', '') if exchange_name == 'SSE': exchange_id = 18 elif exchange_name == 'SZE': exchange_id = 19 dict_key = '%s|%s' % (ticker, exchange_id) if dict_key in instrument_db_dict: continue option_db = Instrument() max_instrument_id += 1 option_db.id = max_instrument_id option_db.ticker = ticker option_db.exchange_id = exchange_id option_db.fut_val_pt = getattr(messageInfo, 'VolumeMultiple', '') option_db.max_market_order_vol = getattr(messageInfo, 'MaxMarketOrderVolume', '') option_db.min_market_order_vol = getattr(messageInfo, 'MinMarketOrderVolume', '') option_db.max_limit_order_vol = getattr(messageInfo, 'MaxLimitOrderVolume', '') option_db.min_limit_order_vol = getattr(messageInfo, 'MinLimitOrderVolume', '') option_db.strike = getattr(messageInfo, 'ExecPrice', '') exchange_inst_id = getattr(messageInfo, 'ExchangeInstID', '') undl_tickers = exchange_inst_id[0:6] option_db.undl_tickers = undl_tickers option_db.track_undl_tickers = undl_tickers if 'M' in exchange_inst_id: option_db.contract_adjustment = 0 elif 'A' in exchange_inst_id: option_db.contract_adjustment = 1 elif 'B' in exchange_inst_id: option_db.contract_adjustment = 2 elif 'C' in exchange_inst_id: option_db.contract_adjustment = 3 option_db.create_date = getattr(messageInfo, 'CreateDate', '') option_db.expire_date = getattr(messageInfo, 'ExpireDate', '') instrument_name = getattr(messageInfo, 'InstrumentName', '').strip() instrument_name = instrument_name.replace('购', 'Call').replace('沽', 'Put').replace('月', 'month') \ .replace('中国平安', undl_tickers).replace('上汽集团', undl_tickers) if 'Call' in instrument_name: put_call = 1 else: put_call = 0 option_db.name = instrument_name option_db.put_call = put_call price_tick = getattr(messageInfo, 'PriceTick', '') option_db.tick_size_table = '0:%s' % (float(price_tick), ) option_db.ticker_exch = ticker option_db.ticker_exch_real = ticker option_db.market_status_id = 2 option_db.type_id = 10 # option option_db.market_sector_id = 4 option_db.round_lot_size = 1 option_db.longmarginratio = 0 option_db.shortmarginratio = 0.15 option_db.longmarginratio_speculation = option_db.longmarginratio option_db.shortmarginratio_speculation = option_db.shortmarginratio option_db.longmarginratio_hedge = option_db.longmarginratio option_db.shortmarginratio_hedge = option_db.shortmarginratio option_db.longmarginratio_arbitrage = option_db.longmarginratio option_db.shortmarginratio_arbitrage = option_db.shortmarginratio option_db.multiplier = 10000 option_db.crncy = 'CNY' option_db.effective_since = filter_date_str option_db.is_settle_instantly = 1 option_db.is_purchase_to_redemption_instantly = 0 option_db.is_buy_to_redpur_instantly = 0 option_db.is_redpur_to_sell_instantly = 0 option_db.option_margin_factor1 = 0.15 option_db.option_margin_factor2 = 0.07 instrument_insert_list.append(option_db) # print instrument_insert_list print 'prepare insert option:', ticker
def pre_add_option(message_array): global max_instrument_id for messageInfo in message_array: ticker = getattr(messageInfo, 'InstrumentID', '') exchange_name = getattr(messageInfo, 'ExchangeID', '') if 'CFFEX' == exchange_name: exchange_id = 25 elif 'SHFE' == exchange_name: exchange_id = 20 elif 'DCE' == exchange_name: exchange_id = 21 elif 'CZCE' == exchange_name: exchange_id = 22 else: continue if ticker in option_db_dict: continue option_db = Instrument() max_instrument_id += 1 option_db.id = max_instrument_id option_db.ticker = ticker option_db.exchange_id = exchange_id option_db.fut_val_pt = getattr(messageInfo, 'VolumeMultiple', '') option_db.max_market_order_vol = getattr(messageInfo, 'MaxMarketOrderVolume', '') option_db.min_market_order_vol = getattr(messageInfo, 'MinMarketOrderVolume', '') option_db.max_limit_order_vol = getattr(messageInfo, 'MaxLimitOrderVolume', '') option_db.min_limit_order_vol = getattr(messageInfo, 'MinLimitOrderVolume', '') undl_tickers = getattr(messageInfo, 'UnderlyingInstrID', '') option_db.undl_tickers = undl_tickers option_db.create_date = getattr(messageInfo, 'CreateDate', '') option_db.expire_date = getattr(messageInfo, 'ExpireDate', '') instrument_name = getattr(messageInfo, 'InstrumentName', '').strip() instrument_name = instrument_name.replace('买权', 'Call').replace( '卖权', 'Put').replace('白糖', 'SR') option_db.name = ticker put_call = __get_put_call(instrument_name) option_db.put_call = put_call if put_call == 0: option_db.strike = ticker.replace('-', '').split('P')[-1] else: option_db.strike = ticker.replace('-', '').split('C')[-1] price_tick = getattr(messageInfo, 'PriceTick', '') option_db.tick_size_table = '0:%s' % (float(price_tick), ) option_db.ticker_exch = ticker option_db.ticker_exch_real = ticker option_db.market_status_id = 2 option_db.type_id = 10 # option option_db.market_sector_id = 1 option_db.round_lot_size = 1 option_db.longmarginratio = 0 option_db.shortmarginratio = 0.15 option_db.longmarginratio_speculation = option_db.longmarginratio option_db.shortmarginratio_speculation = option_db.shortmarginratio option_db.longmarginratio_hedge = option_db.longmarginratio option_db.shortmarginratio_hedge = option_db.shortmarginratio option_db.longmarginratio_arbitrage = option_db.longmarginratio option_db.shortmarginratio_arbitrage = option_db.shortmarginratio option_db.multiplier = 10 option_db.crncy = 'CNY' option_db.effective_since = filter_date_str option_db.is_settle_instantly = 1 option_db.is_purchase_to_redemption_instantly = 0 option_db.is_buy_to_redpur_instantly = 0 option_db.is_redpur_to_sell_instantly = 0 option_db.option_margin_factor1 = 0.5 option_db.option_margin_factor2 = 0.5 ticker_type = filter(lambda x: not x.isdigit(), undl_tickers) option_db.session = __get_trading_info_list(ticker_type)[-1] option_db.track_undl_tickers = __get_track_undl_tickers(ticker_type) option_insert_list.append(option_db) print 'prepare insert option:', ticker