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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]Heikin Ashi烛图

   

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


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

主题:[求助]Heikin Ashi烛图

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/7/10 16:12:22    Post IP:116.226.232.180[显示全部帖子]

别人看你的代码是不知道你心理想什么需要什么的,你把你要想实现的逻辑原理也说一下


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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/7/10 17:16:49    Post IP:116.226.232.180[显示全部帖子]

你的问题在于你用了序列模式,应该要用逐K线模式你的思路才能得到正确执行。

 

HaClose:=(Open+High+Low+Close)/4;
haOpen:=OPEN;
Opentmp:=REF(haOpen,1)+REF(HaClose,1);
IF BARSTATUS=1 THEN
begin
haOpen:=OPEN;
end
ELSE
begin
haOpen:=Opentmp/2 ;
HaHigh:=Max(High,Max(haOpen,HaClose));
HaLow:=Min(Low,Min(haOpen,HaClose));
end
kline(haOpen,HaHigh,HaLow,HaClose,1);

上面是帮你改好的代码

 

建议你仔细看看

深度理解金字塔公式系统的工作机理

http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=29594

 

里面有这2种运行模式的不同的描述



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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/7/10 17:21:16    Post IP:116.226.232.180[显示全部帖子]

代码又重新改了一下

 

HaClose:=(Open+High+Low+Close)/4;

IF BARSTATUS=1 THEN
begin
haOpen:=OPEN;
end
ELSE
begin
haOpen:=(haOpen[barpos-1]+HaClose[barpos-1])/2 ;
HaHigh:=Max(High,Max(haOpen,HaClose));
HaLow:=Min(Low,Min(haOpen,HaClose));
end
kline(haOpen,HaHigh,HaLow,HaClose,1);

由于REF不能在逐K线模式在IF语句中,可以使用数组的方式解决,这样改的代码就根你之前的逻辑一样了



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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/7/10 18:27:43    Post IP:116.226.233.39[显示全部帖子]

我这里可以通过的,你估计是把代码改了吧。

 

金字塔的数组是从1开始的,如果你在代码的第一跟K线上就运行到数组这一行语句是肯定要越界的



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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/7/10 21:51:39    Post IP:116.226.232.180[显示全部帖子]

我前面的例子代码已经告诉你了,要在逐K线模式下运行代码,你没仔细看吗?


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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部