四周策略改盈利加仓不成功,哪里出问题了?

    Params
           
    Vars
        Numeric highline;            //高点连线
        Numeric lowline;            //低点连线
        Numeric myprice;            //委托价格
        Numeric lots(5);                //委托数量
        Numeric money(10);             //浮盈开仓:单位万 
    Events
    OnInit()
    {
        //=========交易相关设置==============
    SetInitCapital(100000);    //设置初始资金为10万        
    }                    
    OnBar(ArrayRef<Integer> indexs)
    {
        myprice=Open;//这里使用open,更为精确的是使用委托价格
        lots=IntPart(money*10000/(myprice*contractunit*BigPointValue)); //计算开仓手数
       // lots=5;
        highline=Highest(High[1],20);
        lowline=Lowest(Low[1],20);
        If(MarketPosition<>1 And High>=highline)
            Buy(lots,Max(Open,highline));
        If(MarketPosition<>-1 And Low<=lowline)
           { SellShort(lots,Min(Open,lowline));
             money=lots*(myprice*contractunit*BigPointValue)/10000;}
    }

评论区
202****3125645033

麻烦管理删掉帖子!免得误导他人!

2022-04-14 17:45
202****3125645033

策略研究时用:lots=IntPart(money/(myprice*contractunit*BigPointValue)); 

策略交易时用:lots=IntPart(A_FreeMargin/(myprice*contractunit*BigPointValue)); 

策略研究下不带账户,要设定初始资金、最大投入交易资金。策略交易就可以用模拟账户里资金和持仓量来跑了。

初学程序化交易,把这两个之间的差异没搞清楚。

2022-03-21 13:01
202****3125645033

lots=IntPart(A_FreeMargin/(myprice*contractunit*BigPointValue)); //计算开仓手数

搞公式习惯了,没想起来用账户函数。问题已经解决,谢谢kyover!

2022-03-21 12:27
202****3125645033

这个money是不是下一bar就给var部分初始化成默认值了,而不是sell之后的最后一句给它的最新值?程序小白,基本没有编程经验,麻烦多指教。谢谢!

2022-03-21 10:32
202****3125645033

怎么改,麻烦指点一下。

2022-03-21 10:25
202****3125645033

       Params
           
    Vars
        Numeric highline;            //高点连线
        Numeric lowline;            //低点连线
        Numeric myprice;            //委托价格
        Numeric lots;                //委托数量
        Numeric money(1);             //浮盈开仓:单位万 
    Events
    OnInit()
    {
        //=========交易相关设置==============
    //SetInitCapital(1000000);    //设置初始资金为10万        
    }                    
    OnBar(ArrayRef<Integer> indexs)
    {
        myprice=Open;//这里使用open,更为精确的是使用委托价格
        lots=IntPart(money*10000/(myprice*contractunit*BigPointValue)); //计算开仓手数
       // lots=5;
        highline=Highest(High[1],20);
        lowline=Lowest(Low[1],20);
        If(MarketPosition<>1 And High>=highline)
            Buy(lots,Max(Open,highline));
        If(MarketPosition<>-1 And Low<=lowline)
           {Sell(lots,Min(Open,lowline));
           money=lots*(myprice*contractunit*BigPointValue)/10000;}//平仓后重新计算资金量,给money重新赋值
    }

2022-03-21 10:25
202****3125645033

     money=lots*(myprice*contractunit*BigPointValue)/10000;

2022-03-21 10:10
202****3125645033

 If(MarketPosition<>-1 And Low<=lowline)
           { SellShort(lots,Min(Open,lowline));
             money=lots*(myprice*contractunit*BigPointValue)/10000;}
    }//平仓后重新计算资金量,给money重新赋值。

2022-03-21 10:06
顶部