为什么HighD(1)值在日线bar和1分钟bar上的结果不一样
以日线为单位的bar返回值是对的,但是以1分钟为单位的bar返回值不对,HighD(1)不管应用在什么bar上应该都是表示头一天的最高值吧? 看一下1分钟图表里商品设置的K线数有多少?是否包含一天前的全部K线数据? @小米,样本肯定是足够的,一个月的样本,分析的中间时间段。还发现一个问题,1分钟bar,白天的HighD(1)和晚上21点后的HighD(1)也不一样。商品是螺纹钢连续。 Yvan0617 发表于 2017-12-15 12:38 static/image/common/back.gif@小米,样本肯定是足够的,一个月的样本,分析的中间时间段。还发现一个问题,1分钟bar,白天的HighD(1)和 ...
代码怎么写的?其运算有没有上层条件的限制 ? 测试程序如下,我用的是rb888,早上9点的1分钟bar测试,两次打印结果不一样
Params
Vars
Numeric i;
Numeric StartTime; //开盘时间
Numeric StartTimeH; //开盘时间小时
Numeric StartTimeM; //开盘时间分钟
Begin
Commentary("第一次:HighD(1)="+Text(HighD(1))+" CloseD(1)="+Text(CloseD(1)));
StartTime = GetSessionStartTime(0);
For i = 1 To GetSessionCount() - 1
{
if(StartTime > GetSessionStartTime(i))
{
StartTime = GetSessionStartTime(i);
}
}
StartTimeH = HourFromDateTime(StartTime);
StartTimeM = MinuteFromDateTime(StartTime);
if(Hour()==StartTimeH&&Minute()==StartTimeM)
{
SetGlobalVar2("IsCloseTime",0);
}
if(GetGlobalVar2("IsCloseTime")==1) return;
Commentary("第二次:HighD(1)="+Text(HighD(1))+" CloseD(1)="+Text(CloseD(1)));
SetGlobalVar2("IsCloseTime",1);
End @小米,有什么结论了么? Yvan0617 发表于 2017-12-19 01:49 static/image/common/back.gif
@小米,有什么结论了么?
5#的代码里,第二次打印前有一个return啊。。。
序列函数的赋值 运算前加了条件或是有return是可能导致序列取值不完整,从而影响计算结果的。。
你将return去掉再看看打印结果。。
或者声明几个中间变量,在公式前段将highD(1),closeD(1)等赋值给中间变量后,再到不同的条件下打印这些中间变量即可。 @小米,不是很明白
1、就算return语句不被执行,只要出现了“return”这调命令,后面的所有序列运算可能出错?
2、如果上面一条成立,那程序里面就不能出现return语句了。如果要达到在某种条件下程序不往下走,还有其他简单办法么?
3、“序列函数的赋值 运算前加了条件可能导致序列取值不完整”,这句话不是很明白,难道if(){}的大括号里面不能出现序列值的读取?能否举例说明一下
页:
[1]