等级: 专业版
- 注册:
- 2021-5-20
- 曾用名:
|
楼主 |
发表于 2021-11-29 10:05
|
显示全部楼层
经过测试,我总结的规律如下:
1、必须要执行get_portfolio()函数,刷新对象,portfolio的属性的值才会被修改,一般情况下之所以要到下一个BAR,portfolio.sell_quantity才会变化,是因为要到下一根BAR时,才会循环重新执行get_portfolio语句。
2、但如果在buy_\sell_指令下面,插入get_portfolio(),例如
portfolio = get_portfolio('dqeb00', 0)
if ma5[-1] > ma20[-1] and ma5[-2] < ma20[-2]:
if portfolio.sell_quantity > 0:
buy_close(i, "market", volume = portfolio.sell_quantity,serial_id = 1)
portfolio = get_portfolio('dqeb00', 0)
print('平空后,多头%d,空头%d' %(portfolio.buy_quantity, portfolio.sell_quantity))
buy_open(i, "market", volume = 1,serial_id = 2)
portfolio = get_portfolio('dqeb00', 0)
print('反手买开,多头%d,空头%d' %(portfolio.buy_quantity, portfolio.sell_quantity))
结果显示,平仓指令后,get_portfolio(),持仓量马上就变化了,不需要等到下一根K,这跟PEL中的虚拟持仓holding 一样;但是,在开仓指令后,get_portfolio(),
持仓量却不会改变,必须要到下一根K,才能读到持仓量的变化。 |
|