交易头寸的计算那篇文章中只有固定资金计算,如果是资金比例计算开仓怎么写呢?
主要有一下几点疑问,劳烦解答下,谢谢~ 1.如何获取回测时候的账户净值? 2.假设现在有3个策略单元,每个初始资金50000,那么组合报告总的资金是150000,我能否获取150000这个总资金,并计算各个单元的开仓数量? 3.实盘时候如何获取账户净值呢?
主要有一下几点疑问,劳烦解答下,谢谢~ 1.如何获取回测时候的账户净值? 2.假设现在有3个策略单元,每个初始资金50000,那么组合报告总的资金是150000,我能否获取150000这个总资金,并计算各个单元的开仓数量? 3.实盘时候如何获取账户净值呢?
Integer LotsMode(3)——这里显示错误?
Integer 是什么函数?定义没有的
回复:integer是定义整型容器的关键字 类似numeric bool string
关于资金比例计算头寸问题,系统提供了相应图表账户函数,计算起来其实并不复杂。考虑一直有客户问,就以双均线为例提供一个示例,如有不符合需求的地方,请大家自己再做修改。 Params Numeric FastLength(5); // 短期指数平均线参数 Numeric SlowLength(20); // 长期指数平均线参数 Integer LotsMode(3); // 头寸计算方式,1-固定手数,2-固定市值,3-资金比例 Integer Lots(1); // 固定手数 Numeric fixedmoney(100000); // 固定市值 Numeric moneyrate(0.1); // 资金比例,0.1=10% Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Defs Integer CalcuTradeLots() // 交易手数计算函数 { Integer myLots; If(LotsMode==3) { myLots = Max(1,IntPart((Portfolio_CurrentEquity*moneyrate/MarginRatio)/(Open*contractunit*bigpointvalue))); } Else If(LotsMode==2) { myLots = Max(1,IntPart(fixedmoney/(Open*contractunit*bigpointvalue))); } Else myLots = Lots; return myLots; } Events 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]) { BuyToCover(0,Open); // 平仓后调用交易手数计算函数 Integer TradeLots; TradeLots = CalcuTradeLots(); Buy(TradeLots,Open); } If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) { Sell(0,Open); // 平仓后调用交易手数计算函数 Integer TradeLots; TradeLots = CalcuTradeLots(); SellShort(TradeLots,Open); } } 另外几个问题,关于净值的问题,好像系统目前还没有提供直接的函数,但道理一样,有了权益值,计算净值是不难的。多个策略单元的开仓数量汇总问题,因为策略是和策略单元关联的,要得到汇总的数据只能借助其他交互办法。
回复:看不懂,能否逐行注解析下?交易是非常严谨的事情,出问题不知道怎么修改!