OnInit()
{ SubscribeBar("rb2205.SHFE", "60m", 20211101, 0, Enum_Data_RolloverBackWard);
SubscribeBar("rb2210.SHFE", "60m", 20211101, 0, Enum_Data_RolloverBackWard);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
//买多部分
If(k1==0 )
{data0.buy(lots1,data0.open);
data1.SellShort(lots1,data1.open);Return;
}
为什么这个代码触发交易后,只发送RB2205的交易单,一直都没见RB2210的交易单呢?监控器也没显示RB2210的持仓异常?
全部代码是这样,麻烦老师帮看看到底问题出在哪里?
Params
Numeric bz(100); //设立标准差,即标准差中线位置,围绕该值上下做多空
Numeric db1(100); //下网格宽度,加仓宽度
Numeric db2(100); //上网格宽度,加仓宽度
Numeric lots1(1);
Vars
Series<Numeric> k1(0);Series<Numeric> d1(0);
Series<Numeric> lowestjc;Series<Numeric> Highestjc;
Series<Numeric> jiacha;Series<Numeric> lotsj(0);
Global Array<Integer> layers;
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{ layers[0]=SubscribeBar("RB2205.SHFE", "60M", 20211218, 0, Enum_Data_RolloverBackWard);
layers[1]=SubscribeBar("RB2210.SHFE", "60M", 20211218, 0, Enum_Data_RolloverBackWard);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
//------------------------------------------------------------------------
//买多部分
//------------------------------------------------------------------------
//开仓1
If(k1==0 )
{data0.buy(lots1,data0.open);
data1.SellShort(lots1,data1.open);Return;
}
//减仓
If(k1>0 )
{
data0.Sell(lotsj,data0.open);
data1.BuyToCover(lotsj,data1.open);Return;
}
//------------------------------------------------------------------------
//卖空部分
//------------------------------------------------------------------------
//开仓1
If(d1==0)
{data0.SellShort(lots1,data0.open);
data1.buy(lots1,data1.open);Return;
}
//减仓
If(d1>0 )
{
data0.BuyToCover(lotsj,data0.open);
data1.Sell(lotsj,data1.open);Return;
}
}
全部代码是这样,麻烦老师帮看看到底问题出在哪里?
老是显示这个,怎么回事呢?
我没加载有合约,只加载了公式,然后就运行了,可是就出现这个提示
估计是不是订阅数据的时候,没弄对。如果你本来加载了一个合约,再运行这个公式,可能会把RB2205加载到data1,RB2210加载到data2。您可以打开K线看下,另外看下RB2205做单方向是否反了?