老师好,我想在大周期出现Bar时重新计数。在历史K线上倒没发现问题,但在交易时段时,统计就会错误 ,不知道是哪里出了问题。
//------------------------------------------------------------------------
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Vars
Global Numeric iCount(0);
Defs
//此处添加公式函数
Events
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
SubscribeBar(SA888.CZCE,5s,20240610);//小周期
SubscribeBar(SA888.CZCE,10s,20240610);//大周期
SetInitCapital(200000000);
Range[0:DataCount-1]
{
//=========数据源相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
}
}
OnBarOpen(ArrayRef<Integer> indexs)
{
If (ArrayFind(indexs,0))//小周期
{
Range[0:0]
{
iCount = 1;
}
}
if (GetArraySize(indexs) == 1 ) iCount = iCount + 1;
if (ArrayFind(indexs,1))//大周期
{
Range[1:1]
{
//Commentary(icount = + text(icount));
}
}
Commentary(icount = + text(icount));
}
//------------------------------------------------------------------------
// 编译版本 2024/02/22 175831
// 版权所有 shuizhu777
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
建议你用quant3,我用quant3复现不出来你的问题,都是2
程序再简单一点。实时交易时,GetArraySize(indexs)一直等1
Params
Vars
Defs
//此处添加公式函数
Events
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
SubscribeBar(\"SA888.CZCE\",\"5s\",20240610);//小周期
SubscribeBar(\"SA888.CZCE\",\"10s\",20240610);//大周期
}
OnBarOpen(ArrayRef<Integer> indexs)
{
commentary(\"GetArraySize(indexs)=\" + text(GetArraySize(indexs)));
}