关于可用资金的问题
我发现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你再看看