交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 2371|回复: 29
打印 上一主题 下一主题

[其他] 求教:为啥指标不会跟随数据来计算了?

[复制链接]

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
跳转到指定楼层
楼主
发表于 2016-6-30 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前写的指标都会跟着数据计算,这次写了以后,修改很久都无法做到。必须点一次编译,指标才会更新一次,这个是什么原因?指标没写完,只写了两个,剩下一个需要运用这两个来计算,可是测试这两个,出现现在的问题。


#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


#property  indicator_chart_window
#property  indicator_buffers 3
#property  indicator_color1  Green
#property  indicator_color2  Orange
#property  indicator_color3  White
//---- 自定义参量
//---- 自定义缓冲
double     rhs[];
double     rhx[];
double     rhqd[];

int init()

  {
  IndicatorBuffers(3);
//---- 画出设定
   SetIndexShift(0,0);
   SetIndexStyle(0,3,0,1,Green);
   SetIndexArrow(0,241);
   SetIndexBuffer(0,rhs);  
   
   SetIndexShift(1,0);
   SetIndexStyle(1,3,0,1,Orange);
   SetIndexArrow(1,242);
   SetIndexBuffer(1,rhx);

   SetIndexShift(2,0);
   SetIndexStyle(2,3,0,3,White);
   SetIndexBuffer(2,rhqd);

   SetIndexDrawBegin(0,0);
   SetIndexDrawBegin(1,0);
   SetIndexDrawBegin(2,0);
   
   return(0);
  }
  
int start()

  {

int count=0;
count=IndicatorCounted();
if(count>0) count--;
int limit=Bars-count;


for(int i=limit-2;i>=2;i--)
{
    if(High[i+1]<=High[i]&&High[i]>=High[i-1])
    rhs[i]=High[i];
  
    else
    rhs[i]=0;
  
   if(Low[i+1]>=Low[i]&&Low[i-1]>=Low[i])
    rhx[i]=Low[i];
   
    else
    rhx[i]=0;

  }


   return(0);
   }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 保留保留
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
推荐
 楼主| 发表于 2016-7-2 17:33 | 只看该作者
本帖最后由 kamiki 于 2016-7-2 17:52 编辑

经过几天努力并优化,现在这个指标已经全部完成了。。。

有需要的,可以用来试试;

这个是用于做突破交易指标。可以直接引用指标箭头的价格(为我的下一个ea做准备的)。
当价格突破箭头方向时,按箭头方向开仓,而上一个反方向的箭头为止损价(看自己资金啦,可以用上上个都行),并可以做跟随止损;

盘整时(横线部分),可以选择忽略信号(看指标参数的提示选择周期)。
黄色的星星表示的是短时间的盘整(孕线)。

当然不是所有信号都开仓,比如前一个柱是包线,还有信号柱线太长或成影线,跳空、成交量等等,都可以作为排除信号。这个看个人经验了。

后面贴指标源码。

RH孕指标.rar

1.31 KB, 下载次数: 2, 下载积分: 金钱 -8

售价: 10 金钱  [记录]  [购买]

源码

想想就行,别动手,动手非君子,等着吧
回复 支持 1 反对 0

使用道具 举报

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
板凳
 楼主| 发表于 2016-6-30 16:51 | 只看该作者
如图所示

1.png (13.16 KB, 下载次数: 2)

未编译前

未编译前

1.png (10.79 KB, 下载次数: 1)

点了编译之后,才改变

点了编译之后,才改变
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
地板
 楼主| 发表于 2016-6-30 16:54 | 只看该作者
本帖最后由 kamiki 于 2016-6-30 16:57 编辑

高手快来



@frlin2003


@阿建GG  
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
5
 楼主| 发表于 2016-6-30 16:58 | 只看该作者
怎么回事?

点评

不显示链接颜色,也可以@到人  发表于 2016-6-30 17:27
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
6
 楼主| 发表于 2016-6-30 16:59 | 只看该作者
没办法了
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
7
 楼主| 发表于 2016-6-30 17:01 | 只看该作者
我发觉,如果切换了周期图,指标也会重新运行
想想就行,别动手,动手非君子,等着吧

2128

主题

6万

积分

157

精华

大型投行

金钱
61604 美元
权重
640
8
发表于 2016-6-30 17:10 来自手机 | 只看该作者
你从2循环,好像是不动

评分

参与人数 1金钱 +20 收起 理由
kamiki + 20 辛苦了!

查看全部评分

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
9
 楼主| 发表于 2016-6-30 17:11 | 只看该作者
从2和从0没区别啊,因为我后面引用是i-1,而我不想用当前未完成的柱
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
10
 楼主| 发表于 2016-6-30 17:12 | 只看该作者
那你觉得该怎么改,我试试
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
11
 楼主| 发表于 2016-6-30 17:17 | 只看该作者

for(int i=limit-3;i>=2;i--)
{
    if(High[i+1]>=High[i]&&High[i+1]>=High[i+2])
    rhs[i+1]=High[i+1];
  
    else
    rhs[i]=0;
  
   if(Low[i+1]<=Low[i]&&Low[i+2]>=Low[i+1])
    rhx[i+1]=Low[i+1];
   
    else
    rhx[i]=0;

  }

改成0了,结果没区别
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
12
 楼主| 发表于 2016-6-30 17:37 | 只看该作者
那干啥你的又能显示?
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
13
 楼主| 发表于 2016-6-30 17:45 | 只看该作者
int count=0;

int limit=Bars;

