加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

手把手教你做一套期货量化系统(3) 交易品种

(2013-08-20 10:21:55)
标签:

财经

量化交易

tb开拓者

分类: 手把手教你写赚钱系统
 
 
交易品种
 
 

    这一章会教大家用最简单的办法找出波动性好,隔夜缺口少的品种。

    首先我们要新建一个公式,左侧TB公式里,点击新建用户函数,然后如下图创建新的公式。

http://s16/mw690/712ddf6dgx6BZQ9odK76f&690交易品种" TITLE="手把手教你做一套期货量化系统(3) 交易品种" />
    TB公式里会有三大结构:Params(参数设置),Vars(变量定义),Begin-End(公式主体):

http://s13/mw690/712ddf6dgx6BZQgp7eA1c&690交易品种" TITLE="手把手教你做一套期货量化系统(3) 交易品种" />
    //   这个符号代表注释,程序会忽略此部分。    
    
    现在,我们需要把挑选的依据,隔夜风险和单日波幅,进行量化。所谓量化就是将现象从定性转变为定量。例如,定性描述:股票大涨,我们知道股票涨了,而且幅度很大。定量描述:股票涨了4%,超过2%我们可以定义为大涨,所以得出结论,这股票大涨了。其中,2%不是系统内部自动生成的,而是外部给定的,可以基于主观也可以经过历史数据处理获得。2%放到交易系统里,这便是我们的参数。


    参数定义的格式:参数类型   参数名称(参数默认值)

    例如:

    Numeric DayGap(0.01);

    Numeric IntraHL(0.02);

    注意,TB开拓者每行结束都是以英文分号 ; 结尾。TB中使用最多的数据类型是Numeric(数值型),Bool(逻辑型)和NumericSeries(数组型)。至于其他数据类型,如有需要我再介绍。

    DayGap代表隔夜开盘与前日收盘的差价,而默认值0.01表示我希望找出隔夜风险超过1%的日子。IntraHL代表当日最低与最高价的差价,而默认值0.02表示我希望找出当日波幅超过2%的天数。



    变量定义的格式:变量类型 变量名称

    例如

    NumericSeries NumGap;

    NumericSeries NumHL;

    Numeric       Result;

    变量定义和参数定义的区别在于不用设置默认值。凡是Begin里面涉及的变量都要在Vars这里进行定义。基本上我是根据程序的需要才进行创建的。这里NumGap是记录隔夜缺口出现的次数,NumHL是记录当日波幅较大的天数,最后Result这是我想要的结果。


    程序主体:

    这里先教大家一个用得最多的IF语句:

    If(条件语句为真)

    {

        执行语句;

    }

    Else   //否则

    {

        执行语句;

    }

   下图是公式主体:
http://s13/mw690/712ddf6dgx6BZS8NPL62c&690交易品种" TITLE="手把手教你做一套期货量化系统(3) 交易品种" />

    TB提取数据办法很简单,直接输入数据的英文即可,例如当天收盘价Close。而如果想更精确的提取N天前收盘价,则是Close[N]
    NumericSeries 变量;
    变量 = 变量[1] + 1; 代表 新一期变量 = 前一期变量 + 1。
    变量 = 变量[1]; 代表 新一期变量 = 前一期变量。
    NumGap用于记录隔夜缺口超过参数设置(默认0.01)的天数。如果前天收盘价(Close[2])减去昨天开盘价(Open[1])的缺口除以前天收盘价大于0.01,则加一,否则保留原值。最后得出的结果是加载的数据中,隔夜缺口大于1%的天数。
    NumHL用于记录当日波幅超过参数设置(默认0.02)的天数。如果昨天最高价(High[1])减去昨天最低价(Low[1])的波幅除以昨天开盘价(Open[1])大于0.02,则加一,否则保留原值。最后得出的结果是加载数据中,当日波幅大于2%的天数。

    如果单独得到这两个数据,我们无法进行品种间的比较,这里需要另一个量化的思想,将数据标准化(例如夏普比率),在这个例子中,最简单的办法就是把两个数据相除。例如变量Result,就是NumHL/NumGap。因为我们希望单日波幅比较大,隔夜缺口比较小,转换之后得到的Result便是越大越好。这样品种间的比较可以直接对比它们的Result。

    PlotNumeric是画图的命令,意思是用Result的数值画一条直线,并命名为HL/Gap。TB中对字符的输入需要加英文双引号,例如"HL/Gap"。


    接着在文件>属性设置>常规,把主图显示改成子图显示,再点击确定。加载公式之后,得出的结果将显示在K线图下面的子图。另外,TB默认加载的数据是300K线,日线周期就是300个交易日,HL/Gap的是此品种300个交易日的走势特征。


    最后在点击菜单文件里的编译保存公式或直接点击绿色的小对勾即可编译保存。这样这段小公式就算完成了。


    写完这个公式,接着要做的是把这公式代入各品种的主力连续或商品指数中把得出的结果记录下来进行比较,具体品种的结果请读者自行实践。总的来所,大部分金属的数值都很低,焦炭,玻璃,螺纹钢和部分农产品的日线走势特征比较好,适合开发隔夜策略。后文我是以螺纹钢作为示范。


    最后这里有两点需要提醒一下:一、这提供的是完全基于TB的简易方法,而最直接的办法是把数据从TB导出,然后写段代码用Matlab这种软件一次性进行比较,这样会更快得出结果。二、公式里的参数设置不同,得出的结论也会同,我设置的默认值是根据我习惯的止盈止损作为标准,不同人的风险偏好不同,可以适当地调整参数。


    下一篇,我会教大家如何对K线形态和点位进行简单的描述。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有