设为首页收藏本站

 找回密码
 注册
查看: 961|回复: 8
打印 上一主题 下一主题

加入if语句前后显示不一样 [复制链接]

Rank: 1

精华
0
UID
295620
积分
16
帖子
9
主题
5
阅读权限
10
注册时间
2020-9-12
最后登录
2021-12-9
跳转到指定楼层
1#
发表于 2021-2-1 09:59:06 |只看该作者 |倒序浏览
代码本意是获取前10根的最高点,源码如下:
VAR3 = Highest(H,10);
PlotNumeric("VAR_H1=",(VAR3));//输出前10根的最高点曲线   这里没问题  输出曲线VAR_H1

但是我加入后面这些语句(意思是金叉后 输出前10根的曲线)
GoldCross = NthCon(CrossOver(MA5,MA6),1);
DeaCross = NthCon(CrossOver(MA6,MA5),1);
If(GoldCross < DeaCross)       
{
        VAR3 = Highest(H,10);
}

PlotNumeric("VAR_H2=",(VAR3));//输出曲线VAR_H2
这时就会发现VAR_H2与之前的VAR_H1不一样。  但是理论上我都是输出前10根曲线的高点(不论是否加if语句),为啥结果不一样呢(这里不一样指的是金叉后不一样,加if语句也只是判断金叉后重新输出曲线)?

观察到的情况是  加上if语句后输出的曲线是“金叉后10根的最高点”(也就是金叉那根是计数的起点),而不是从本根算起的10根的最高点。

请帮忙解惑下,谢谢。

或者我要怎么求金叉时前10根的最高点??

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
2#
发表于 2021-2-1 11:23:41 |只看该作者
条件语句中计算序列变量会出错。下面语句应移出if()。
VAR3 = Highest(H,10);

使用道具 举报

Rank: 1

精华
0
UID
295620
积分
16
帖子
9
主题
5
阅读权限
10
注册时间
2020-9-12
最后登录
2021-12-9
3#
发表于 2021-2-1 11:33:10 |只看该作者
那请问,我如果就是想求金叉前10根的最高点?   不用if语句要怎么写???

谢谢

使用道具 举报

Rank: 1

精华
0
UID
295620
积分
16
帖子
9
主题
5
阅读权限
10
注册时间
2020-9-12
最后登录
2021-12-9
4#
发表于 2021-2-1 11:34:53 |只看该作者
还有就是我想求 前一个死叉,到现在这个金叉,这期间的最高点,要怎么写?

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
5#
发表于 2021-2-1 13:07:59 |只看该作者
1、金叉前10根的最高点:Highest(High[GoldCross+1], 10);
2、前一个死叉,到现在这个金叉,这期间的最高点:
VAR3 = Highest(High[GoldCross+1], DeaCross-GoldCross);
If (GoldCross > DeaCross)
    VAR3 = 0;      // 可以赋任意值,以确保仅死叉在金叉前VAR3才有效

使用道具 举报

Rank: 1

精华
0
UID
295620
积分
16
帖子
9
主题
5
阅读权限
10
注册时间
2020-9-12
最后登录
2021-12-9
6#
发表于 2021-2-1 13:58:04 |只看该作者
代码如下:
                MA5=AverageFC(C,15);
                MA6=AverageFC(C,30);
               
                PlotNumeric("MA5=",(MA5));
                PlotNumeric("MA6=",(MA6));

                GoldCross = NthCon(CrossOver(MA5,MA6),1);
                DeaCross = NthCon(CrossOver(MA6,MA5),1);

                VAR3 = Highest(High[GoldCross+1], DeaCross-GoldCross);
               
                Commentary("GoldCross="+Text(GoldCross));
                Commentary("DeaCross="+Text(DeaCross));
                PlotNumeric("VAR3=",(VAR3));
我想画出上一个死叉到这个金叉之间的最高点, 但是实际画出的却是金叉以后的最高点。(如图所示,如果是死叉到金叉之间的最高点,应该在那个圈中最高点才对。)

请帮忙看下是什么问题, 非常感谢。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
7#
发表于 2021-2-1 14:41:43 |只看该作者
下面方法可以解决:
NumericSeries VAR3;

VAR3 = Highest(High[1], DeaCross-GoldCross);
If(GoldCross > 0 and GoldCross < DeaCross)
    VAR3 = VAR3[1];

使用道具 举报

Rank: 1

精华
0
UID
295620
积分
16
帖子
9
主题
5
阅读权限
10
注册时间
2020-9-12
最后登录
2021-12-9
8#
发表于 2021-2-1 16:12:01 |只看该作者
非常感谢,测试了下,确实这个方法可以解决,  但是之前的方法为啥不行?  感觉逻辑上并没有什么问题吧。

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
9#
发表于 2021-2-2 09:35:22 |只看该作者
我也没有太仔细研究,不知道为什么之前写的不行。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-8 06:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部