for(int i=limit-count-3;i>=1;i--)
{
    if(High[i+1]>=High[i]&&High[i+1]>=High[i+2])
    {count=limit-i;
    rhs[i+1]=High[i+1];
    }
    else
    rhs[i]=0;
  
   if(Low[i+1]<=Low[i]&&Low[i+2]>=Low[i+1])
    {count=limit-i;
    rhx[i+1]=Low[i+1];
    }
    else
    rhx[i]=0;

  }



解决了,用了我两小时。。。汗,不用它的函数了,我自己计算没计算的柱数,可能它跳一注就算这柱算过了,而我的需要至少3柱来计算的,所以造成这个结果。。。谢谢@frlin2003
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
14
 楼主| 发表于 2016-6-30 17:46 | 只看该作者
等三个指标计算全部写完,再附上所有指标程序吧。现在才写了两个,就要下班了
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
15
 楼主| 发表于 2016-6-30 17:49 | 只看该作者
希望下班到家后,我的单子已经止盈
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
16
 楼主| 发表于 2016-6-30 19:00 | 只看该作者
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


#property  indicator_chart_window
#property  indicator_buffers 3
#property  indicator_color1  Green
#property  indicator_color2  Orange
#property  indicator_color3  White
//---- 自定义参量
//---- 自定义缓冲
double     rhs[];
double     rhx[];
double     rhqd[];

double rh1,rh2,rh3,rh4;
int t1,t2,t3,t4;
int init()

  {
  IndicatorBuffers(3);
//---- 画出设定
   SetIndexShift(0,0);
   SetIndexStyle(0,3,0,0,Green);
   SetIndexArrow(0,241);
   SetIndexBuffer(0,rhs);  
   
   SetIndexShift(1,0);
   SetIndexStyle(1,3,0,0,Orange);
   SetIndexArrow(1,242);
   SetIndexBuffer(1,rhx);

   SetIndexShift(2,0);
   SetIndexStyle(2,3,0,3,White);
   SetIndexBuffer(2,rhqd);

   SetIndexDrawBegin(0,0);
   SetIndexDrawBegin(1,0);
   SetIndexDrawBegin(2,0);
   
   return(0);
  }
  
int start()

  {

int count=0;

int limit=Bars;

for(int i=limit-count-3;i>=1;i--)
{
    if(High[i+1]>=High[i]&&High[i+1]>=High[i+2])
    {count=limit-i;
    rhs[i+1]=High[i+1];
   
    t1=t2;
    t2=t3;
    t3=t4;
    t4=i+1;
   
    rh1=rh2;
    rh2=rh3;
    rh3=rh4;
    rh4=High[i+1];
   
   
   
    }
    else
    rhs[i]=0;
  
   if(Low[i+1]<=Low[i]&&Low[i+2]>=Low[i+1])
    {count=limit-i;
    rhx[i+1]=Low[i+1];
   
    t1=t2;
    t2=t3;
    t3=t4;
    t4=i+1;
   
    rh1=rh2;
    rh2=rh3;
    rh3=rh4;
    rh4=Low[i+1];
   
   
   
    }
    else
    rhx[i]=0;

     if(rh1<=rh2&&rh3>=rh1&&rh2>=rh3&&rh4>=rh2&&t1!=t2&&t2!=t3&&t3!=t4)
     rhqd[t4]=rh4;
     else if(rh1>=rh2&&rh3<=rh1&&rh2<=rh3&&rh4<=rh2&&t1!=t2&&t2!=t3&&t3!=t4)
     rhqd[t4]=rh4;
     else
     rhqd[t4]=0;

  }
     



   return(0);
   }
想想就行,别动手,动手非君子,等着吧

15

主题

619

积分

1

精华

贫民

初级操盘手

金钱
619 美元
权重
1
17
 楼主| 发表于 2016-6-30 19:04 | 只看该作者
本帖最后由 kamiki 于 2016-6-30 19:05 编辑

已经全部完成了。。解释一下,这个是根据洛氏霍克交易法所写的RH指标,当然仅有指标,还有不少其他的判断才能在突破RH点时开仓,但至少不用我们自己去数各种高低点来确定RH点了。

这是大概指标,不能涵盖所有的RH点。毕竟有的线高低点都在一条柱线上,而程序不能确定,是先到高点还是先到低点。

白色的叉叉是RH点的价格,可以直接程序引用价格。
想想就行,别动手,动手非君子,等着吧

2128

主题

6万

积分

157

精华

大型投行

金钱
61604 美元
权重
640
18
发表于 2016-6-30 21:23 | 只看该作者
额。。。容我消化下。我还不知道你是怎么好的

352

主题

7816

积分

3

精华

高级操盘手

金钱
7816 美元
权重
224
19
发表于 2016-6-30 22:09 | 只看该作者
kamiki 发表于 2016-6-30 19:04
已经全部完成了。。解释一下,这个是根据洛氏霍克交易法所写的RH指标,当然仅有指标,还有不少其他的判断才 ...

for循环写错了,i--

++或者--

只有一个

2128

主题

6万

积分

157

精华

大型投行

金钱
61604 美元
权重
640
20
发表于 2016-6-30 22:20 | 只看该作者
阿建GG 发表于 2016-6-30 22:09
for循环写错了,i--

++或者--

他的for循环有点神奇
已收藏

352

主题

7816

积分

3

精华

高级操盘手

金钱
7816 美元
权重
224
21
发表于 2016-6-30 22:24 | 只看该作者
frlin2003 发表于 2016-6-30 22:20
他的for循环有点神奇
已收藏

你确定只有一个+或者- 能循环的动,从来没见过这么写的,或许是我见识短
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表