def save_trade(account_id, trade_array): for trade_info in trade_array: trade_db = Trade() trade_db.trade_id = getattr(trade_info, 'TradeID', '') trading_day = getattr(trade_info, 'TradingDay', '') insert_time = getattr(trade_info, 'InsertTime', '') if (trading_day != '') and (insert_time != ''): insert_time_str = '%s-%s-%s %s' % (trading_day[0:4], trading_day[4:6], trading_day[6:8], insert_time) else: insert_time_str = '%s 00:00:00' % (today_str,) trade_db.time = insert_time_str trade_db.symbol = getattr(trade_info, 'InstrumentID', '') trade_db.qty = getattr(trade_info, 'TradeVolume', '') trade_db.price = getattr(trade_info, 'TradePrice', '') trade_db.account = account_id trade_db.order_id = getattr(trade_info, 'OrderSysID', '') # 买:'0'|卖:'1' trade_db.direction = getattr(trade_info, 'Direction', '') # 开仓:'0'|平仓:'1'|强平:'2'|平今:'3'|平昨:'4' trade_db.offsetflag = getattr(trade_info, 'OffsetFlag', '') hedge_flag = getattr(trade_info, 'HedgeFlag', '1') if hedge_flag == '': trade_db.hedgeflag = '0' else: trade_db.hedgeflag = const.HEDGE_FLAG_MAP[hedge_flag] trade_list.append(trade_db)
def __get__trade_list(account_id, trade_array, order_dict): trade_list = [] for trade_info in trade_array: trade_db = Trade() trade_db.symbol = getattr(trade_info, 'InstrumentID', '') if local_server_name == 'huabao': if not ('IH' in trade_db.symbol or 'IC' in trade_db.symbol or 'IF' in trade_db.symbol): continue if local_server_name == 'zhongxin': if 'IH' in trade_db.symbol or 'IC' in trade_db.symbol or 'IF' in trade_db.symbol: continue trade_db.order_id = getattr(trade_info, 'OrderSysID', '') if trade_db.order_id not in order_dict: print '[Error]unfind OrderID:', trade_db.order_id continue trade_db.trade_id = getattr(trade_info, 'TradeID', '') trading_day = getattr(trade_info, 'TradeDate', '') insert_time = getattr(trade_info, 'TradeTime', '') if (trading_day != '') and (insert_time != ''): insert_time_str = '%s-%s-%s %s' % (trading_day[0:4], trading_day[4:6], trading_day[6:8], insert_time) if insert_time > now_datetime_str: insert_time_str = '%s %s' % (last_trading_day, insert_time) else: insert_time_str = '%s 00:00:00' % (now_date_str,) trade_db.time = insert_time_str order_db = order_dict[trade_db.order_id] qty = getattr(trade_info, 'Volume', '') if order_db.direction == '0': trade_db.qty = qty elif order_db.direction == '1': trade_db.qty = 0 - int(qty) trade_db.price = getattr(trade_info, 'Price', '') # 普通成交:'0'|期权执行:'1'|OTC成交:'2'|期转现衍生成交:'3'|组合衍生成交:'4' trade_db.trade_type = getattr(trade_info, 'TradeType', '') # 开仓:'0'|平仓:'1'|强平:'2'|平今:'3'|平昨:'4'|强减:'5'|本地强平:'6' trade_db.offsetflag = getattr(trade_info, 'OffsetFlag', '') trade_db.account = account_id trade_db.direction = getattr(trade_info, 'Direction', '') hedge_flag = getattr(trade_info, 'HedgeFlag', '') trade_db.hedgeflag = const.HEDGE_FLAG_MAP[hedge_flag] trade_list.append(trade_db) return trade_list
def __get__trade_list(account_id, trade_array, order_dict): trade_list = [] for trade_info in trade_array: trade_db = Trade() trade_db.symbol = getattr(trade_info, 'stock_code', '') trade_db.order_id = getattr(trade_info, 'report_no', '') if trade_db.order_id not in order_dict: print '[Error]unfind OrderID:', trade_db.order_id continue trade_db.trade_id = getattr(trade_info, 'business_no', '') trading_day = getattr(trade_info, 'date', '') insert_time = getattr(trade_info, 'business_time', '').zfill(6) if (trading_day != '') and (insert_time != ''): insert_time_str = '%s-%s-%s %s:%s:%s' % (trading_day[0:4], trading_day[4:6], trading_day[6:8], \ insert_time[:2], insert_time[2:4], insert_time[4:6]) if insert_time > now_datetime_str: insert_time_str = '%s %s' % (last_trading_day, insert_time) else: insert_time_str = '%s 00:00:00' % (now_date_str, ) trade_db.time = insert_time_str order_db = order_dict[trade_db.order_id] qty = getattr(trade_info, 'business_amount', '') if order_db.direction == '0': trade_db.qty = qty elif order_db.direction == '1': trade_db.qty = 0 - float(qty) trade_db.price = getattr(trade_info, 'business_price', '') # 普通成交:'0'|期权执行:'1'|OTC成交:'2'|期转现衍生成交:'3'|组合衍生成交:'4' trade_db.trade_type = 0 # trade_db.offsetflag = getattr(trade_info, 'm_nOffsetFlag', '') trade_db.offsetflag = 0 trade_db.account = account_id trade_db.direction = getattr(trade_info, 'entrust_bs', '') # hedge_flag = getattr(trade_info, 'm_nHedgeFlag', '') # trade_db.hedgeflag = HEDGE_FLAG_MAP[hedge_flag] trade_db.hedgeflag = 0 trade_list.append(trade_db) return trade_list
def __build_trade(account_id, order_info): trade_db = Trade() trade_db.account = account_id trade_db.order_id = getattr(order_info, 'ORDER_ID', '') trade_db.trade_id = getattr(order_info, 'SYS_ORDER_ID', '') trade_db.time = getattr(order_info, 'FILL_TIME', '').replace('/', '-') message_symbol = getattr(order_info, 'SYMBOL', 'NULL').split('.')[0] instrumet_db = instrument_dict[message_symbol] trade_db.symbol = instrumet_db.ticker # 成交量 filled_quantity = getattr(order_info, 'FILLED_QUANTITY', '') trade_db.qty = Decimal(filled_quantity) trade_db.price = Decimal(getattr(order_info, 'FILLED_PRICE', '')) # 普通成交:'0'|期权执行:'1'|OTC成交:'2'|期转现衍生成交:'3'|组合衍生成交:'4' trade_db.trade_type = 0 # 开仓:'0'|平仓:'1'|强平:'2'|平今:'3'|平昨:'4'|强减:'5'|本地强平:'6' action = getattr(order_info, 'ACTION', '') if action == 'BUYTOOPEN': # 0:开仓 1:平仓 3:平今 4:平昨 trade_db.offsetflag = 0 # 0:买,1:卖 trade_db.direction = 0 elif action == 'BUYTOCLOSE': if 'yd' in trade_db.order_id: trade_db.offsetflag = 4 else: trade_db.offsetflag = 1 trade_db.direction = 0 elif action == 'SELLTOOPEN': trade_db.offsetflag = 0 trade_db.direction = 1 elif action == 'SELLTOCLOSE': if 'yd' in trade_db.order_id: trade_db.offsetflag = 4 else: trade_db.offsetflag = 1 trade_db.direction = 1 trade_db.hedgeflag = 0 return trade_db
def __get__trade_list(account_id, trade_array, order_dict): trade_list = [] for trade_info in trade_array: trade_db = Trade() trade_db.symbol = getattr(trade_info, 'm_strInstrumentID', '') trade_db.order_id = getattr(trade_info, 'm_strOrderSysID', '') if trade_db.order_id not in order_dict: print '[Error]unfind OrderID:', trade_db.order_id continue trade_db.trade_id = getattr(trade_info, 'm_strTradeID', '') trading_day = getattr(trade_info, 'm_strTradeDate', '') insert_time = getattr(trade_info, 'm_strTradeTime', '') if (trading_day != '') and (insert_time != ''): insert_time_str = '%s-%s-%s %s' % (trading_day[0:4], trading_day[4:6], trading_day[6:8], insert_time) if insert_time > now_datetime_str: insert_time_str = '%s %s' % (last_trading_day, insert_time) else: insert_time_str = '%s 00:00:00' % (now_date_str, ) trade_db.time = insert_time_str order_db = order_dict[trade_db.order_id] qty = getattr(trade_info, 'm_nVolume', '') if order_db.direction == '48': trade_db.qty = qty elif order_db.direction == '49': trade_db.qty = 0 - int(qty) trade_db.price = getattr(trade_info, 'm_dAveragePrice', '') # 普通成交:'0'|期权执行:'1'|OTC成交:'2'|期转现衍生成交:'3'|组合衍生成交:'4' trade_db.trade_type = 0 # 开仓:'0'|平仓:'1'|强平:'2'|平今:'3'|平昨:'4'|强减:'5'|本地强平:'6' trade_db.offsetflag = getattr(trade_info, 'm_nOffsetFlag', '') trade_db.account = account_id trade_db.direction = getattr(trade_info, 'm_nDirection', '') hedge_flag = getattr(trade_info, 'm_nHedgeFlag', '') trade_db.hedgeflag = HEDGE_FLAG_MAP[hedge_flag] trade_list.append(trade_db) return trade_list