固定市值开仓计算有误,请问老师问题出在哪里

例如用双均线测试,代码如下;在报告中查看交易记录,根据市值计算的手数有问题 //------------------------------------------------------------------------ // 简称: DualMA // 名称: 双均线交易系统 // 类别: 公式应用 // 类型: 内建应用 //------------------------------------------------------------------------ Params Numeric FastLength(5);// 短期指数平均线参数 Numeric SlowLength(20);// 长期指数平均线参数 Numeric money(200000); //固定市值开仓 Vars Numeric myprice; //委托价格 Numeric lots(1); //下单手数 Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Events OnInit() { { //=========数据源相关设置============== SetBeginBarMaxCount(1); AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 SetOrderMap2MainSymbol(); //设置委托映射到主力 } } OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,FastLength); AvgValue2 = AverageFC(Close,SlowLength); PlotNumeric("MA1",AvgValue1); PlotNumeric("MA2",AvgValue2); If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]) { myprice=close[1]; //确定委托价格 if(money<>0) //固定市值开仓 lots=IntPart(money/(myprice*contractunit* BigPointValue)); //计算开仓手数 Buy(lots,Open); } If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) { SellShort(lots,Open); } //PlotNumeric("PL",Portfolio_TotalProfit); } //------------------------------------------------------------------------ // 编译版本 GS2010.12.08 // 版权所有 TradeBlazer Software 2003-2025 // 更改声明 TradeBlazer Software保留对TradeBlazer平 // 台每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

lots=IntPart(money/(myprice*ContractUnit * BigPointValue * MarginRatio))

myprice*contractunit* BigPointValue 这个计算的是一手合约的市值 不是保证金

回复:我是用市值去开仓的,比如设置单个品种的市值上限money是20万,算出手数;但是结果还是不对

回复:具体举个实例说明一下

回复:程序上面设置的固定市值是20万,例如豆粕的价格是3000,一手是10吨,一手的市值就是30000,20万的市值就是6手左右的豆粕

回复:我把BigPointValue去掉还是算的不对