等级: 专业版
- 注册:
- 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浮动盈亏异常。请确认问题并查找原因。
|
-
|