设为首页收藏本站

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

条件语句下的大bug,求解~ [复制链接]

Rank: 2

精华
0
UID
251433
积分
63
帖子
34
主题
21
阅读权限
30
注册时间
2017-5-19
最后登录
2021-1-24
跳转到指定楼层
1#
发表于 2017-7-12 10:37:38 |只看该作者 |倒序浏览
无敌简单的代码,但是low9和low19在上穿k线上的值就是不一样,各位大神给看看~~
Params
Numeric fast_para(5);
Numeric slow_para(20);

Vars
NumericSeries ma_slow;
NumericSeries ma_fast;
Bool Up(false);
NumericSeries lowprice(0);
Begin
        ma_fast=Average(Close,fast_para);
        ma_slow=Average(Close,slow_para);
        up=CrossOver(ma_fast,ma_slow);
       
        If(CrossOver(ma_fast,ma_slow))
        {       
            lowprice=Lowest(Low,19);
                PlotNumeric("low19",lowprice);
                Commentary("lowprice"+Text(lowprice));
        }
        PlotNumeric("low9",Lowest(Low,19));
       
    PlotNumeric("ma_fast",ma_fast);
        PlotNumeric("ma_slow",ma_slow);
       
        if (up )
           {
           PlotBool("是否上穿",up);
           }
End

Rank: 10Rank: 10Rank: 10

精华
0
UID
119549
积分
3071
帖子
2946
主题
2
阅读权限
200
注册时间
2013-5-23
最后登录
2020-5-27
2#
发表于 2017-7-12 11:27:08 |只看该作者
不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数
将这句CrossOver(ma_fast,ma_slow)赋值给变量后,用变量代入if()中使用再试试

使用道具 举报

Rank: 2

精华
0
UID
251433
积分
63
帖子
34
主题
21
阅读权限
30
注册时间
2017-5-19
最后登录
2021-1-24
3#
发表于 2017-7-12 13:46:28 |只看该作者
hlp0410 发表于 2017-7-12 11:27
不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数
将这句CrossOver(ma_fast,ma_slow)赋值给 ...

CrossOver(ma_fast,ma_slow)赋值给变量了,结果还是不一样
btw,循环语句中不能使用序列函数,能举个例子么?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2017-7-12 14:16:09 |只看该作者
cassie_chen 发表于 2017-7-12 13:46
CrossOver(ma_fast,ma_slow)赋值给变量了,结果还是不一样
btw,循环语句中不能使用序列函数,能举个例子 ...

多加一个中间变量再试试
  1. Params
  2. Numeric fast_para(5);
  3. Numeric slow_para(20);

  4. Vars
  5. NumericSeries ma_slow;
  6. NumericSeries ma_fast;
  7. Bool Up(false);
  8. NumericSeries lowprice(0);
  9. numeric low9;
  10. Begin
  11.         ma_fast=Average(Close,fast_para);
  12.         ma_slow=Average(Close,slow_para);
  13.         up=CrossOver(ma_fast,ma_slow);
  14.          lowprice=Lowest(Low,19);
  15.         If(CrossOver(ma_fast,ma_slow))
  16.         {        
  17.            low9 = lowprice;
  18.                 PlotNumeric("low19",low9);
  19.                 Commentary("lowprice"+Text(lowprice));
  20.         }
  21.         PlotNumeric("low9",Lowest(Low,19));
  22.         
  23.     PlotNumeric("ma_fast",ma_fast);
  24.         PlotNumeric("ma_slow",ma_slow);
  25.         
  26.         if (up )
  27.            {
  28.            PlotBool("是否上穿",up);
  29.            }
  30. End
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2017-7-12 14:18:13 |只看该作者
cassie_chen 发表于 2017-7-12 13:46
CrossOver(ma_fast,ma_slow)赋值给变量了,结果还是不一样
btw,循环语句中不能使用序列函数,能举个例子 ...

并非说循环语句中一定不可以使用序列函数,而是指上层条件限制下,可能导致序列函数计算所需的取值受限,从而影响计算结果。。
如果自己能确保上层条件并不会影响其取值以及最终计算的正确性,那么在条件中或是循环中使用序列函数也是可以的。

使用道具 举报

Rank: 2

精华
0
UID
251433
积分
63
帖子
34
主题
21
阅读权限
30
注册时间
2017-5-19
最后登录
2021-1-24
6#
发表于 2017-7-12 16:11:06 |只看该作者
小米 发表于 2017-7-12 14:18
并非说循环语句中一定不可以使用序列函数,而是指上层条件限制下,可能导致序列函数计算所需的取值受限, ...

学习了,谢谢~~

使用道具 举报

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

bottom

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

GMT+8, 2024-5-18 05:28

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部