代码如下:
MA60_HOUR:=STKINDI('','MA.MA1(60)',0,5,0);
HOUR_AA:=IF(MA60_HOUR<>REF(MA60_HOUR,1),1,0);
AA_HIGH:=HHV(HIGH,BARSLAST(HOUR_AA)),NOAXIS;
AA_LOW:=LLV(LOW,BARSLAST(HOUR_AA)),NOAXIS;
IF HOUR_AA THEN
BEGIN
HIGH_60:=HIGH;
LOW_60:=LOW;
END
IF HOUR_AA<>1 THEN
BEGIN
HIGH_60:=IF(AA_HIGH>HIGH_60,AA_HIGH,HIGH_60);
LOW_60:=IF(AA_LOW<LOW_60,AA_LOW,LOW_60);
END
这段的目的是,用在15分钟周期上,每次小时周期开始,到小时周期结束显示出这一小时中的最高价和最低价
但是实盘测试时候发现,不知道为什么HIGH_60、LOW_60这两个变量会闪烁,表现为:
如果当前这根15分钟周期K线没有创新高,那么HIGH_60就会随着最新价的变化在“这一小时的最高价”与“当前K线最高价”之间闪烁(如果创新高则不闪)
如果当前这根15分钟周期K线没有创新低,那么LOW_60就会随着最新价的变化在“这一小时的最低价”与“当前K线最低价”之间闪烁(如果创新低则不闪)
(好像HOUR_AA=1时不会闪,忘记了)
我想在小周期上时时稳定的得到小时最高低价,就这个问题,感谢帮助!
15分钟引用1小时的是会闪烁,需要向前一个周期引用
MA60_HOUR:=STKINDI('','MA.MA1(60)',0,5,-1);
[此贴子已经被作者于2016-9-2 13:01:09编辑过]
那如果我改成这样,是不是也可以呢:
原始:
MA60_HOUR:=STKINDI('','MA.MA1(60)',0,5,0);
HOUR_AA:=IF(MA60_HOUR<>REF(MA60_HOUR,1),1,0);
修改:
MA60_HOUR:=STKINDI('','MA.MA1(60)',0,5,0);
MA60_HOUR_REF:=VALUEWHEN(MA60_HOUR<>REF(MA60_HOUR,1),REF(MA60_HOUR,1));
HOUR_AA:=IF(MA60_HOUR_REF<>REF(MA60_HOUR_REF,1),1,0);
把时时引用的小时MA60用VALUEWHEN改为上一个小时的MA60
不行啊,我现在实盘看着,18:00这根15分钟线最高价是这根K线的不是一小时的
闪烁原因是HOUR_AA这个条件闪烁,无法正确判断当前K线是不是小时周期的第一根K线