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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助下面程序哪里有问题,为什么说else前缺少if

   

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


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

主题:[求助下面程序哪里有问题,为什么说else前缺少if

美女呀,离线,留言给我吧!
ppliu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
[求助下面程序哪里有问题,为什么说else前缺少if  发帖心情 Post By:2011/2/15 11:31:38    Post IP:116.227.131.89[只看该作者]

 IF(DATE<>REF(DATE,1)) THEN
 BEGIN
 DayOpen:=OPEN;
 PreDayRange:=PreDayHigh-PreDayLow;
 bRange:=OPEN*MinRange*0.01;
  if( PreDayRange<bRange) THEN  ( 该行提示标识符“if( PreDayRage<bRange) THEN “长度不能大于20个字符,当我将所有的PreDayRange改为PR时这个问题就解决了,请问这是怎么回事)
   PreDayRange:=bRange;
END
ELSE        (该行提示else前缺少if)
BEGIN
 DayOpen:=REF(DayOpen,1);
 PreDayRange:=REF(PreDayRage,1);
 blongStoped:=REF(blongStoped,1);
 bshortStoped:=REF(bshortStoped,1);
END

希望各位强人帮我解答一下,不胜感激!


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


加好友 发短信
等级:小飞侠 帖子:1882 积分:3310 威望:0 精华:15 注册:2010/3/15 13:11:56
  发帖心情 Post By:2011/2/15 11:54:11    Post IP:124.64.100.250[只看该作者]

predayhigh:=0;
predaylow:=0;
minrange:=0;
blongstoped:=0;
bshortstoped:=0;

if date<>ref(date,1) then begin
 dayopen:=open;
 predayrange:=predayhigh-predaylow;
 brange:=open*minrange*0.01;
 if predayrange<brange then
  predayrange:=brange;
end else begin
 dayopen:=ref(dayopen,1);
 predayrange:=ref(predayrange,1);
 blongstoped:=ref(blongstoped,1);
 bshortstoped:=ref(bshortstoped,1);
end

 


 回到顶部
美女呀,离线,留言给我吧!
ppliu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
  发帖心情 Post By:2011/2/15 14:20:13    Post IP:116.227.131.89[只看该作者]

是需要先给变量赋予初值的问题吗?


 回到顶部
美女呀,离线,留言给我吧!
ppliu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
  发帖心情 Post By:2011/2/15 14:29:54    Post IP:116.227.131.89[只看该作者]

还有我将您的程序进行测试,显示REF函数在逐周期模式下不能再IF控制语句内使用,但错误显示在dayopen:=ref(dayopen,1)行,这是何解呢?


 回到顶部
帅哥哟,离线,有人找我吗?
董小球
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 大哥
等级:超级版主 帖子:2837 积分:13237 威望:0 精华:2 注册:2010/7/14 17:31:54
  发帖心情 Post By:2011/2/15 14:44:32    Post IP:58.246.57.26[只看该作者]

把ref语句提到外面来用 写个中间变量 然后再把变量名放到IF里用



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
美女呀,离线,留言给我吧!
ppliu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
[求助]  发帖心情 Post By:2011/2/16 11:20:20    Post IP:116.227.134.36[只看该作者]

INPUT: PercentOfRange(0.3,0,1,0.1),MinRange(0.2,0,1.0.1),StopLossSet(0.5,0,1,0.1),
       TrailingStart(0.8,0,1,0.1),TrailingStop(0.5,0,1,0.1),
       ExitOnCloseMins(145000,140000,150000,100);
VARIABLE:blongStoped=false,bshortStoped=false,predayhigh:=0,predayrange=0,
         predaylow:=0, higherAfterEntry:=0,lowerAfterEntry:=0,myprice=0,dayopen=0;

 N1:=BARSLAST(DATE<>REF(DATE,1))+1;
 N2:=REF(N1,N1);
 PreDayHigh:=REF(HHV(HIGH,N2),N1);
 PreDayLow:=REF(LLV(LOW,N2),N1);

 if date<>ref(date,1) then begin
 dayopen:=open;  //dayopen取当天的开盘价//
 predayrange:=predayhigh-predaylow;
 brange:=open*minrange*0.01;
 if predayrange<brange then
  predayrange:=brange;
end  else begin
 dayopen:=ref(dayopen,1);
 predayrange:=ref(predayrange,1);
 blongstoped:=ref(blongstoped,1);
 bshortstoped:=ref(bshortstoped,1);

end

该程序显示ref函数在逐周期模式下不能再if控制语句中使用

但是把ref语句提到外面:

INPUT: PercentOfRange(0.3,0,1,0.1),MinRange(0.2,0,1.0.1),StopLossSet(0.5,0,1,0.1),
       TrailingStart(0.8,0,1,0.1),TrailingStop(0.5,0,1,0.1),
       ExitOnCloseMins(145000,140000,150000,100);
VARIABLE:blongStoped=false,bshortStoped=false,predayhigh:=0,predayrange=0,
         predaylow:=0, higherAfterEntry:=0,lowerAfterEntry:=0,myprice=0,dayopen=0,p1=0,b1=0,b2=0,h1=0,h2=0,l1=0,l2=0;
  N1:=BARSLAST(DATE<>REF(DATE,1))+1;
 N2:=REF(N1,N1);
 PreDayHigh:=REF(HHV(HIGH,N2),N1);
 PreDayLow:=REF(LLV(LOW,N2),N1);//跨周期取昨日的最高价与最低价//
 d1:=ref(dayopen,1);
 p1:=ref(predayrange,1);
 b1:=ref(blongstoped,1);
 b2:=ref(bshortstoped,1);
  if date<>ref(date,1) then begin
 dayopen:=open;  //dayopen取当天的开盘价//
 predayrange:=predayhigh-predaylow;
 brange:=open*minrange*0.01;
 if predayrange<brange then
  predayrange:=brange;
end  else begin
 dayopen:=d1;
 predayrange:=p1;
 blongstoped:=b1;
 bshortstoped:=b2;

end

测试正常,但调试dayopen等值都有问题,是怎么回事呢?

 


 回到顶部
美女呀,离线,留言给我吧!
ppliu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
  发帖心情 Post By:2011/2/16 11:22:55    Post IP:116.227.134.36[只看该作者]

麻烦您抽时间给我解答一下,新手上路,对金字塔语法运用还不是很熟练啊,感激万分!

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2011/2/16 12:39:52    Post IP:58.246.57.26[只看该作者]

请楼主仔细说明你上述公式到底遇到了什么问题?



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
美女呀,离线,留言给我吧!
ppliu
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:156 威望:0 精华:0 注册:2010/12/22 16:29:24
  发帖心情 Post By:2011/2/16 13:44:35    Post IP:116.227.134.36[只看该作者]

比如我本意是想让dayopen保存当日的开盘价,但是上程序运行后,dayopen不停的在两个值间变动,我这个程序用在一分钟线上!还有就是我觉得将ref函数用在if语句外面,可能得到的结果与我本意想得到的结果不符!
[此贴子已经被作者于2011-2-16 13:46:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fly
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2011/2/16 13:54:15    Post IP:58.246.57.26[只看该作者]

以下当日开盘价用于日线以下周期

dayopen:valuewhen(date<>ref(date,1),o);//当天开盘价

 

在外面,不影响的.

符合不符合,用这里面介绍的方法调试一下就知道了.

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1

[此贴子已经被作者于2011-2-16 14:13:33编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
总数 12 1 2 下一页