您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

一个逻辑与的奇怪问题 - TradeBlazer公式 [开拓者 TB]

  • 咨询内容: 我在编上吊线函数时发现一个奇诡的问题:
    如果我有两个条件:
    myCon4 = (High[1]>=HighestFC(Close[1],5));
    myCon5 = (Close[1]>=AverageFC(Close[1],5));
    if (myCon4) Commentary("myCon4"); //检测条件是否满足
    if (myCon5) Commentary("myCon5");
    以上程序是正常的,但我将这两个条件合起来时,就不正常了,增加两条语句:
    myCon6 = (High[1]>=HighestFC(Close[1],5)) && (Close[1]>=AverageFC(Close[1],5));
    if (myCon6) Commentary("myCon6");
    结果在满足K线形态的地方,只显示myCon4和myCon5,而不显示myCon6
    这是为什么?我感觉是与序列数值类型有关,请管理员解释一下。
    谢谢!

     

  • TB技术人员: 优化的上吊线函数代码如下,供朋友们共同学习提高。
    1. //------------------------------------------------------------------------
    2. // 简称: mySDX
    3. // 名称: 上吊线
    4. // 类别: 用户函数
    5. // 类型: 顶部反转
    6. // 输出: 布尔型
    7. //------------------------------------------------------------------------
    8. // 实体处于K线上端,实体的颜色无所谓
    9. // 下影线至少达到实体高度的2倍
    10. // 没有上影线或上影线极短
    11. // 在趋势的顶部,且当前K线正在得到验证
    12. Params
    13.                 Numeric myBars(5); //顶部趋势至少保持5Bar
    14.         Numeric myBar0(8); //缺省的Bar振幅至少有8个点
    15. Vars
    16.         Numeric        myBar30; //30个周期的平均Bar振幅
    17.         Numeric myBar1; //Bar[1]的振幅
    18.         Numeric myIndex(1);
    19.         Bool myCon1;
    20.         Bool myCon2;
    21.         Bool myCon3;
    22.         Bool myCon4;
    23.         Bool myCon5;
    24.         Bool myCon6;
    25.        
    26. Begin
    27.         myBar30 = AverageFC(High[1]-Low[1],30); //30个周期的振幅
    28.         If (myBar30<myBar0) myBar30=myBar0;                //如果振幅太小则设置最小值
    29.         myBar1 = High[1]-Low[1];
    30.         myCon1 = myBar1>=myBar30;
    31.         myCon2 = (High[1] - Min(Open[1],Close[1]))/myBar1 <=0.4; //实体在K线的上部
    32.         myCon2 = myCon2 or (Max(Open[1],Close[1])-Low[1])/myBar1<=0.4; //或实体在K线的下部
    33.         myCon3 = Abs(Open[1]-Close[1])/(myBar1) <=0.4; //实体小于K线的2/5,即下影线或上影线较长
    34.         myCon4 = (High[1]>=HighestFC(Close[1],5));  //处于近期顶部
    35.         myCon5 = (Close[1]>=AverageFC(Close[1],5)); //处于近期顶部
    36.         myCon6 = (High[1]-Low)/myBar1 >=0.5; //确认下跌
    37.         If (myCon1 && myCon2 && myCon3 && myCon4 && myCon5 && myCon6)
    38.         {
    39.                 //FileAppend("c:\\test0.Log",Text(CurrentBar)+" "+DateToString(CurrentDate)+" "+TimeToString(CurrentTime));
    40.                 PlotString("SDX","上吊线",High[1]+2,-1,1);
    41.                 Return True;
    42.         }
    43.         Return False;
    44. End

    45. //------------------------------------------------------------------------
    46. // 编译版本        GS2010.12.08
    47. // 用户版本        2011/10/10 08:15
    48. // 版权所有        efrogking
    49. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
    50. //                        每一版本的TrabeBlazer公式修改和重写的权利
    51. //------------------------------------------------------------------------
    复制代码

     

  • TB客服: 难道跟if不能用HighestFC之类是一个道理?

     

  • 网友回复: 回复 1# efrog


        学习来了

     

  • 网友回复: 谢谢楼主分享模板

【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容