关于可用资金的问题

我发现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;

}

关于可用资金问题
可用资金读取的问题
依旧是可用资金问题
可用资金
剩余可用资金
利用A函数读取可用资金控制仓位的问题
如何获取回测账户的可用资金
tbpy可用资金获取
关于资金管理的问题
用账户可用资金的百分比下单怎样编写?

没有好好看说明吧



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

//计算可用金额对应最大仓位(真实价格)

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你再看看