我发现Portfolio_UsedMargin + Portfolio_CurrentCapital 不等于 Portfolio_CurrentEquity ,这是为什么?

//计算可用金额对应最大仓位(真实价格)
Numeric calcAvailableSize(Numeric price,Bool islong)
{
// 按合约成交金额比例计算保证金
if(mRate.ratioType == Enum_Rate_ByFillAmount)
{
// 账号金额保证金最大持仓
Numeric MRatio = IIF(islong, mRate.longMarginRatio,mRate.shortMarginRatio) ;
Commentary("!!!MRatio:"+Text(MRatio));
Integer pos_available = IntPart( (Portfolio_CurrentEquity - Portfolio_UsedMargin) / (ContractUnit * BigPointValue * price * MRatio) );
Commentary("!!!UsedMargin:"+Text(Portfolio_UsedMargin)+",CurrentCapital:"+Text(Portfolio_CurrentCapital)+",Equity:"+Text(Portfolio_CurrentEquity)+",sum:"+Text(Portfolio_CurrentCapital + Portfolio_UsedMargin));
Commentary("!!!sum-roll:"+Text((Portfolio_CurrentCapital + Portfolio_UsedMargin)/Rollover));
return pos_available;
}
return 0;
}



没有好好看说明吧
收盘价和开盘价基本相等,不会相差这么大, 我用这两个价格分别计算了占用保证金也都对应不上。请帮看看是哪里的问题?

//计算可用金额对应最大仓位(真实价格)
Numeric calcAvailableSize(Numeric price,Bool islong)
{
// 按合约成交金额比例计算保证金
if(mRate.ratioType == Enum_Rate_ByFillAmount)
{
// 账号金额保证金最大持仓
Numeric MRatio = IIF(islong, mRate.longMarginRatio,mRate.shortMarginRatio) ; //实盘用
Commentary("!!!MRatio:"+Text(MRatio));
Integer pos_available = IntPart( (Portfolio_CurrentEquity - Portfolio_UsedMargin) / (ContractUnit * BigPointValue * price * MRatio) );
Commentary("!!!UsedMargin:"+Text(Portfolio_UsedMargin)+",CurrentCapital:"+Text(Portfolio_CurrentCapital)+",Equity:"+Text(Portfolio_CurrentEquity)+",sum:"+Text(Portfolio_CurrentCapital + Portfolio_UsedMargin));
Commentary("!!!sum-roll:"+Text((Portfolio_CurrentCapital + Portfolio_UsedMargin)/Rollover));
Commentary("!!!open:"+Text(open)+",close:"+Text(close)+",CurrentContracts:"+Text(CurrentContracts));
Commentary("!!!open对应占用保证金:"+Text(open*ContractUnit * BigPointValue * MRatio*CurrentContracts)+",除权:"+Text(open/rollover*ContractUnit * BigPointValue * MRatio*CurrentContracts));
Commentary("!!!close对应占用保证金:"+Text(close*ContractUnit * BigPointValue * MRatio*CurrentContracts)+",除权:"+Text(close/rollover*ContractUnit * BigPointValue * MRatio*CurrentContracts));
return pos_available;
}
return 0;
}

第一,价格差了1,那么市值就是手数24乘以价差1乘以合约乘数20 = 480
然后保证金就是市值乘以保证金率0.1 = 48
所以open和close对应保证金除权后 138384-138336 = 48,没有问题。
第二,你这根bar是否产生了信号?如果有信号,那么手续费和滑点你算进去了吗?24手,滑点1跳,这就480元,手续费万三,一手12左右,24手就是288,这些你都算了吗?
补充一下,信号产生的手续费和滑点是不会在可用资金里扣除的
open和close之间的差是没有问题,但是系统算出来的保证金和手算的对不上啊,你看上面的图里一个是123237,一个是138384 还差的不少呢
另外的帖子里应该回复过了。把手续费和滑点调成0你再看看