现在的问题我描述一下,目前我订阅是在ONINIT里面订阅10个期权合约,OnReady里面去取数据,然后ReStart再返回到oninit里面做一个判断,退订10个合约,然后再判断应该定哪一个合约,然后每天晚上开盘之前登录账户的时候ReStart重启工作区。因为晚上是同时重启工作区的情况下,200个订阅是不太够的,但是真实的情况下我不需要晚上重启那一瞬间的订阅量。
现在有几个问题,
第一,在OnAccountStatus(AccountStatusRef antStatus) 这个域能否设置分时间段重启(以代码的方式),比如20.45-20.48为一个时间段,20.48-20.50为一个时间段,以此类推。
第二,OnAccountStatus(AccountStatusRef antStatus) 这个域能否区别日盘和夜盘。
第三,如果上面两种都没法,那有没有更好的方式能减少那一瞬间的订阅量。
”然后再判断应该定哪一个合约“,需要什么数据来判断选哪个合约呢,必须要用到价格数据吗,从这个维度是不是缩减一下订阅。
肯定是以期权价格为第一判断标准的。但是最开始订阅10个期权这里是没法缩减的。
直接买订阅 简单粗暴
这个只是最后的办法
学习了
1 自己代码控制啊 登录的时候 启动定时器 根据你设置的时间切片(比如45分重启,集合竞价是到49分 可以切2个 定时间间隔一个是60*1000 ,一个是60*1000*2)
2 可以 用TrueDate(0)对比 可以区别日盘还是夜盘
1 自己代码控制啊 登录的时候 启动定时器 根据你设置的时间切片(比如48分重启,集合竞价是到59分 可以切2个 定时间间隔一个是立即,一个是60*1000*5)
2 可以 用TrueDate(0)对比 可以区别日盘还是夜盘
这个域里面能用TrueDate(0)判断是日盘品种还是夜盘品种吗?日盘的话,我就写成早上8.45左右启动,夜盘还是写成晚上20.45左右启动,这样是否可行?
那就重启的时候,判断系统时间,>18:30 & <20:59就是夜盘
OnAccountStatus(AccountStatusRef antStatus) ////////////每天收盘且没有持仓重启工作区//////////////////
{
If(antStatus.status == "Logined"
&&SystemDateTime > CurrentDate + 0.2045
&&SystemDateTime < CurrentDate + 0.2054
)
{
id1 = CreateTimer(1, 0, 1);
}
}
OnTimer(Integer id,Integer millsecs)
{
If(id1>0)
{
if(str1[1]=="SHFE")
{
id2= CreateTimer(60*1000, 0, 1);
}
Else IF(str1[1]=="DCE")
{
id2= CreateTimer(60*1000*2, 0, 1);
}
Else IF(str1[1]=="CZCE")
{
id2= CreateTimer(60*1000*3, 0, 1);
}
Else IF(str1[1]=="CFFEX")
{
id2= CreateTimer(60*1000*4, 0, 1);
}
Else IF(str1[1]=="INE")
{
id2= CreateTimer(60*1000*5, 0, 1);
}
}
If(id2>0)
{
StopTimer(id1);
StopTimer(id2);
ReStart(False);
}
}
您看一下这样是否能重启,且同时减少同时间订阅量呢