- 精华
- 20
- 在线时间
- 2981 小时
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
- 精华
- 20
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 主题
- 64
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
|
原帖由 jiqi 于 2007-9-17 23:41 发表
我想编写一个指标,能统计出任何一段BAR数据中阴线和阳线的比例。
请帮忙!
对于取指定返回内的阳线,阴线,有两种方式:
一是按照移动平均的方式,传入N值,求最近N个Bar的阴阳线比例。
二是求从第一个Bar以来所有的阴阳线比例。
以下代码用函数来实现取阴阳线个数值,当Length<=0时,按第二种方式处理,否则按第一种方式处理。
用户函数GetMyBars代码如下:
- //------------------------------------------------------------------------
- // 简称: GetMyBars
- // 名称: 获取涨或跌的Bars
- // 类别: 用户函数
- // 类型: 用户函数
- // 输出: 布尔型
- //------------------------------------------------------------------------
- Params
- Numeric Length(10);
- NumericRef UpBars;
- NumericRef DnBars;
- Vars
- NumericSeries Value1(0);
- NumericSeries Value2(0);
- Numeric i;
- Begin
- If(Length <= 0)
- {
- If(CurrentBar == 0)
- {
- Value1 = 0;
- Value2 = 0;
- }Else
- {
- Value1 = Value1[1];
- Value2 = Value2[1];
- }
- If(Close>Open)
- Value1 = Value1 + 1;
-
- If(Close<Open)
- Value2 = Value2 + 1;
-
- }Else
- {
- If ( CurrentBar < Length || Close[Length] == InvalidNumeric || Open[Length] == InvalidNumeric ||
- Value1[1] == InvalidNumeric || Value2[1] == InvalidNumeric)
- {
- for i = 0 to Length - 1
- {
- Value1 = Value1 + IIF(Close[i]>Open[i],1,0);
- Value2 = Value2 + IIF(Close[i]<Open[i],1,0);
- }
- }Else
- {
- Value1 = Value1[1] + IIF(Close>Open,1,0) - IIF(Close[Length]>Open[Length],1,0);
- Value2 = Value2[1] + IIF(Close<Open,1,0) - IIF(Close[Length]<Open[Length],1,0);
- }
- }
-
- UpBars = Value1;
- DnBars = Value2;
- Return true;
- End
- //------------------------------------------------------------------------
- // 编译版本 GS2004.06.12
- // 用户版本 2007/09/18 09:28
- // 版权所有 nopain
- // 更改声明 TradeBlazer Software保留对TradeBlazer平台
- // 每一版本的TrabeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码
技术指标jiqi代码如下:
- //------------------------------------------------------------------------
- // 简称: jiqi
- // 名称: 用户指标
- // 类别: 技术指标
- // 类型: 其它类
- // 输出:
- //------------------------------------------------------------------------
- Params
- Numeric Length(10);
- Vars
- Numeric UpCount;
- Numeric DnCount;
- Begin
- GetMyBars(Length,UpCount,DnCount);
- PlotNumeric("UpDn",UpCount/DnCount);
- End
- //------------------------------------------------------------------------
- // 编译版本 GS2004.06.12
- // 用户版本 2007/09/18 09:25
- // 版权所有 nopain
- // 更改声明 TradeBlazer Software保留对TradeBlazer平台
- // 每一版本的TrabeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码 |
|