实盘模拟开仓手数问题

money = A_CurrentEquity(0) /8 ;//按账户权益的八分之一为固定保证金额去开设头寸

myprice = Open;//这里使用open

lots = IntPart(money/(myprice*contractunit*BigPointValue*MarginRatio)); //计算开仓手数


我的问题是,计算lots的公式中用到的 contract unit、bigpointvalue和marginratio,三个数字是否获取了实盘交易中实际的数值设置(尤其是marginratio保证金率)?如果不是,公式怎么改成按照实盘交易时候对应的实际数值?

如何用ATR和实盘权益计算开仓手数
关于自动计算开仓手数
关于动态权益百分比计算开仓手数的问题
模拟盘图形上的加仓手数不等于实际加仓手数
关于计算开仓手数问题
自动交易如何设置开仓手数
请问老师个关于自动计算账户资金最大可开仓手数的问题
平仓手数与账号的持仓手数不匹配导致申报失败
分组指令模型手数在代码里怎么写
TBQ自动计算开仓手数的问题?

               money = A_CurrentEquity(0) /8 / comno;//按账户权益的八分之一为固定保证金额去开设头寸

myprice = Open;//这里使用open

MarginRate mRate;

Bool ret = A_GetMarginRate(RelativeSymbol,mRate);

lots = IntPart(money/(myprice*contractunit*BigPointValue*mRate)); //计算开仓手数

我按照老师提示的改写了一下,结果编译时提示 lots公式左右两边数据类型必须属于numeric类型,不知问题在哪?

你lots 怎么定义的

lots一直是numeric哈

\"\"

我并没有发现报错

谢谢老师,我再试试的。我把函数文档的内容print出来,会给longmarginratio 和 shortmarginraitio两个数字,在实盘交易中,是不是要根据多空方向不同保证金率分别计算lots手数呢?

Vars

Numeric money;//开仓资金

Numeric myprice;//委托价格

Numeric mrate;//保证金率

Numeric lmrate;//多单保证金率

Numeric smrate;//空单保证金率

   Numeric lotsl;//多单委托数量

   Numeric lotss;//空单委托数量

OnReady()

{

SetBackBarMaxCount(1+Max(SlowLength,Length));

MarginRate mRate;

       //获取账户对应合约的保证金率

       Bool ret = A_GetMarginRate(relativeSymbol, mRate);

       lmrate = mRate.longMarginRatio;

       smrate = mRate.shortMarginRatio;

}

OnBar(ArrayRef<Integer> indexs)

{

money =  A_CurrentEquity * 0.2;//按总风险度的20%

myprice = Open;//这里使用open,更为精确的是使用委托价格

lotsl = IntPart(money/(myprice*contractunit*BigPointValue* lmrate)); //计算开仓手数

lotss = IntPart(money/(myprice*contractunit*BigPointValue* smRate)); //计算开仓手数

       }

老师我研究出来了,以上就是根据账户实时数据,调用多单、空单的保证金率并计算开仓手数的方式,编译通过了。

https://www.tbquant.net/forumDetail?cur=tbquan&id=9724&cid=all

刚看到这个贴,应该能解决