设为首页收藏本站

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

我想编写一个指标 [复制链接]

Rank: 3Rank: 3

精华
0
UID
369
积分
196
帖子
29
主题
9
阅读权限
40
注册时间
2007-9-17
最后登录
2019-3-31
跳转到指定楼层
1#
发表于 2007-9-17 23:41:36 |只看该作者 |倒序浏览
我想编写一个指标,能统计出任何一段BAR数据中阴线和阳线的比例。
请帮忙!

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2007-9-18 09:47:30 |只看该作者
原帖由 jiqi 于 2007-9-17 23:41 发表
我想编写一个指标,能统计出任何一段BAR数据中阴线和阳线的比例。
请帮忙!


对于取指定返回内的阳线,阴线,有两种方式:
一是按照移动平均的方式,传入N值,求最近N个Bar的阴阳线比例。
二是求从第一个Bar以来所有的阴阳线比例。
以下代码用函数来实现取阴阳线个数值,当Length<=0时,按第二种方式处理,否则按第一种方式处理。
用户函数GetMyBars代码如下:
  1. //------------------------------------------------------------------------
  2. // 简称: GetMyBars
  3. // 名称: 获取涨或跌的Bars
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 布尔型
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric Length(10);
  10.         NumericRef UpBars;
  11.         NumericRef DnBars;
  12. Vars
  13.         NumericSeries Value1(0);
  14.         NumericSeries Value2(0);
  15.         Numeric i;
  16. Begin
  17.         If(Length <= 0)
  18.         {
  19.                 If(CurrentBar == 0)
  20.                 {
  21.                         Value1 = 0;
  22.                         Value2 = 0;
  23.                 }Else
  24.                 {
  25.                         Value1 = Value1[1];
  26.                         Value2 = Value2[1];
  27.                 }

  28.                 If(Close>Open)
  29.                         Value1 = Value1 + 1;
  30.                        
  31.                 If(Close<Open)
  32.                         Value2 = Value2 + 1;
  33.                        
  34.         }Else
  35.         {
  36.                 If ( CurrentBar < Length || Close[Length] == InvalidNumeric || Open[Length] == InvalidNumeric ||
  37.                         Value1[1] == InvalidNumeric || Value2[1] == InvalidNumeric)
  38.                 {
  39.                         for i = 0 to Length - 1
  40.                         {
  41.                                 Value1 = Value1 + IIF(Close[i]>Open[i],1,0);
  42.                                 Value2 = Value2 + IIF(Close[i]<Open[i],1,0);
  43.                         }
  44.                 }Else
  45.                 {
  46.                         Value1 = Value1[1] + IIF(Close>Open,1,0) - IIF(Close[Length]>Open[Length],1,0);
  47.                         Value2 = Value2[1] + IIF(Close<Open,1,0) - IIF(Close[Length]<Open[Length],1,0);
  48.                 }               
  49.         }
  50.                
  51.         UpBars = Value1;
  52.         DnBars = Value2;       
  53.         Return true;
  54. End

  55. //------------------------------------------------------------------------
  56. // 编译版本        GS2004.06.12
  57. // 用户版本        2007/09/18 09:28
  58. // 版权所有        nopain
  59. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  60. //                        每一版本的TrabeBlazer公式修改和重写的权利
  61. //------------------------------------------------------------------------
复制代码


技术指标jiqi代码如下:
  1. //------------------------------------------------------------------------
  2. // 简称: jiqi
  3. // 名称: 用户指标
  4. // 类别: 技术指标
  5. // 类型: 其它类
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric Length(10);
  10. Vars
  11.         Numeric UpCount;
  12.         Numeric DnCount;
  13. Begin
  14.         GetMyBars(Length,UpCount,DnCount);
  15.         PlotNumeric("UpDn",UpCount/DnCount);
  16. End

  17. //------------------------------------------------------------------------
  18. // 编译版本        GS2004.06.12
  19. // 用户版本        2007/09/18 09:25
  20. // 版权所有        nopain
  21. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  22. //                        每一版本的TrabeBlazer公式修改和重写的权利
  23. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2007-9-18 09:48:44 |只看该作者
注意,当返回的阴线数量为0时,因为0不能作为除数,所以会出现无效值。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
369
积分
196
帖子
29
主题
9
阅读权限
40
注册时间
2007-9-17
最后登录
2019-3-31
4#
发表于 2007-9-19 22:44:17 |只看该作者
感谢热心回复、、、、、、

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
369
积分
196
帖子
29
主题
9
阅读权限
40
注册时间
2007-9-17
最后登录
2019-3-31
5#
发表于 2007-9-19 23:06:28 |只看该作者
用户函数编译是出错,RETURN返回值类型不符,
不知什么原因

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
6#
发表于 2007-9-19 23:42:50 |只看该作者
原帖由 jiqi 于 2007-9-19 23:06 发表
用户函数编译是出错,RETURN返回值类型不符,
不知什么原因


NOPAIN写的那段例子用户函数返回值是布尔值,所以你在新建用户函数的时候,必须把该函数的返回值选择为布尔值
  1. // 简称: GetMyBars
  2. // 名称: 获取涨或跌的Bars
  3. // 类别: 用户函数
  4. // 类型: 用户函数
  5. // 输出: 布尔型
复制代码

使用道具 举报

Rank: 1

精华
0
UID
192437
积分
33
帖子
21
主题
8
阅读权限
10
注册时间
2014-8-16
最后登录
2020-3-20
7#
发表于 2018-2-13 09:50:05 |只看该作者

使用道具 举报

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

bottom

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

GMT+8, 2024-4-23 18:47

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部