Buy、Sellshort函数的先平旧仓再开新仓功能咨询

我想咨询一下,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买入开仓

麻烦老师把文字部分(先平掉所有空单再开多单,先平掉所有多单再开空单)
Bool A_Buy 这个函数是否只是开仓,开仓之前不会进行空单的平仓吧?
请教老师,先检查账户持仓再开仓却没开仓
先平仓后开仓该如何编写。
开平互转无法平昨仓
buy函数为啥是先开仓再平仓
我想实现先撤掉之前所有挂的单再新开多仓,可以这样写吗
buy函数能否实现单独“买开”功能
buy和sellshort
两个开仓信号如何间隔特点时间再开仓?

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函数可以方便很多。把它的使用限制说清楚,一般有太大问题的。