叠加数据后,函数取数据有问题,请问为什么? [开拓者 TB]
- 咨询内容:
Vars
Numeric volcon(0);
Begin
If(date>20150825)
{
PlotNumeric("bars",data1.barssincetoday);
PlotString("date",Text(data1.openD(0)));
}
End
// data0 为if000 data1 为沪深300 , PlotNumeric("bars",data1.barssincetoday); 这个命令用来取 沪深300 开盘到目前的bar数。但是测试出来的确实9:15开始的 股指的bar根数。
// PlotString("date",Text(data1.openD(0))); 这个本来想取 data1的 openD(0) 数据,但是 取出来的 也是data0 if000的数据,请问为什么? 使用错了吗?
- TB技术人员:
多数据源 操作,用到的函数 如果这样,那都不能用了,取不到data1 等后面的数据。请问用多个数据有什么需要注意的吗?
- TB客服:
//------------------------------------------------------------------------
// 简称: data1_OpenD
// 名称: data1的OpenD
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayOpen;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = data1.CurrentBar;
If(CBIndex == 0 || TrueDate(0)!=TrueDate(1))
{
barCnt = 1;
dayOpen = data1.Open;
}Else
{
barCnt = barCnt + 1;
}
If(daysAgo == 0)
{
return dayOpen;
}Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CBIndex )
Return InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayOpen[nIndex];
}
End
按照论坛里面的其他帖子提示, openD 跟 barssincetoday 函数,都无法通过测试。 说是 返回值类型 跟公式定义的返回值类型不符。
简称: data1_BarsSinceToday
// 名称: data1的bars sincetoday
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Vars
NumericSeries ReBars;
Begin
If(data1.CurrentBar == 0 || TrueDate(0)!=TrueDate(1))
{
ReBars = 0;
}Else
{
ReBars = ReBars + 1;
}
Return ReBars;
End
请问版主如何解决....
- 网友回复: 最好是 版主能把 修改好的 代码贴出来,学习一下。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容