| 

 等级: 专业版 
注册: 2021-5-20曾用名:  | 
 
| 为观察开仓前后portfolio对象的属性变化,在before_trading(context)和after_trading方法中获取相关数据,并打印 部分代码:
 def before_trading(context):
 date_time_base = history_bars('sqau00', 5, 'self', 'datetime', True, True, True)
 #拿到datetime.datetime类型的日期 数组,以调用其方法
 date_time = get_datetime(date_time_base)
 for i in context.heyue:
 close = history_bars(i, context.period + 1, 'self', 'close', True, True, True)
 portfolio = get_portfolio(i, 0)
 kcfdyk = portfolio.pnl
 kcj = portfolio.buy_avg_open_price
 ccj = portfolio.buy_avg_holding_price
 kcj2 = portfolio.sell_avg_open_price
 ccj2 = portfolio.sell_avg_holding_price
 print('日期{},品种{},盘前浮动盈亏{},今收{}, 多头开仓成本{},多头持仓成本{},\
 空头开仓成本{},空头持仓成本{}'.format(date_time[-1].day,i, kcfdyk, close[-1], kcj, ccj,
 kcj2, ccj2))
 策略部分为平仓反手。。。。
 
 def after_trading(context):
 date_time_base = history_bars('sqau00', 5, 'self', 'datetime', True, True, True)
 #拿到datetime.datetime类型的日期 数组,以调用其方法
 date_time = get_datetime(date_time_base)
 for i in context.heyue:
 close = history_bars(i, context.period + 1, 'self', 'close', True, True, True)
 portfolio = get_portfolio(i, 0)
 todaybuy = portfolio.buy_today_quantity
 todaysell = portfolio.sell_today_quantity
 kcfdyk = portfolio.pnl
 kcj = portfolio.buy_avg_open_price
 ccj = portfolio.buy_avg_holding_price
 kcj2 = portfolio.sell_avg_open_price
 ccj2 = portfolio.sell_avg_holding_price
 print('日期{},品种{},盘后,今日开多{},今日开空{},开仓后浮动盈亏{}, 多头开仓成本{},\
 多头持仓成本{}, 空头开仓成本{},空头持仓成本{},今收{}'.format(date_time[-1].day, i,
 todaybuy, todaysell, kcfdyk, kcj, ccj, kcj2, ccj2, close[-1]))
 
 
 打印结果:
 1、异常段
 22:47:00 > 日期7,品种SQAU00,盘前浮动盈亏17311.58447265625,今收404.9249267578125, 多头开仓成本396.2691345214844,多头持仓成本396.2691345214844,        空头开仓成本0.0,空头持仓成本0.0
 22:47:00 > 日期8,品种SQAU00,盘后,今日开多0,今日开空0,开仓后浮动盈亏11223.44970703125, 多头开仓成本396.2691345214844,        多头持仓成本396.2691345214844, 空头开仓成本0.0,空头持仓成本0.0,今收401.880859375
 22:47:00 > 日期8,品种SQAU00,盘前浮动盈亏11223.44970703125,今收401.880859375, 多头开仓成本396.2691345214844,多头持仓成本396.2691345214844,        空头开仓成本0.0,空头持仓成本0.0
 22:47:00 > 日期11,品种SQAU00,盘后,今日开多0,今日开空2,开仓后浮动盈亏-781316.5893554688, 多头开仓成本0.0,        多头持仓成本0.0, 空头开仓成本390.6282958984375,空头持仓成本390.6282958984375,今收390.6582946777344
 22:47:00 > 日期11,品种SQAU00,盘前浮动盈亏-781316.5893554688,今收390.6582946777344, 多头开仓成本0.0,多头持仓成本0.0,        空头开仓成本390.6282958984375,空头持仓成本390.6282958984375
 22:47:00 > 日期12,品种SQAU00,盘后,今日开多0,今日开空0,开仓后浮动盈亏-786227.783203125, 多头开仓成本0.0,        多头持仓成本0.0, 空头开仓成本390.6282958984375,空头持仓成本390.6282958984375,今收393.1138916015625
 
 *****说明,在11日平多开空后,浮动盈亏(portfolio.pnl)突然变成了-781316.5893554688,这是不可能的,只开了两手,按收盘价开仓,浮动盈亏应该只亏手续费
 2、正常段
 22:47:00 > 日期1,品种SQAU00,盘后,今日开多0,今日开空0,开仓后浮动盈亏-738388.4887695312, 多头开仓成本0.0,        多头持仓成本0.0, 空头开仓成本390.6282958984375,空头持仓成本390.6282958984375,今收369.1942443847656
 22:47:00 > 日期1,品种SQAU00,盘前浮动盈亏-738388.4887695312,今收369.1942443847656, 多头开仓成本0.0,多头持仓成本0.0,        空头开仓成本390.6282958984375,空头持仓成本390.6282958984375
 22:47:00 > 日期2,品种SQAU00,盘后,今日开多2,今日开空0,开仓后浮动盈亏-59.99755859375, 多头开仓成本374.281982421875,        多头持仓成本374.281982421875, 空头开仓成本0.0,空头持仓成本0.0,今收374.2519836425781
 22:47:00 > 日期2,品种SQAU00,盘前浮动盈亏-59.99755859375,今收374.2519836425781, 多头开仓成本374.281982421875,多头持仓成本374.281982421875,        空头开仓成本0.0,空头持仓成本0.0
 22:47:00 > 日期6,品种SQAU00,盘后,今日开多0,今日开空0,开仓后浮动盈亏-5481.93359375, 多头开仓成本374.281982421875,        多头持仓成本374.281982421875, 空头开仓成本0.0,空头持仓成本0.0,今收371.541015625
 
 *****说明,在2日平空开多后,浮动盈亏(portfolio.pnl)为-59.99755859375,这是正常的,按收盘价开仓,浮动盈亏只亏手续费
 另外,测试报告成交明细,未见异常,所以仅仅是portfolio.pnl有问题。
 问题总结:开多时,portfolio.pnl浮动盈亏正常,开空时,portfolio.pnl浮动盈亏异常。请确认问题并查找原因。
 
 | 
 
  |