投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
我使用T_BuyPosition 判断持仓,在平仓时用T_OpenOrder==0判断平仓结束
但由于两个函数执行速度不同,实际平仓已成交,但T_BuyPosition判断还有持仓,而T_OpenOrder==0已成立,搞到进入错误
两个函数执行速度一致的,但是您判断的方法不对
T_OpenOrder判断的是未成交委托数量,但是如果有持仓撤单的情况下,这个函数返回值还是0的 您具体想要实现什么思路呢,可以详细描述下,我们帮您分析下
投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
IF(DD>0 && QSDD!=1 && HCDD!=1 && LOCK_D!=1 && T_OpenOrder(Code_name,2)==0) //短线多单进行平仓处理,无锁多仓及趋势多单,无回撤单,无挂卖平单 我思路是有短线多单持仓DD>0(使用T_BuyPosition),进入处理,原来没用T_OpenOrder函数,就会碰到其它程序在平多单时,又进这个程序处理 所以我加入T_OpenOrde,想法是在保证平多时,就算还没成交的时间里,DD>0有效,但T_OpenOrde无效,我认为当T_OpenOrde==0有效时, 但实际程序执行T_OpenOrde函数太快,它先有效而T_OpenOrder还没有变动的情况下就进入短线多单入口了
投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
我为何使用T_OpenOrder,因为我希望撤单要进来,已平仓成功就不要进来,现在是平仓成交了进来,不是我要的效果
非正在查询持仓状态时,加个判断就可以了,请参考:
CheckPosition() == 0投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
这个函数我看了一下,还有些不明白:
请问这个函数是解决不同函数时延问题吗?也就是每个函数稳定了之后其值才用吗?
将
IF(DD>0 && QSDD!=1 && HCDD!=1 && LOCK_D!=1 && T_OpenOrder(Code_name,2)==0) 改为: IF(DD>0 && QSDD!=1 && HCDD!=1 && LOCK_D!=1 && T_OpenOrder(Code_name,2)==0 && CheckPosition() == 0)
投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
我后来又检查了我的程序,两个函数间相差了有近1000行语句,我认为是函数执行时延造成,这种情况用
CheckPosition()可以解决?
投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
还有对这个函数要解决的问题是什么?我在函数说明中实在看不明白,
我程序中像这种类似情况几百处,每处都要加这个函数?
投资者咨询:
函数执行速度问题处理 (文华财经WH8赢智V8.2)来源:文华财经 日期:2018-5-4 14:30
还研究不出来?
IF(DD>0 && QSDD!=1 && HCDD!=1 && LOCK_D!=1 && T_OpenOrder(Code_name,2)==0 && CheckPosition() == 0)
这种写法就可以的
如果需要添加的语句过多,可以在这些语句的外层添加一句IF(CheckPosition() == 0),把这些语句都包括进去
PS:
CheckPosition() == 0 是为了解决委托状态和持仓变化返回值不同步的问题
组件在一次执行过程中,委托状态和持仓取值,是不变化的
所以两个函数间相隔多少行,与持仓取值是无关的