📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    TradeBlazer公式中有三种类型的数据回溯:变量回溯、参数回溯和函数回溯

    2013-07-16 · 4836 阅读
    数据回溯
    TradeBlazer公式中有三种类型的数据回溯:变量回溯参数回溯函数回溯
    变量回溯TradeBlazer公式共支持九种数据类型,但对于变量定义,引用类型是无效的,剩余六种数据类型中分为简单和序列两大类,简单类型变量是单个的值,不能对其进行回溯,序列类型变量是和Bar长度一致的数据排列,我们可以通过回溯来获取当前Bar以前的任意值。
    要使用变量回溯,需要在变量的后面,使用中括号"[nOffset]"nOffset是要回溯引用的Bar相对于当前Bar的偏移值,该值必须大于等于0,当nOffset = 0时,即为获取当前Bar的变量值。
    例如,我们定义如下技术指标
    Vars    NumericSeries MyVal;Begin    MyVal = Average(Close,10);     PlotNumeric("MyVal",MyVal[3]);End
    以上公式定义数值型序列变量MyValMyVal等于收盘价的10个周期的平均值,然后将序列变量MyVal的前3Bar数据输出。
    以上公式MyVal的前9个数据因为需要计算的Bar数据不足,返回无效值,从第10Bar开始,MyVal获取到正确的平均值,但是我们需要输出的数据是MyVal[3],即前3Bar的数据,因此,直到第12Bar,有效的数据才会被输出。以上公式的12是该公式需要的最少引用周期数,如果将输出信息画到超级图表中,前11Bar是没有图形显示的。
    nOffset>CurrentBar或者nOffset<0时,对于变量的回溯都将越界,这种情况下,将返回无效值。
    参数回溯TradeBlazer公式支持的九种基本类型,在用户函数的参数定义中全部支持,在其他的公式中参数定义只支持三种简单类型。因此,关于参数的回溯问题,只对用户函数有效,以下我们举例说明用户函数序列参数的使用。
    要使用参数回溯,需要在参数的后面,使用中括号"[nOffset]"nOffset是要回溯引用的Bar相对于当前Bar的偏移值,该值必须大于等于0,当nOffset = 0时,即为获取当前Bar的参数值。
    例如,我们定义一个用户函数MyFunc,脚本如下:
    Params    NumericSeries   Price(0);    Numeric         Length(10);Vars    Numeric         MyAvg;    Numeric         MyDeviation;Begin    MyAvg = Summation(Price,Length)/Length;    MyDeviation = MyAvg - Price[Length];    Return MyDeviation;End
    以上的例子,对输入的Price我们求其10个周期的平均值,然后求出该平均值和Price的前LengthBar的值之间的差值,将其返回。对于Price[Length]这样的参数回溯引用,其实现原理和上节所描述的变量回溯引用基本一致。
    函数回溯函数回溯分为系统函数的回溯和用户函数的回溯。
    系统函数中回溯的使用主要是针对Bar数据。比如我们需要获取上2Bar的收盘价,脚本为Close[2];又或者我们需要获取10Bar前的成交量,脚本为Vol[10]。对于Bar数据的回溯是系统函数中最常用的,虽然也可以对行情数据和交易数据等进行回溯,但是大部分并无实质的意义,返回的结果和不回溯是一样的,因此,不推荐如此使用。
    要对函数回溯引用,我们可以通过在函数名称后面添加"[nOffset]"获取其回溯值,nOffset是要回溯引用的Bar相对于当前Bar的偏移值,该值必须大于等于0,当nOffset = 0时,即为获取当前Bar的参数值。
    带有参数的函数回溯,需要将"[nOffset]"放到参数之后,另外,无参数和使用默认参数的情况下,函数调用的括号可以省略。例如:Close[2]等同于Close()[2]
    用户函数的回溯和系统函数原理基本一致,但考虑到系统的执行速度和效率等因素,目前,TradeBlazer公式不支持对用户函数的回溯,如果您想要获取用户函数的回溯值,建议您将函数返回值赋值给一个序列变量,通过对序列变量的回溯来达到相同的目的。
    如下面的脚本所示,取Close10Bar平均值的4个周期前的回溯值:
    Vars    NumericSeries AvgValue;    Numeric       TmpValue;Begin        AvgValue = Average(Close,10);    TmpValue = AvgValue[4]    ...End
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 5 个

    榀味, LV3

    发表于 2015-3-2 18:27:32 | 显示全部楼层

    下了  的确不错

    wef520 LV3

    发表于 2015-3-2 18:43:52 | 显示全部楼层

    [s:142]

    fcdxf LV3

    发表于 2015-3-14 01:34:09 | 显示全部楼层

    围观中~~~

    pen LV2

    发表于 2015-3-16 22:32:44 | 显示全部楼层

    nice!!!!!!!!!!!!

    ggjeo LV3

    发表于 2015-3-16 23:50:45 | 显示全部楼层

    谢谢分享!!!!!
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服