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手
变量是分图层的
函数内引用的变量参数服从函数的图层
也就是说
Data1.SellShort(lotsfg, Data1.open); 等效于Data1.SellShort(data1.lotsfg, Data1.open);
而你的(data1.lotsfg并没有做赋值处理
尝试写成Data1.SellShort(data0.lotsfg, Data1.open);
你太厉害了