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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于MACD的判断公式如何编写

   

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


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

主题:关于MACD的判断公式如何编写

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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/14 13:33:33    Post IP:222.78.34.223[只看该作者]

根据21楼fly给出的底背离的代码,我想添加顶背离的代码。单单fly给出的底背离代码正常,但是把顶背离代码和底背离代码放在一起,确只显示顶背离的信号,不知道该怎么修改??红色字体部分是添加顶背离部分

variable:bsum=0; //bsum 红柱总和
variable:blong=0; //blong最长红柱
variable:bhigh=0;  //bhigh红柱区域最高价

 


bnum:=barslast(ref(macd<0,1) and macd>0);//绿转红
gnum:=barslast(ref(macd>0,1) and macd<0);//红转绿

if ref(macd,1)<0 and macd>0 then 
begin
 bsum:=0;    //红柱开始,清0
 blong:=0;    //红柱开始,清0
 bhigh:=high;  //红柱开始,初始化
end

if macd>0 then 
begin
 bsum:=bsum+macd;                                    //累加
 if abs(macd)>abs(blong) then blong:=macd;//如果红柱更长,则记录
 if high>bhigh then bhigh:=high;                         //如果价格更高,则记录
end
 
numb:=max(gnum,bnum)+1;//77777
con4:=abs(bsum)<abs(ref(bsum,numb));//面积小于前一波--面积没创新高
con5:=abs(blong)<abs(ref(blong,numb));//柱子长度小于前一波----长度没创新高
con6:=bhigh>ref(bhigh,numb);//价格大于前一波-----价格创新高
//当红柱开始收缩时(牛市即将结束,可能反转向下(或高位盘整)),如果出现顶背离,则少量建仓
if all(macd>0,3) and ref(macd,1)>macd and ref(macd,1)>ref(macd,2) then
begin
 if con4 and con5 and con6  then  buyshort(1 and holding=0,1,market);//顶背离,面积没创新低,长度没创新低,价格创新低
end

//红柱消失、绿柱开始放出时(上涨行情(或高位盘整)已经结束),如果出现顶背离,则加仓
if ref(macd>0,1) and macd<0 then
begin
    if con4 and con5 and con6  then 加空:buyshort(1,1,market);//顶背离,面积没创新高,长度没创新高,价格创新高
end


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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/14 14:42:33    Post IP:222.78.34.223[只看该作者]

以下是引用c100011235在2016/6/1 17:09:27的发言:
 gnum:=barslast(ref(macd>0,1) and macd<0);//红转绿
 bnum:=barslast(ref(macd<0,1) and macd>0);//绿转红 
 
numb:=max(gnum,bnum)+1; 

这三句代码中,第一句是这个周期的上一周期MACD大于零但这个周期小于零到本周期的周期数,就是上个死叉到现在的周期数。第二句是这个周期的上一周期MACD小于零但这个周期大于零到本周期的周期数,就是上个金叉到现在的周期数。这都好理解。
但最后一句话,让我比较两者大小后取最大值,想半天也不明白。
打下比方。如果现在是绿柱状态,那么肯定是上次的死叉远,那么从上次死叉开始计数没问题。
但如果现在是红柱状态,就是代码里的第二种情况"当绿柱消失,红柱开始放出“这种情况,肯定是上次的金叉比较远,这样的话,就变成了从上次的金叉开始计数了,这不对吧
请百忙中抽空解答一下,谢谢





不知道是不是因为这三句代码有关????


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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/14 15:56:18    Post IP:222.78.34.223[只看该作者]

就是根据21楼fly给出的底背离编写思路,编写出的顶背离。然后将底背离和顶背离放在一起,出现了上述问题。

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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/15 9:46:55    Post IP:222.78.34.223[只看该作者]

重新看了代码,唯一不理解的是
numb:=max(gnum,bnum)+1;
按照fly的思路添加的顶背离代码中,这句没有修改。
不知道是不是因为这句代码,才会这样:只判断出顶背离的情况,而没有底背离的情况。


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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/15 14:49:51    Post IP:222.78.34.223[只看该作者]

麻烦老师们解答

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2017/6/15 16:08:54    Post IP:180.169.30.6[只看该作者]

由于工作量比较巨大,这个需工作人员有比较空闲时间才能帮您看,还请理解,谢谢

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


加好友 发短信
等级:论坛游侠 帖子:274 积分:0 威望:0 精华:0 注册:2015/7/5 14:46:18
  发帖心情 Post By:2017/6/19 13:35:47    Post IP:222.78.34.223[只看该作者]

重新看了代码,加入平仓语句就正常了。

 回到顶部
帅哥哟,离线,有人找我吗?
新华字典1949
  48楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2017/5/25 16:51:06
  发帖心情 Post By:2017/6/26 11:23:14    Post IP:60.191.66.218[只看该作者]

看了整整一下午,想来想去想不通。我也请教这个问题:

重新看了代码,唯一不理解的是
numb:=max(gnum,bnum)+1;


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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/6/26 13:18:57    Post IP:180.169.30.6[只看该作者]

numb:=max(gnum,bnum)+1;//求上次红柱或者绿柱结束的位置,(根据当前位置是的macd正负值决定。正值就是上次红柱接触,负值就是绿柱)


编程无捷径,技巧靠积累。
 回到顶部
总数 49 上一页 1 2 3 4 5