例如用双均线测试,代码如下;在报告中查看交易记录,根据市值计算的手数有问题
//------------------------------------------------------------------------
// 简称: 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去掉还是算的不对