全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
四周策略改盈利加仓不成功,哪里出问题了?
2022-03-21 10:05

    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

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

2022-03-21 10:06
kyover

这哪里有代码是写盈利加仓的?

盈利判断没有,加仓也没有

2022-03-21 10:08
202****3125645033
@kyover

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

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

怎么改,麻烦指点一下。

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

写都没写 怎么改?起码写出来再改吧

加仓语句 可以学习海龟策略 盈利需要序列类型记录开仓价格 可以参考移动止损的思路

2022-03-21 10:28
202****3125645033
@kyover

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

2022-03-21 10:32
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

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

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

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

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

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

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

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

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

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

2022-04-14 17:45
您未登录,请先 登录注册 后发表评论
顶部