设为首页收藏本站

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

关于版主推荐的Extremes函数的问题 [复制链接]

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
跳转到指定楼层
1#
发表于 2009-8-31 22:04:23 |只看该作者 |倒序浏览
已经接触TB两个月了,前天看了斑竹的置顶贴后,按照斑竹的步骤,已经搞懂了summation和average函数,也搞清了MA指标和spread价差指标,感觉都还比较顺利。现在开始攻Extremes了,不过初看了一遍函数都还没完全看懂哦。感觉对于初学者来说这地方有点难度哦。写一个程序开始要不要先要构建一个框架,分成一块一块来写啊? 感觉斑竹可以把Extremes函数的编写思路过程和详细步骤作一个详细的讲解说明贴上来,大家再跟着学习讨论,应该很有代表性,可以省掉很多答疑的时间哦!希望跟大家一起学习成长。
    这里先请教一个问题:Extremes函数的基本框架就是:If ( CurrentBar < Length - 1);Else If(CurrentBar == Length - 1 || MyBar[1] == Length - 1);Else
三层吧?
    第一种情况 currentbar<length -1 ,意思就是样本数不够,返回无效值,这里理解;
    第二种情况和第三种情况分别是什么意思啊? :hug
已有 1 人评分金钱 收起 理由
tianlan203 + 66 鼓励、赞赏认真踏实的学习精神! ...

总评分: 金钱 + 66   查看全部评分

前进!

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2009-9-1 09:26:53 |只看该作者
第二个分支分为两种情况:以求10周期极值为例。
1、如果现在刚好准备好了10根Bar,开始第一次计算,需要用For循环来全部查找。
2、如果上一个次求的最近10根Bar里面,正好第一个是极值,此时需要删掉这个数据,增加一个最新的Bar,所以也需要全部计算。

第三个分支是指普通的情况。这个时候只需要拿最新Bar的数据和以前算出来的极值比较。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
3#
发表于 2009-9-1 23:19:48 |只看该作者
引用参数不能初值,同时我们又只能对排在后面的参数设初值。那岂不是在需要设初值的函数中引用参数都只能排在第一个啦? 比如如下的初值是不是就是错误的啦?:
//------------------------------------------------------------------------
// 简称: Extremes
// 名称: 求极值
// 类别: 用户函数
// 类型: 内建函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
        NumericSeries Price(1);
        Numeric Length(10);
        Bool bMax(True);       
        NumericRef ExtremeBar;
前进!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
4#
发表于 2009-9-2 00:08:20 |只看该作者
//------------------------------------------------------------------------
// 简称: Extremes_mine
// 名称: 我的求极值函数
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
        NumericSeries   Price(0);
    Numeric          Length(10);
    Bool             bMax(true);
    NumericRef      Extremebar;

Vars
        Numeric Myval(0);
    Numeric Mybar(0);
    Numeric i(1);
Begin
        If(CurrentBar < length - 1)
      { Myval = InvalidNumeric;
        Mybar = InvalidNumeric;
       }
    Else
          { For i = 0 To Length - 1
         If(bMax)
           { If(Price > Myval )
              Myval = Price;
              Mybar = i;
            }
         Else
           { If(Price < Myval )
              Myval = Price[1];
              Mybar = i;
            }
       }
     Extremebar = Mybar;
     Return Myval;
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2009/09/01 23:12
// 版权所有        larsir
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------



//------------------------------------------------------------------------
// 简称: Extremes_mine
// 名称: 我的求极值函数指标
// 类别: 技术指标
// 类型: 其它类
// 输出:
//------------------------------------------------------------------------
Params
        Numeric    Length(5);
        Bool        bMax(True);
        Numeric    Extremebar(0);
Begin
        PlotNumeric("Extremes",Extremes_mine(Close,Length,bMax,Extremebar));
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2009/09/01 23:42
// 版权所有        larsir
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------


本人自编了上面的程序和技术指标,似乎输出的结果没有什么不对啊。跟系统自带的Extreme函数效果一样啊。 还请版主斧正!
前进!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2009-9-2 10:23:09 |只看该作者
你的方法当然是可以的,每次都循环一遍。系统提供的方法做了优化,减少了部分循环计算。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
6#
发表于 2009-9-2 19:16:14 |只看该作者
哦!谢谢版主!
前进!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
7#
发表于 2009-9-3 00:12:57 |只看该作者
在斑竹的指导下,今天经反复钻研,总算把Extremes函数搞懂了,自己重写了一遍,还做了点小小的改动,一切OK!真还有点小小的激动呢。下一步就是搞定NthExtremes了。像我这等技术分析还没入门,只瞎里糊涂的乱炒过一通,大学C语言勉强及格现在又忘得一干二净的材料,而今也对学好TB信心十足了。 真得感谢各位热心斑竹和前辈的帮助指点。
前进!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4816
积分
166
帖子
26
主题
8
阅读权限
40
注册时间
2009-7-7
最后登录
2019-3-24
8#
发表于 2009-9-3 06:52:46 |只看该作者
可否麻烦楼主简单说一下NthExtremes函数的基本架构,粗读了一遍,还毫无头绪啊。貌似比Extremes函数难多了啊。不甚感谢! tsj7
前进!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2009-9-3 16:11:33 |只看该作者
先仔细想想,如果让您来求最近第N个高低点,应该怎么搞?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
20070
积分
232
帖子
17
主题
4
阅读权限
40
注册时间
2010-11-20
最后登录
2011-3-25
10#
发表于 2010-12-23 11:18:26 |只看该作者
2# nopain
对于第二个分支的第二种情况,可否解释一下实现过程?

使用道具 举报

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

bottom

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

GMT+8, 2024-5-11 15:36

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部