以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]Heikin Ashi烛图 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=53823) |
-- 作者:cool2000 -- 发布时间:2013/7/10 15:48:07 -- [求助]Heikin Ashi烛图 有关heikin ashi烛图,请问如下代码: HaClose:=(Open+High+Low+Close)/4; IF BARSTATUS=1 THEN haOpen:=OPEN; ELSE haOpen:=(REF(haOpen,1)+REF(HaClose,1))/2 ; HaHigh:=Max(High,Max(haOpen,HaClose)); HaLow:=Min(Low,Min(haOpen,HaClose)); kline(haOpen,HaHigh,HaLow,HaClose,1); 在金字塔里编译可以通过,但是显示不正常。应该如何修改,谢谢
|
-- 作者:王锋 -- 发布时间:2013/7/10 16:12:22 -- 别人看你的代码是不知道你心理想什么需要什么的,你把你要想实现的逻辑原理也说一下 |
-- 作者:cool2000 -- 发布时间:2013/7/10 17:07:13 -- 关键点在于: 如果是第一根k线,则HaOpen等于第一根k线的open价,若不是第一根k线,则HaOpen等于前一根HaOpen价的一半加上HaClose价的一半,这里有一个递归调用的问题。 若是第一根K线: HaOpen:=Open 若不是第一根k线: HaOpen:=(REF(haOpen,1)+REF(HaClose,1))/2 ; 这就是要实现的想法,但是图显示不正常,不知道上面的代码到底对不对。
|
-- 作者:王锋 -- 发布时间:2013/7/10 17:16:49 -- 你的问题在于你用了序列模式,应该要用逐K线模式你的思路才能得到正确执行。
HaClose:=(Open+High+Low+Close)/4; 上面是帮你改好的代码
建议你仔细看看 深度理解金字塔公式系统的工作机理 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=29594
里面有这2种运行模式的不同的描述 |
-- 作者:王锋 -- 发布时间:2013/7/10 17:21:16 -- 代码又重新改了一下
HaClose:=(Open+High+Low+Close)/4; IF BARSTATUS=1 THEN 由于REF不能在逐K线模式在IF语句中,可以使用数组的方式解决,这样改的代码就根你之前的逻辑一样了 |
-- 作者:cool2000 -- 发布时间:2013/7/10 17:33:43 -- 多谢,让我再消化理解一下。 |
-- 作者:cool2000 -- 发布时间:2013/7/10 17:54:29 -- haOpen:=(haOpen[barpos-1]+HaClose[barpos-1])/2 ; 这行发生数组越界操作错误, 编译通过,显示图形时发生数组越界操作错误
|
-- 作者:王锋 -- 发布时间:2013/7/10 18:27:43 -- 我这里可以通过的,你估计是把代码改了吧。
金字塔的数组是从1开始的,如果你在代码的第一跟K线上就运行到数组这一行语句是肯定要越界的 |
-- 作者:cool2000 -- 发布时间:2013/7/10 21:31:51 -- 代码没改,从5楼拷贝的,直接粘贴到公式编辑区,我的版本是2.9961,编译通过,加载到副图界面, |
-- 作者:cool2000 -- 发布时间:2013/7/10 21:37:20 -- [原创]和昨天相比今天增加或减少的合约 |