TB软件逻辑操作的一点疑惑——请版主解释下 - TradeBlazer公式 [开拓者 TB]
作者:
开拓者 TB 来源:
cxh99.com 发布时间:2012年05月02日 点击数:
【
收藏到本网的会员中心】
- 咨询内容:
Params
Numeric shijian_3(1440);
Vars
Bool Condition_Buy_Kai_1(false);
Bool Condition_Buy_Kai_2(false);
Bool Condition_Sell_Ping(false);
Bool Buy_Kai_m(false);
Bool Buy_Kai_c(false);
Begin
Condition_Buy_Kai_1 =( (MarketPosition ==0) &&
(Close[1] >(OpenD(0)*1.02))
) ;
Buy_Kai_m = (MarketPosition ==0) ;
Buy_Kai_c = (Close[1] >(OpenD(0)*1.02)) ;
Condition_Buy_Kai_2 =(Buy_Kai_m &&Buy_Kai_c) ;
// 在1分钟周期的K线上,若当时的Close[1]超过当天的开盘价OpenD(0) 的2%,就开仓。
// 上面的两种表达式 Condition_Buy_Kai_1 与 Condition_Buy_Kai_2 完全等价吗?
if (Condition_Buy_Kai_1)
{
Buy(1,Open);
}
Condition_Sell_Ping =(BarsSinceEntry>=shijian_3 );
if (Condition_Sell_Ping)
{
Sell(1,Close);
}
End
//上面的公式程序,用于历史数据测试。将Condition_Buy_Kai_2 替换Condition_Buy_Kai_1 作为开仓条件,
//测试结果完全不同,不知什么原因?
- TB技术人员:
不完全等价,如果用到逻辑判断符表达式中含有序列函数(比如openD这类),TB会发生莫名的逻辑错误。
我在实际编写时也遇到此类问题,TB方面没有官方的解释,目前强调的是自主规避。
比如你写个表达式TEMP=openD(……),然后将TEMP代入表达式再行运算就行了。
- TB客服:
谢谢cexia回复。 前段时间就觉得有问题,直到节后上班才联系上TB的客户人员,客户人员让发到论坛上,说有人处理。咱就把这论坛当“圣地”一样朝拜,发了两次帖子,也没见TB官方任何回应。实在无语。。。。。 想想还有如此的陷阱,难免让人背脊发凉。。。。。。