后复权历史回测导致使用资金比例计算开仓手数虚假的问题。

发现一个问题,想请教一下老师和看到帖子的大佬如何解决。

遇到的问题是:目前使用后复权进行历史回测,设置了后复权以及映射真实价格。但我的开仓手数是使用  整体可用资金/保证金*比例的方式来实现的,因为后复权的价格和实际价格完全不一致,这样就会造成计算出来的可开仓手数和实际可开仓手数完全对不上的问题。

比如我使用的橡胶RU888,一小时后复权进行历史回测,以下是弹出的错误信息



使用的开仓手数是  整体可用资金/保证金*比例的方式,这里选用的比例是30%,也就是说永远都是用整体资金的30%来进行开仓。

这时我的账户余额有6.7个亿,按照后复权价格计算出来的可开仓手数是23万多手,使用30%的比例等于应该使用7万多手进行开仓,但问题就出现在这里,后复权的橡胶价格只有3500多点,因此计算出来的每手保证金只需要2800多块钱,而实际橡胶在这个时候的价格是1万多点,开7万手单子实际需要7亿多,导致了资金不足无法开仓。

问题的根源就在于计算开仓手数时使用的是后复权的价格,而交易是实际映射到真实交易上了,因此设置的30%资金开仓等等都是错乱的。

想问一下是否能调用后复权的价格??或者怎么样解决这个问题???请各位大佬帮助! 谢谢!


计算手数的代码如下:

ZHYE = Portfolio_CurrentCapital() + Portfolio_UsedMargin();

       MDJZ = ContractUnit()*BigPointValue();

       SZ = MDJZ*C*MarginRatio();

       KC = ZHYE/SZ;

       LOTS = IntPart(ZHYE/SZ*BILI);

       Commentary("每点价值==" + Text( MDJZ ));

       Commentary("保证金率==" + Text( MarginRatio() ));

       Commentary("账户余额==" + Text( ZHYE ));

       Commentary("账户余额*BILI==" + Text( ZHYE*BILI ));

       Commentary("已使用保证金==" + Text( Portfolio_UsedMargin() ));

       Commentary("每手保证金==" + Text( SZ ));

       Commentary("可开仓手数==" + Text( KC ));

       Commentary("手数==" + Text( LOTS ));

       Commentary("当前价格==" + Text( C ));



关于自动计算开仓手数
如何用ATR和实盘权益计算开仓手数
后复权历史回测,保证金如何正确计算??
读取账户资金计算手数
请教关于公式中用ATR计算开仓手数时,后复权价格与真实价格的问题
按照资金80%计算开仓手数
请问老师个关于自动计算账户资金最大可开仓手数的问题
使用连续888进行回测,选择不复权还是后复权好?
根据资金使用率计算下单手数不对
关于动态权益百分比计算开仓手数的问题

如果是映射后复权就会出现这个问题,不映射后复权历史回测就是虚假的,请问如何解决??