推荐一个学习TB公式的好方法

Discussion in '开拓者期货自动交易平台' started by tianlan203, Feb 5, 2009.

  1. 学习编程需要大量的例子,而最好的例程库已经在TB中附带了,就是TB的系统用户函数库。每一个TB的用户函数都是可以用公式编辑器打开查看源代码的,并且在每个函数的属性和帮助文件中都写了该函数的含义和用法。

    那么,最好的学习TB公式的方法就是自己重写用户函数!你先查看帮助文件,看某个函数的含义和用法,然后自己尝试着重写该函数,如果有问题写不下去了,那么就查看系统自带的该用户函数源代码。两相对照,很快你就能学会TB公式的写法啦

    如果你想学习TB公式的写法,我推荐你重写以下几个用户函数:
    1、Summation求和函数
    从这个函数中你能学到IF语句,FOR循环语句的用法,以及序列变量的用法。
    2、Average求平均函数
    从这个函数中你能学到如何进行函数调用,并且把早先写的Summation函数用一用,增强点成就感
    3、Extremes求极值函数
    这个函数比较长,有74行代码。它几乎用到了所有的编程技巧。IF语句,FOR语句,序列参数,序列变量,而且它还用了稍微高级的引用变量。如果你能写出这个函数,那么你在公式上就已经入门了。
    4、NthExtremes求N极值函数
    这个函数是Extremes函数的一个变种,你不需要自己完全重写,但是如果你能把源代码读懂的话,那么要重写文华上几乎所有的指标对你来说都是轻而易举的事情了。

    然后再写两个指标,看看如何来使用函数:
    1、MA指标
    学习如何来使用Average函数返回的数据
    2、Spread价差指标
    学习如何使用多数据源调用


    我要重申一下TB公式系统的架构:
    公式系统最底层的东西就是函数,系统函数或者用户函数。函数负责准备数据,这是个数据层。而指标、K线形态、特征走势和交易指令是表现层,他们负责把函数准备好的数据呈现出来。指标通过画线来呈现数据,K线形态和特征走势通过画点来呈现数据,而交易指令通过帐户操作来呈现数据。他们都只负责把数据以不同的方式呈现出来,而数据是由函数来准备的。正因为此,所以函数是最底层的,函数是用来被调用的。指标、K线形态、特征走势和交易指令都可以调用函数,但是指标却不能调用指标,指标也不能调用交易指令。这是与其他软件不同的地方。
     
  2. 这么好的帖子,怎么没人顶?是原创吗?非一般修为了。。。
     
  3. 谢谢提供!!!!
     
  4. 在其他程序中,MACD,MA,都是系统函数,可以直接使用
    而TB要用其他公式计算,不太习惯哦

    使用时间不长,感觉国内的软件要向国外的主流软件靠近,在语法,结构,界面接近和一致性
    而不是保持国内的股票软件原有作法,很多象股票软件的公式化语法,和功能等

    从使用TB ,和MT4来看,TB目前要作好功能和性能的平衡,精简或合并程序功能
    希望在功能上稍稍超越 MT4 即可,但性能和稳定性不要太弱于它
    目前TB 稳定性,资源占用,速度都比较差,日常很难使用,而过于复杂的界面和功能也让人难于起步,有些人就放弃了(我下载了几次,开始两次装上就删了,自选品种都很麻烦,要记住英文名才行,建议程序界面多借鉴国外程序,当然目前在功能上有些好于MT4)

    为什么提MT4,MT软件据说出现时间不长,但其他市场占有,用户接受度,生命力等方面很强,值得学习。从一个角度简单对比,我想国内外汇保证金的客户应少于期货交易客户,因为外保在国内没有开放;对比和讯“外汇大家谈”和“期市大家谈”两个版,外汇的贴子是期货版的十分之一;再对照TB的官方论坛 http://www.tradeblazer.net/forum 和国内一家MT4 论坛 520FX ,两个大致都是2007年开办的,但两边的热闹程度却不同,这也可以看出其市场情况

    希望TB越作越强,有更多国内和海外的用户使用和喜欢
     
  5. 小小补充一点,绝大多数用户学习编程,不是为了学习一种技能,好找工作
    而是尽快使用,好在市场赚钱
    希望程序开发和市场意识着重点放在这
     
  6. “在其他程序中,MACD,MA,都是系统函数,可以直接使用
    而TB要用其他公式计算,不太习惯哦”

    在TB中,MACD,MA等这些常用指标是可以直接使用的,也是系统自带的,不需编写。在调用、更换其它指标时,在图标界面直接输入这些英文简称回车即可。相比国内其它行情软件不同的是,TB不是用C语言写死了指标,而是开放了这些指标的源代码。用户可以清楚地知道每一个指标的具体算法。(现在可以解释有时不同的行情软件为什么有时在同一种指标上会有不同了,因为算法不同,尤其对一些有歧义的指标就更加重要。)
    可以创建自己的指标,在设计自己的交易系统的时候,也可以直接把源代码复制过去。当然,在刚接触TB的时候,也可以作为很好的范例,熟悉TB语言的规则和特点。
     
  7. “感觉国内的软件要向国外的主流软件靠近,在语法,结构,界面接近和一致性
    而不是保持国内的股票软件原有作法,很多象股票软件的公式化语法,和功能等”

    非常赞同你的观点。正是与TB在软件设计时的想法不谋而合。几年前,国内软件主要是行情软件,看到行情、技术分析是最主要的功能诉求。TB作为国内本土、面向国内期货市场的自动交易平台,借鉴了国外的知名交易软件,如TradeStation和WealthLab,如果熟悉TradeStation的语言,立刻就能上手。
     
  8. “从使用TB ,和MT4来看,TB目前要作好功能和性能的平衡,精简或合并程序功能
    希望在功能上稍稍超越 MT4 即可,但性能和稳定性不要太弱于它
    目前TB 稳定性,资源占用,速度都比较差,日常很难使用,而过于复杂的界面和功能也让人难于起步,有些人就放弃了(我下载了几次,开始两次装上就删了,自选品种都很麻烦,要记住英文名才行,建议程序界面多借鉴国外程序,当然目前在功能上有些好于MT4)”

    1、TB的专业版正是一个资源占用少、功能有剥离的版本。主要为非程序化交易而做日内手动短线交易、套利交易、多账户的用户而设计。其实这两个版本可同时登陆同时使用。

    2、TB在盘中自动交易时,CPU占用时比较大的,主要的原因也是由于为了实现前面所述的功能。不过同时开十几个图表同时运行自动交易还是没有问题的。稳定性方面也是需要不断改进的地方,大部分问题都是服务器连接的问题。正式实盘的服务器和模拟试用的服务器是分开的,自然实盘的稳定性会更好。

    3、自选品种也可以不需记住英文简称,有两个批量自选的方法:A、可以在行情窗口上直接用Delete删除不想保留的品种,留下自选,然后保存。在退出该工作区或软件的时候,在提示是否保存修改上点是;B、在行情窗口时,点上面有个小加号的“商品选择”键,然后就可以直接在树形市场里勾选品种了。对初上手的时候的心情非常理解,可能最主要是不习惯TB的这种工作室--工作区--窗口的三级架构。其实在一开始的时候初次设置好,以后会非常方便。TB为了专门实现这种架构,起初还费了不少劲。每个窗口可对应一个程序化系统,所以在一个工作区内可同时运行多套系统。而不同工作区可以对品种和系统、账户做归类,方便调用。
     
  9. “绝大多数用户学习编程,不是为了学习一种技能,好找工作
    而是尽快使用,好在市场赚钱”

    作为程序化交易系统的设计和自动交易平台,使用平台语言编写系统的难度的确比使用行情软件大。在TB里可以方便的调用和创建函数,供交易系统来调用,这样交易系统的代码不但会比较简洁,而且可以实现复杂的逻辑和算法。这种开放性对交易思想的实现、执行来说,是至关重要的。从语言自身来看,比MT4易用些,如果和文华、博易比是要复杂些。
     
  10. 多谢贴主的耐心答复!

    有关象MACD这类函数的使用,的确在“用户函数”里有,在超级图表中可以直接使用和绘出;但如果自编指标或交易指令,就要引用MACD的计算式,如:MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength )
    在“公式编辑器”输入MACD是出不来的,倒是输入一个“X”,XAverage一下就出来了;在帮助文档中也搜索不到MACD。目前了解的情况就是这样,不知是否如此?

    还发现TB在“交易策略性能测试”时速度快于MT4的EA测试,但其他几个更常用的方面较弱:
    当TB和MT4打开6个K线窗口平铺,运行相同EA(交易指令)
    1,TB 打开图表较慢;
    2,有行情时TB占用CPU高,等开盘时有机会抓图看看
    3,交易指令校验保存较慢;
    4,编写代码过程中DOWN机现象发生;
    请开发人员分析下在测试和其他情况下性能的差异,也许可以更快改善
    多谢
     
  11. 下载了专业版,想试试把指标和指令编好后,用专业版运行也许容易点,
    不过发现专业版只有分时图,没有K线图,只好作罢
     
  12. "有关象MACD这类函数的使用,的确在“用户函数”里有,在超级图表中可以直接使用和绘出;但如果自编指标或交易指令,就要引用MACD的计算式,如:MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength )"

    是这样的。这正是前面我们谈到的开放源代码的好处的例子。这样,在编写指标或交易指令时,我们既可以把代码复制过来直接引用,也可以对它做自己想做的各种修改、创新,尤其是和其它指标其它函数结合,和止损止盈等出场指令结合,和资金管理规则结合。这种开放性、设计指标或系统的自由性,正是TB平台和国内其它行情类软件的核心区别之一。
     
  13. “编写代码过程中DOWN机现象发生”

    在编写代码的时候会DOWN机?还从没遇到过。就像在MSN聊天窗口键入汉字一样,应该不会出现DOWN的。
    在校验保存代码的时候,如果代码有问题,倒是有可能。不过一般的错误,都会有错误的描述和提示。
     
  14. TB应该是国内最好的了
     
  15. 就偶所了解的 TB确实是目前国内最好的策略自动交易系统了 当然稳定性 易用性还有待于完善!!!!
     
  16. 一点个人看法,复楼主:

    1,软件用户编程语言疑问
    我认为是设计思想失误。TB出现有两三年了,至今未提供完整全功能的语言指令,好象始终是半成品;多数用户仍纠缠于如何学习些编程工具。此两点说明语言设计有误,如今软件业众多适用编程语言,修改下足以使用,完全不必自搞一套,花费不必要精力。可再次对比MT4众多指标,EA免费下载。

    2,用户界面及功能,稳定性
    i)用户界面,同样对比TB 及 MT4,无需看HELP能使用的软件是哪一个?
    ii)功能及稳定性,TB运行占用大量资源,交易时间频频死机,如何能把大量资金交其管理?
     
  17. “TB出现有两三年了,至今未提供完整全功能的语言指令,好象始终是半成品”


    TB和mt4一样都是平台软件,是给系统交易者开发、实现策略自动交易的软件,并不是半成品。不知您所说的全功能的语言指令是指什么,如果是指交易指令,TB不但提供Buy\SellShort\Buytocover\Sell这些平常的交易指令,还提供A_SendOrder这种可以针对当前公式应用的帐户、商品发送委托单的指令,并且可针对叠加商品进行处理,可用Data1.A_SendOrder(...)进行调用。如果你指交易策略,TB中自带有一个“海龟交易系统”作为编写交易策略的范例。
    如果你是希望平台软件出售交易策略,我想行业有分工,如果有人出售基于TB的交易策略,TB当然也是不反对的。


    “如今软件业众多适用编程语言,修改下足以使用,完全不必自搞一套,花费不必要精力。”


    对一个平台软件来讲,编程语言的特色是软件自身特色的重要体现,熟悉TS语言的朋友会发现很容易上手TB的语言,相信对熟悉MT4语言的朋友来讲,TB的语言也不是问题。因为设计的时候,已经考虑到这些语言的使用习惯,并且融合自身特点。


    “用户界面,同样对比TB 及 MT4,无需看HELP能使用的软件是哪一个?”


    从编程语言上来说,对一个未接触过平台策略编写的用户而言,TB更简便、清晰,我想这点是没有异议的。如果从界面的操作使用上,我想对熟悉国内行情分析软件而未接触过国外平台软件的用户而言,应该差别不大。其实界面的操作,任何一个软件只要确实是想使用它,熟练操作都不需要花多少时间,说白了,每个按钮都点点,大致就知道怎么操作了。


    “功能及稳定性,TB运行占用大量资源,交易时间频频死机,如何能把大量资金交其管理? ”


    占用大量资源的确如此,不知道netbean是不是TB的实盘用户,有没有用TB做过自动交易,频频死机是不会,因为和其他行情分析软件一样,数据源都从经纪公司来,偶有断线是的确的,但不会频频死机。如果TB发生断线,用户还可用金仕达等柜台进行手动交易。如果说功能性,TB的基础架构是不错的,最近也有做一些机构客户的定制。

    TB上市两三年了,也有人用它实盘交易两三年了。我想对系统交易者而言,熟悉一两种平台语言,以交易策略为着眼点,在一个平台上深入投入应该就足够了,因为毕竟交易者不是编程爱好者,最关心的是如何实现并不断完善自己策略,如何从市场中盈利。至于选用哪个平台,我想和使用习惯、自己策略实现的需求和首先接触哪个平台先入为主的感觉都有关系。也许,也和交易策略一样,适合自己的、能满足自己需求的就是好的。
    也感谢netbean一直以来对TB投入的关注和比较。TB会不断进步,以满足用户的需求,希望以后继续关注,并且多提出些具体的语言方面、功能方面的建议。
     
  18. 说老实话,为了用上TB,我换了期货公司,然而TB的稳定性让我有些失望,还要再改进,再改进。帮助文档每个函数不能附上例子么?老让我猜。优化速度不能再快些么?优化次数好象超过5万一定死机,等等。。。希望不断完善,我们就有福气了。。。。
     
  19. 感谢bhwhui对TB的厚爱!我这有个《TB函数手册》,对大部分的函数都有示例,您可以看看是否有帮助。
    稳定性方面会不断努力的!
    也请以后多提宝贵意见,一起进步!