比例下单手数,我用的如下代码:SS:INTPART(((BJ*(BL/100))/(ref(c,1)*MULTIPLIER*TACCOUNT(41)))),linethick0;
其中BJ代表本金,BL代表下单比例。设了这两个参数后,我就可以任意根据当时的账户实际资金来调整下单数量。但实盘中发现一个问题:
就是当平仓的时候,经常平不干净,总会留那么几手不平,这是因为随着行情上涨,ref(c,1)数值变大,计算出来的SS手数变小,到高位平仓时的下单手数小于低位开仓时的手数。
我不明白的是,平仓语句中我用的是holding,系统并没有自动判断出开仓时的手数,而是重新按ref(c,1)来计算持仓的手数,这样计算出来的持仓与实际持仓是有差距的,因为ref(c,1)的值不一样了。
请问有什么解决之道?谢谢
我不太确定荐贴中的情况与我是否同一回事。烦请进一步解惑:SS:INTPART(((BJ*(BL/100))/(ref(c,1)*MULTIPLIER*TACCOUNT(41)))),linethick0;
sell(翻空信号 and holding>0,holding,thisclose),pertrader;
1. 上述语句中,平仓语句中加了pertrader控制符后,就能确保全部平干净所持仓位?(在价格高位时平掉低位时买进的仓位)
2. 这个pertrader控制符的内在原理是什么,是代表着会在下单时实时扫描账户的实际持仓吗?
1.
2.全平持仓,你可以直接在手数位置填0,它代表实际持仓全平。sell(翻空信号 and holding>0,0,thisclose)。
或者你的手数使用百分比开仓,而不用自己程序化去计算手数。pertrader函数的说明,其实就是实际操作真实的持仓
了解了0的作用。我上述第一个问题的答案是YES吗?
如果用0,我可能有一个麻烦,那就是我多策略同时值守交易,如果填0应会把别的策略的持仓都给平掉吧?
1,全平写0,
SS:INTPART(((BJ*(BL/100))/(ref(c,1)*MULTIPLIER*TACCOUNT(41)))),linethick0;
sell(翻空信号 and holding>0,0,thisclose);
2,是的
我希望的是能准确判断策略中的持仓,并准确平掉该策略的实际持仓。如何能做到?
平掉该策略的是holding,平掉该品种所有持仓是写0
这就回到我一开始的问题了:写holding时无法平干净,总会留那么几手,就因为价格变动之后计算的结果变了,我一直以为holding会自动判断开仓时所计算出来的手数,目前来看似乎是在平仓时重新按当前价位计算手数……有没有什么好建议解决这个问题?
可以采用全局变量进行记录手数手数变化,在全平时,只要读取当前的全局变量记录的持仓情况