欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 函数不能在IF THEN FOR循环控制语句中被引用的原理和解决方案

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有41050人关注过本帖树形打印复制链接

主题:函数不能在IF THEN FOR循环控制语句中被引用的原理和解决方案

帅哥哟,离线,有人找我吗?
勇敢的心
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 11:35:01    Post IP:180.169.94.178[显示全部帖子]

您好,按照以上提供的方法,解决IF循环语句中不能实用HHV的问题,

H1:=HHV(H,ENTERBARS);
LONGX1.1 := (H1-AVGENTERPRICE <3*R  AND H1-AVGENTERPRICE ≥2*R);
IF LONGX1.1 AND BUYORDERTHISBAR=0 THEN BEGIN
   MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
MYEXITPRICE := MYENTRYPRICE+1.4*R ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END)

但解决后,还是显示HHV在逐K线模式下,不能直接在IF控制语句之内引用。
谢谢。
 

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 13:26:55    Post IP:180.169.94.178[显示全部帖子]

//建立多头离场条件1.1(盈利2R,防止30%利润回吐)***********

LONGX1.1 := ( HHV(H,ENTERBARS) -AVGENTERPRICE <3*R  AND  HHV(H,ENTERBARS) -AVGENTERPRICE ≥2*R);
IF LONGX1.1 AND BUYORDERTHISBAR=0 THEN BEGIN
   MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
MYEXITPRICE := MYENTRYPRICE+1.4*R ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
之前写成画线部分,提示HHV在逐K线模式下,不能直接在IF控制语句之内引用,然后,将HHV(H,ENTERBARS),按照论坛上的解决方案,写成
                                H1:=HHV(H,ENTERBARS);


LONGX1.1 := (H1-AVGENTERPRICE <3*R  AND H1-AVGENTERPRICE ≥2*R);


IF LONGX1.1 AND BUYORDERTHISBAR=0 THEN BEGIN
还是提示HHV在逐K线模式下,不能直接在IF控制语句之内引用,请问题正确的应该怎么写,非常感谢。

                              

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 13:48:22    Post IP:180.169.94.178[显示全部帖子]

//建立多头离场条件1.1(盈利2R,防止30%利润回吐)***********
H1:=HHV(H,ENTERBARS);
LONGX1.1 := (H1-AVGENTERPRICE <3*R  AND H1-AVGENTERPRICE ≥2*R);
IF LONGX1.1 AND BUYORDERTHISBAR=0 THEN BEGIN
        MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
MYEXITPRICE := MYENTRYPRICE+1.4*R ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END

这是完整的代码,您看一下,问题在哪里,怎么解决,谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 13:52:47    Post IP:180.169.94.178[显示全部帖子]

AVGTR :=  REF(MA(TR,ATRLEN),1) ;
R := 2*AVGTR;
应该是2R里面的R含有REF造成的。我在改一下试试。

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 14:04:33    Post IP:180.169.94.178[显示全部帖子]

还是不行,
 
//建立多头离场条件1.1(盈利2R,防止30%利润回吐)***********
H1:=HHV(H,ENTERBARS);
                                                
                                                AVGTR :=  REF(MA(TR,ATRLEN),1) ;
                                                R := 2*AVGTR;
 
LONGX1.1 := (H1-AVGENTERPRICE <3*R  AND H1-AVGENTERPRICE ≥2*R);
IF LONGX1.1 AND BUYORDERTHISBAR=0 THEN BEGIN
        MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
MYEXITPRICE := MYENTRYPRICE+1.4*R ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END

这是完整的代码,您看一下,问题在哪里,怎么解决,谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/4 15:30:37    Post IP:180.169.94.178[显示全部帖子]

嗯,单独拿出来测试没问题,但为什么放在策略里,就有问题了哪,仔细检查了没有IF THEN 后面有ref hhv llv等之类的函数赋值 ,请赐教,非常感谢。

 回到顶部
帅哥哟,离线,有人找我吗?
勇敢的心
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:134 积分:5 威望:0 精华:0 注册:2013/3/8 21:51:20
  发帖心情 Post By:2013/11/5 9:07:31    Post IP:180.169.94.178[显示全部帖子]

嗯,是的,已经解决,谢谢。

 回到顶部