首页 > > 详细

帮做TB程序化公式、指标公式代做、TB新手不知道的那些事1:TB内建的用户函数只能取得data0的值-开拓者公式



咨询内容: 本帖最后由 慕容表哥 于 2012-12-13 17:22 编辑
TB新手不知道的那些事1:用户函数只能取得data0的值
变量a=data0.VolD;
变量b=data1.VolD;
你会发现b永远等于a,TB的用户函数只能默认取得data0的值,即使你前缀data1,2,3。。。也没有用
建议说明书注明这方面,当然更希望新版TB支持用户函数能取得data1,2,3的值

TB技术人员: 此类用户函数,可以看到函数代码,看一下代码里的计算方法 ,可以知道无论是否使用data1.xxx
其计算都是使用data0的值

TB客服:
小米 发表于 2012-12-12 17:08
此类用户函数,可以看到函数代码,看一下代码里的计算方法 ,可以知道无论是否使用data1.xxx
其计算都是使 ...
那是否修改原来函数的代码,加入data1的前缀,新建一个用户函数,就可以取得data1.xxx的值?

网友回复:
慕容表哥 发表于 2012-12-12 17:18
那是否修改原来函数的代码,加入data1的前缀,新建一个用户函数,就可以取得data1.xxx的值? ...
是的。
修改原函数代码里,对K线数据部分的内容用data1.xxx替换,其结果就如你所需了。

网友回复:
修改后的OpenIntD1和VolD1,分别可以取data1商品的n天前的持仓量和成交量
//------------------------------------------------------------------------
// 简称: OpenIntD1
// 名称: 求N天前的持仓量
// 类别: 用户函数
// 类型: 内建函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayOpenInt;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = data1.CurrentBar;
If(CBIndex == 0 || data1.Date != data1.Date[1])
{
barCnt = 1;
}Else
{
barCnt = barCnt + 1;
}
dayOpenInt = data1.OpenInt;

If(daysAgo == 0)
{
return dayOpenInt;
}Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];

}
If (j > CBIndex )
Return data1.InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayOpenInt[nIndex];
}
End
//------------------------------------------------------------------------
// 编译版本GS2010.12.08
// 版权所有TradeBlazer Software 2003-2010
// 更改声明TradeBlazer Software保留对TradeBlazer平
//台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: VolD1
// 名称: 求N天前的成交量1
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayVol;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = Data1.CurrentBar;
If(CBIndex == 0 || Data1.Date != Data1.Date[1])
{
barCnt = 1;
dayVol = data1.Vol;
}Else
{
barCnt = barCnt + 1;
dayVol = dayVol + data1.Vol;
}

If(daysAgo == 0)
{
return dayVol;
}Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];

}
If (j > CBIndex )
Return data1.InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayVol[nIndex];
}
End
//------------------------------------------------------------------------
// 编译版本GS2010.12.08
// 用户版本2012/12/13 10:56
// 版权所有cyqh007
// 更改声明TradeBlazer Software保留对TradeBlazer平台
//每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
 

联系我们 - QQ: 88652583
© 2014 www.93stock.com
代写选股公式网!
声明:警惕假冒分子冒充本站提供证券咨询服务,选股公式网为非证券咨询机构,本站不提供有关股评、投资分析报告、股市预测,证券咨询等服务。本站仅提供股票、期货、黄金、外汇的软件技术交流与分享。本站文章为互联网文章,其仅供参考,并不构成投资建议。