看了一些关于图表交易,A函数,信号闪烁的视频后动手测试了下,运行环境为实时行情,图表交易模式下打开了自动交易,绑定了TB期货模拟账号
第一次测试, 代码如下:
Vars
Global Integer canBuy(0); //故意使用Global,确保整个运行期间只下单一次
Events
OnInit()
{
PrintClear();
}
OnBar(ArrayRef<Integer> indexs)
{
if(QuoteStatus == Enum_QuoteStatus_RealTime and BarStatus == 2)
{
Print(Text(canBuy));
if(canBuy <> 1)
{
Buy(1,High); //最初买入价参数用的是0, 后看到成交价=0为了排除,改为High
canBuy = 1;
Print(Text(canBuy));
}
Print("-------------------------");
}
}
预期结果:
1. 可能会提示信号闪烁
2. 模拟账号会下单成功
实际结果:(参看下图)
1. 确实提示了信号闪烁,图表上也没有标注交易成功的箭头
2. 绑定的模拟账号下单成功了,但是成交价为0 ,申报失败
第二次测试,修改了下单条件,连续下单3次,每次买入一手, 代码如下:
Vars
Global Integer canBuy(0);
Events
OnInit()
{
PrintClear();
}
OnBar(ArrayRef<Integer> indexs)
{
if(QuoteStatus == Enum_QuoteStatus_RealTime and BarStatus == 2)
{
Print(Text(canBuy));
if(canBuy < 3)
{
Buy(1, High);
canBuy = canBuy + 1;
Print(Text(canBuy));
}
Print("-------------------------");
}
}
预期结果:
1. 提示信号闪烁,Bar Close时可能会在图表上标记
2. 绑定账号在同一根Bar上只下单一次
实际额结果:
1. 提示了信号闪烁,但没有在图表上标记
2. 只下单了一次,但是申报失败,成交价=0
我的问题:
#1 使用Buy的时候,内部判断信号闪烁的标准是什么,是否需要条件信号连续几个tick都持续存在?
#2 为什么绑定的账号会出现成交价=0的情况?
1 信号闪烁的判断标准就是,当信号出现以后,当前bar后续所有tick驱动,这个信号都必须保证出现,并且手数和价格参数不能改变。否则就会发出信号闪烁警报。
2 成交价为0不是很正常吗?成交不了所以显示为0,不然应该显示什么?未成交单不是应该看委托价吗?
明白了,谢谢了