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 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)
Example #3
0
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 __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
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