全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
data品种仓位问题
y135019 分享到
2022-03-28 10:26

Params
    Numeric InitialMoney(100000);
    
Vars
    Series<Numeric> bj(0);
    Series<Numeric> lotsrb(0);
    Series<Numeric> lotsfg(0);
Events
    onBar(ArrayRef<Integer> indexs)
    {    
    bj=Round(data0.c/data1.c*100,2);
    
    if(data0.v>0 and data1.v>0 )
    PlotNumeric("bj",bj,0,white);
    PlotNumeric("高位",300,0,Green);
    PlotNumeric("低位",200,0,White);
    
    if(data0.v>0 and data1.v>0 )
    {
        If (Data0.MarketPosition!=1 and bj[1] <200 and bj[2] <200 and bj[3] <200)
            {
            lotsrb=Round(InitialMoney/(Data0.c[1]*Data0.ContractUnit*0.1),0);
            lotsfg=Round(InitialMoney/(Data1.c[1]*Data1.ContractUnit*0.1),0);
                Data0.buy(lotsrb, Data0.open);
                Data1.SellShort(lotsfg, Data1.open);    
            }
            
        If (Data0.MarketPosition!=-1 and bj[1] >300 and bj[2] >300 and bj[3] >300)
            {
            lotsrb=Round(InitialMoney/(Data0.c[1]*Data0.ContractUnit*0.1),0);
            lotsfg=Round(InitialMoney/(Data1.c[1]*Data1.ContractUnit*0.1),0);
                Data0.SellShort(lotsrb, Data0.open);
                Data1.buy(lotsfg, Data1.open);            
            }
              commentary("lotsrb="+text(lotsrb)); 
            commentary("lotsfg="+text(lotsfg));         
            
            
    }
    
       
    }
 

请问老师,为何data1仓位始终显示是一手,明明输出是20手crying

 

kyover

变量是分图层的

函数内引用的变量参数服从函数的图层

也就是说

Data1.SellShort(lotsfg, Data1.open);   等效于Data1.SellShort(data1.lotsfg, Data1.open); 

而你的(data1.lotsfg并没有做赋值处理

尝试写成Data1.SellShort(data0.lotsfg, Data1.open); 

2022-03-28 12:27
y135019
@kyover

你太厉害了yesyesyes

2022-03-28 12:52
您未登录,请先 登录注册 后发表评论
顶部