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: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容