dorodo 发表于 2017-8-1 16:50:37

请大侠帮我看一这段代码为什么计算不出正确仓位

  TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
    TurtleUnits = (TotalEquity*RiskRatio/100) /(ContractUnit()*BigPointValue());
    TurtleUnits = IntPart(TurtleUnits); // 对小数取整
为什么我要取30%的仓位,但是RiskRatio 设为30,仓位计算不对呢?

dorodo 发表于 2017-8-2 22:20:46

果然是个死论坛,根本没有人维护的。

小米 发表于 2017-8-3 09:41:49

怎么个不对法?请具体一下

dorodo 发表于 2017-8-3 10:44:22

RiskRatioy这个变量,我怎么设都不会有变化,30%是两手。10%也是两手。1%也是两手。

小米 发表于 2017-8-3 14:06:09

dorodo 发表于 2017-8-3 10:44 static/image/common/back.gif
RiskRatioy这个变量,我怎么设都不会有变化,30%是两手。10%也是两手。1%也是两手。 ...

上述算法是totalequity是总资产,其中也包括已占用保证金。确认一下可用保证金是否能开的数量并不大呢?

dorodo 发表于 2017-8-3 14:51:03

totalequity资金是1万,但是我设1%,结果是开仓2手。设70%也是开仓两手。完全跟RiskRatioy变量无关。

dorodo 发表于 2017-8-3 14:51:29

我做的是螺纹。

小米 发表于 2017-8-3 14:53:13

dorodo 发表于 2017-8-3 14:51 static/image/common/back.gif
totalequity资金是1万,但是我设1%,结果是开仓2手。设70%也是开仓两手。完全跟RiskRatioy变量无关。
...

方便将开仓这一段的代码 ,图表信号,以及全局交易设置的内容截图看一下吧。

dorodo 发表于 2017-8-3 15:14:56

    //仓位统计
     TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
    TurtleUnits = (TotalEquity*RiskRatio/100) /(ContractUnit()*BigPointValue());
    TurtleUnits = IntPart(TurtleUnits); // 对小数取整
               

      //开平仓条件
        SellEntry = Close<LowerLine;
        SellExit =  Close>UpperLine ;
        //程序主体
        If(MarketPosition==0 && SellEntry)
        {
                SellShort(TurtleUnits,Open);
                Commentary("开空");               
        }
        If(MarketPosition==0 && BuyEntry)
        {                        
            Buy(TurtleUnits,Open);
                Commentary("开多");
        }       

dorodo 发表于 2017-8-3 15:25:35

配图
页: [1] 2
查看完整版本: 请大侠帮我看一这段代码为什么计算不出正确仓位