我想咨询一下,Buy、Sellshort函数的平旧仓开新仓功能是不是按下面这种方式运行的?
我的配置是使用888映射到主力合约。
myPos=position;//保存已有持仓数据
我的期望是:当主力换月后,在平换月前买入的空仓时,平掉的是myPos中的旧主力合约(myPos.symbol)持仓,买入开仓时则按照RelativeSymbol,在新主力上开仓。SellShort也期望是如此。从而在888映射到新合约后不影响对原持仓的平仓。
下面是用A函数为例对期望进行的描述:
Buy函数:
A_BuyToCover(myPos.symbol,1,Q_AskPrice,ids);//按持仓myPos.symboll卖出平仓
A_Buy(RelativeSymbol,1,Q_AskPrice,ids);//按RelativeSymbol买入开仓
SellShort函数:
A_Sell(myPos.symbol,1,Q_BidPrice,ids);//按持仓myPos.symboll卖出平仓
A_SellShort(RelativeSymbol,1,Q_BidPrice,ids);//按RelativeSymbol买入开仓
A函数可以实现
但你要能保证A函数执行的位置和时间正确
就是A函数需要自己保证的东西太多了,所以想咨询一下Buy、SellShort函数,如果它们不支持这样的需求,那我就只能不用888映射主力这种方式了。
有没有可能你们在现有BuyToCover、Buy、Sell、SellShort函数的基础上,在开放一个String symbol参数的重构呢?
就像这种:
Bool BuyToCover(String symbol, Numeric Share=0,Numeric Price=0,Integer signalFlag=0)
Bool Buy(String symbol, Numeric Share=0,Numeric Price=0,Integer signalFlag=0)
Bool Sell(String symbol, Numeric Share=0,Numeric Price=0,Integer signalFlag=0)
Bool SellShort(String symbol, Numeric Share=0,Numeric Price=0,Integer signalFlag=0)
buy类函数的作用是在图表上给出交易信号,下一步系统读取图表上的信号进行报单。
重构如果让buy可以指定symbol,但是图上并没有订阅该symbol的图层数据,那这个信号记录到哪里去?下一步怎么报单?
buy类函数本身就是一个为了降低开发难度而阉割了自由度的指令,你如果觉得自由度不够,那就用a函数进行订单管理
我只是提供一种思路,很多用TB写代码的人没有你们专业,如果有这样一种buy指定symbol的调用方式,比起用A函数可以方便很多。把它的使用限制说清楚,一般有太大问题的。