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

奇怪的问题,非常重要,请求帮忙! [开拓者 TB]

  • 咨询内容: 编写目的:
    当一根K线走完时,我要利用这根刚走完的K线数据计算压力或支撑位,这个计算过程比较复杂,比较消耗计算资源,所以我想在最新一条K线产生的瞬间也就是它的第一个TICK数据发来时只需计算一次,就可把计算结果存入CR1中,而不想每发一个TICK,就重复计算,这样毫无必要,因为本来用不着这根没走完的K线数据。如果不限制这个条件,则每来一个TICK都必须重复计算,大大的浪费了宝贵的计算时间。
    本结果在历史数据中准确,但新产生K线时,CR1的计算结果存不进序列CR1中。

    测试源码如下:
    Vars
      Numeric MinPoint(0);  //1跳的距离
      Numeric Tmptime(0);   // 全局变量0的值  用于新一条K线产品时记录时间
      NumericSeries CR1(0);

    Begin
      
      MinPoint=MinMove * PriceScale;  //1跳的距离
      tmptime=GetGlobalVar(0); //获取记录的最新时间值
      If(tmptime==InvalidNumeric)
      {
              tmptime=Time;
              SetGlobalVar(0,tmptime);
      }
      
              //当一条新K线产生时
            If(tmptime<>Time)
            {
              tmptime=Time;
              SetGlobalVar(0,tmptime);
              CR1=CurrentBar;
            }
      
            PlotString("T1",Text(CR1),H+2*MinPoint,Red);
      
    End

    测试结果:


     

  • TB技术人员:

     

  • TB客服: 20160121141305.png (3.52 KB, 下载次数: 1) 2016-1-21 14:27:39 上传 下载次数: 1

     

  • 网友回复: 以上为测试结果,只有历史K线的结果是对的,新产生的K线对应的CR1值总不变,真奇怪!

     

  • 网友回复:
    thc526119163 发表于 2016-1-21 14:30
    以上为测试结果,只有历史K线的结果是对的,新产生的K线对应的CR1值总不变,真奇怪! ...


    我觉得原因应该是CR1=CurrentBar这一句只有在新K线产生的第一个Tick会执行,这样后面来的Tick运行公式时,CR1因为是序列变量,因此会传递上一根BAR的值,所以就一直不变。而历史BAR,因为执行1次,所以不影响。

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容