设为首页收藏本站

 找回密码
 注册
楼主: 小米
打印 上一主题 下一主题

TradeBlazer公式入门教程 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
11#
发表于 2007-9-3 11:21:04 |显示全部楼层
TradeBlazer公式入门教程(12)


Step16

用户字段

用户字段因为暂时还末用到,所以这部分就先跳过不讲了


技术指标

技术指标是最常用的一类公式,它通过计算一系列的数学公式,在每个Bar都返回值,这些值在图表模块中输出为线条、柱状图、点等表现形式,通过分析图形特点、走势和曲线帮助客户分析行情走势,得出合理的交易判断。

当技术指标应用在图表中时,您可以设置技术指标各输出值的表现形式,以及颜色、粗细等,如下图的点,线,柱状图所示:



技术指标的使用规则归纳如下:

     支持三种基本类型的参数定义,支持指定参数默认值;

     不支持使用引用参数;

     支持六种类型的变量定义,支持指定变量的默认值;

     可以访问Data0-Data49个数据源的Bar数据;

     可以访问行情数据、属性数据;

     必须通过PlotNumeric、PlotBool、PlotString返回数据,返回数据类型为三种基本类型的组合;

     可以输出多组数据,通过PlotNumeric、PlotBool、PlotString的第一个参数,即输出名称来区分输出数据;

     可以支持Alert来进行报警;

     技术指标可以调用所有的用户函数进行计算;

     技术指标可以根据设置调用部分的系统函数;

     技术指标在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。

示例,技术指标RSI,脚本如下:

  1. Params
  2.     Numeric Length(14);
  3.     Numeric OverSold(20);
  4.     Numeric OverBought (80);
  5. Vars
  6.     Numeric RSIValue(0);
  7.     Numeric RSIColor(-1);
  8. Begin
  9.     RSIValue = RSI(Close,Length);
  10.     If (RSIValue > OverBought)
  11.     {
  12.         RSIColor = RED;
  13.     }Else If (RSIValue < OverSold)
  14.     {
  15.         RSIColor = CYAN;
  16.     }
  17.     PlotNumeric("RSI1", RSIValue, RSIColor);
  18.     PlotNumeric("超卖", OverSold);
  19.     PlotNumeric("超买", OverBought);
  20.            
  21.     If CrossOver(RSIValue,OverSold)
  22.     {
  23.             Alert("Indicator exiting oversold zone");
  24.     }
  25.     If CrossUnder(RSIValue, OverBought)
  26.     {
  27.             Alert("Indicator exiting overbought zone");
  28.     }
  29. End
复制代码


技术指标RSI调用RSI内建用户函数计算出结果,然后判断其返回值和超买,超卖的关系,设置显示颜色,并产生报警信息。

技术指标在输出数据时,我们是通过输出值的名称来进行识别,名称相同则认为是一个数据,如下的代码,后面语句的输出数据将会覆盖前面语句的输出数据。

  1. PlotNumeric("Test",10);
  2. PlotNumeric("Test",20);
复制代码


最后"Test"输出的数据为20,而不是10。


K线型态

K线型态是另外一种形式的技术分析公式,它对满足设定条件的Bar进行标记,使之醒目,便于客户进行分析。

当K线型态应用在图表中时,您可以设置其输出值的颜色、风格和粗细,如图所示:



K线型态的使用规则归纳如下:

     支持三种基本类型的参数定义,支持指定参数默认值;

     不支持使用引用参数;

     支持六种类型的变量定义,支持指定变量的默认值;

     可以访问Data0-Data49个数据源的Bar数据;

     可以访问行情数据、属性数据;

     必须通过PlotBar返回数据;

     只能输出一组数据,用名称进行区分;

     可以支持Alert来进行报警;

     K线型态可以调用所有的用户函数进行计算;

     K线型态可以根据设置调用部分的系统函数;

     K线型态在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。

示例,K线型态十字星,脚本如下:

  1. Vars
  2.     Bool Condition(False);
  3. Begin
  4.     Condition = (Abs(Close-Open)*10<(High-Low)) And
  5.                 (High <> Close) And (Low <> Close);
  6.     If (Condition)
  7.     {
  8.         PlotBar("SZX",High,Low)
  9.     }
  10. End
复制代码


K线型态十字星判断条件,条件满足的情况下用PlotBar输出信息。

特征走势


特征走势是另外一种形式的技术分析公式,它对满足设定条件的Bar进行标记,使之醒目,便于客户进行分析。特征走势和K线型态有很多相似之处,最大的不同在于,K线型态和特征走势的数据输出方式。

当特征走势应用在图表中时,您可以设置其输出值的表现形式,以及颜色、风格和粗细,如图所示:



特征走势的使用规则归纳如下:

     支持三种基本类型的参数定义,支持指定参数默认值;

     支持使用引用参数;

     支持六种类型的变量定义,支持指定变量的默认值;

     可以访问Data0-Data49个数据源的Bar数据;

     可以访问行情数据、属性数据;

     必须通过PlotNumeric、PlotBool、PlotString返回数据,返回数据类型为三种基本类型的组合;

     只能输出一组数据,用名称进行区分;

     可以支持Alert来进行报警;

     特征走势可以调用所有的用户函数进行计算;

     特征走势可以根据设置调用部分的系统函数;

     特征走势在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。

示例,特征走势创历史新高,脚本如下:

  1. Params
  2.     Numeric Length(5);
  3. Vars
  4.     Bool Condition(False);
  5. Begin
  6.     Condition = (High ==Highest(High,Length)) ;
  7.     If (Condition)
  8.     {
  9.         PlotNumeric("CLSXG",High)
  10.     }
  11. End
复制代码


特征走势创历史新高判断条件,条件满足的情况下用PlotNumeric、PlotBool、PlotString输出信息。

交易指令

TradeBlazer公式提供一种简单的方法表达您的交易思想,那就是使用交易指令,一个简单的交易指令如下:

  1. If (Condition)
  2.     Buy (1,Close);
复制代码


以上的语句表达的意思是:当某些条件满足了,将用当前Bar的收盘价买入1手指定商品。就像您平时通过经纪商进行交易操作一样,TradeBlazer公式提供四个系统函数和现实中的四种交易动作进行对应,如下:



交易指令的使用规则归纳如下:

     支持三种基本类型的参数定义,支持指定参数默认值;

     不支持使用引用参数;

     支持六种类型的变量定义,支持指定变量的默认值;

     可以访问Data0-Data49个数据源的Bar数据;

     可以访问行情数据、属性数据;

     通过Buy、Sell、SellShort和BuyToCover产生交易动作,也可以使用各种内建平仓指令产生交易动作;

     每个交易指令至少包含一个交易动作;

     交易指令可以调用所有的用户函数进行计算;

     交易指令可以根据设置调用部分的系统函数;

     交易指令在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。

示例,交易指令MACD_LE,脚本如下:

  1. Params
  2.     Numeric FastLength( 12 );
  3.     Numeric SlowLength( 26 );
  4.     Numeric MACDLength( 9 );
  5.     Numeric BuyLots(1);
  6. Vars   
  7.     NumericSeries MACDValue;
  8.     NumericSeries AvgMACD;
  9.     Numeric MACDDiff;
  10.     Bool Condition1;
  11.     Bool Condition2;
  12. Begin
  13.     MACDValue = XAverage( Close, FastLength ) -
  14.                     XAverage( Close, SlowLength ) ;       
  15.     AvgMACD = XAverage(MACDValue,MACDLength);
  16.     MACDDiff = MACDValue - AvgMACD;
  17.     Condition1 = CrossOver(MACDValue, AvgMACD) ;
  18.     Condition2 = MACDValue > 0;
  19.     if (Condition1 And Condition2)
  20.     {
  21.         Buy(BuyLots,Close);
  22.     }
  23. End
复制代码


MACD_LE在零轴之上,当MACDValue向上穿过AvgMACD值时为产生多头买入指令。

关于Delay

默认情况下,4个交易函数产生的委托单即时发送;当参数Delay=True时,委托单将延迟到下一个Bar发送,这样设计的原因在于:只有延迟的委托单才会保证发送的交易指令的正确性。

假定在某商品A的周期为5分钟的数据上应用交易指令,A商品每1秒钟会产生一个Tick数据,因此一段时间内(<5分钟)A商品最后一个Bar的数据的收盘价,最高价,最低价以及成交量等数据,会随着Tick的变化和累计而产生相应的变化。在某种情况下,上一个Tick更新时,Buy的预设条件可能为False,下一个Tick更新时,Buy的预设条件为True。如果不延迟,将会马上发送该委托单到交易所。但是,当更多的Tick累计,产生一个新的Bar时,Buy的预设条件可能会变成False。在这种情况,前面产生的委托单将会丢失,不会在测试和优化报表中出现。该委托单实际上是由于噪音数据产生的错误讯号导致,为了避免这种情况的出现,一定要等最后Bar数据更新结束之后,新Bar产生第一个Tick时,才会发送上一个Bar产生的委托单。

当交易函数的延迟设置为False。将会实时发送产生的委托单,按Tick进行更新。在使用该参数时,需要确认自己所编写的公式不会用到这些无效的中间数据,从而影响交易结果。

注意: Delay参数对交易会产生重要的影响,请在确认理解含义之后才进行真实的交易。


关于内建平仓指令

除了上节的Sell和BuyToCover可以进行平仓之外,TradeBlazer公式提供了额外的八种平仓函数,通过合理的应用内建平仓函数,可以帮助您有效的锁定风险并及时获利。

您可以组合使用内建平仓函数,也可以在自己的交易指令中调用内建平仓函数进行平仓,八个内建平仓函数如下:



关于ExitPosition

上述多个平仓函数都用到了参数ExitPosition,作为平仓函数仓位控制的重要参数,有必要对该参数进行单独说明。

ExitPosition是布尔型参数,当ExitPosition=True时,表示将当前所有的持仓作为一个整体,根据其平均建仓成本,计算各平仓函数的盈亏,当条件满足时,会将所有仓位一起平掉;当ExitPosition=False时,表示单独对每个建仓位置进行平仓,单独计算各平仓函数盈亏时,当单个建仓位置条件满足后,平掉该建仓位置即可。

[ 本帖最后由 小米 于 2007-9-3 11:57 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
12#
发表于 2007-9-3 12:18:59 |显示全部楼层
TradeBlazer公式入门教程(13)


Step17


在技术分析中设置报警

公式报警
TradeBlazer公式提供报警功能,您可以在3类技术分析(技术指标,K线型态,特征走势)中通过Alert函数来实现报警。

您可以在这3类公式中按照以下方式来编写自己的报警:
  1. Vars
  2.     Bool Condition1;
  3. Begin
  4.     Condition1 = 您设定的条件表达式;
  5.     If(AlertEnabled AND Condition1)
  6.     {
  7.         Alert("报警信息...");
  8.     }
  9. End
复制代码
当公式编译保存成功之后,您可以将其应用在超级图表中,通过报警属性页(帮助--公式系统--TradeBlazer公式应用--公式属性)启动报警。当条件满足之后,将会产生报警信息,并发送到消息中心(帮助--系统基础--消息中心)。

Step18

交易策略-完整的交易系统

通常单个交易指令只完成建仓或平仓的单个动作,而一个完整的交易策略应该至少包含建仓、平仓交易指令,并且根据需要加上止损,获利等锁定风险和收益的交易指令。多个交易指令的组合才能更加有效的帮助我们完整的进行交易,因此,我们将多个交易指令的有效组合称之为交易策略。

交易策略的运行机制

假定我们创建一个交易策略,该交易策略由以下交易指令组成,并按照如下顺序应用到超级图表中。



当我们将该交易策略应用到超级图表上时,TradeBlazer公式将会从图表的第一个Bar开始执行交易策略,在第一个Bar上首先执行多头建仓指令A,可能会产生交易委托(开仓),该委托可能被设置为在当前Bar执行,也可以被设置为延迟到下一个Bar执行。当多头建仓指令A执行完成之后,将按顺序调用多头平仓指令B,同时该指令会判断当前的持仓状态,仓位等信息,当条件满足的时候会产生交易委托(平仓)。依次执行止损平仓指令C和获利平仓指令D,当四个交易指令在第一个Bar上都执行完之后,将会移到第二个Bar执行,这时候,系统会首先读取上一个Bar是否有延迟的交易委托,如果有延迟的交易委托,对这些委托先进行处理,然后像第一个Bar一样,依次调用各个交易指令。以此类推,从图表的第一个Bar到最后一个Bar,全部执行完成之后,整个交易策略执行完毕。在整个执行过程产生的所有交易委托被保存下来供超级图表模块显示或进行性能测试分析。

当交易策略应用在超级图表中时,您可以设置交易策略开平仓的显示风格以及颜色、线条等, 使之显示在超级图表中,如下图所示:



交易策略测试引擎

为了真实准确的模拟交易策略在过去时段的表现,并能在实时数据更新时使交易策略沿着预定的方向发展,TradeBlazer公式提供了一个强大的交易策略测试引擎,该处理引擎收集交易策略在历史过程中产生的所有委托单,将其应用在对应的图表中,并能根据交易设置创建交易策略性能测试报表供客户参考。

交易策略测试引擎包括了两大功能:历史数据测试和实时自动交易。历史数据测试分析交易策略在历史过程中的交易动作并计算出交易盈亏,收益等性能指数。实时自动交易收集实时数据,并根据实时数据生成相应的交易动作,条件满足时,将委托单直接发送到交易券商。

[ 本帖最后由 小米 于 2007-9-4 16:40 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
13#
发表于 2007-9-4 17:12:04 |显示全部楼层
TradeBlazer公式入门教程(14)


Step19


交易策略参数优化

在超级图表中插入一个或一个以上交易指令后,菜单和工具栏中的交易策略参数优化选项将会有效,您可以通过点击菜单项或工具栏使用该功能。

交易策略参数优化模块可对多个交易指令组合的所有参数进行优化,您可以通过参数设置界面对需要优化的参数进行设置,界面如下:



参数优化目标有以下七种选项:

     净利润最大: 以优化结果中的净利润最大为目标,保留指定数量的记录数;

     交易次数最大: 以优化结果中的交易次数最大为目标,保留指定数量的记录数;

     平均净利润最大: 以优化结果中的平均净利润最大为目标,保留指定数量的记录数;

     盈利因子最大: 以优化结果中的盈利因子最大为目标,保留指定数量的记录数;

     收益率最大: 以优化结果中的收益率最大为目标,保留指定数量的记录数;

     盈亏比率最大: 以优化结果中的盈亏比率最大为目标,保留指定数量的记录数;

     回报率最大: 以优化结果中的回报率最大为目标,保留指定数量的记录数。

通过双击参数项或点击参数设置按钮,对选中的参数项进行步长设置,界面如下:



您可以设置参数的最小值,步长及最大值,系统将会根据设置,产生从最小值到最大值之间按步长分布的参数列表。

在各项参数设置完成之后,点击确定按钮,将会进行参数优化的计算,参数优化计算过程中会显示优化的进程,时间,当前参数,最优参数以及优化目标等信息,您可以通过点击取消按钮终止计算。

寻找最优的参数。需防止过度优化。
寻找最稳定的系统。而不是最大化的系统。



注意: 根据优化参数设置的多少,优化时间可能长达几小时甚至数天,优化过程中,CPU将会大量被占用,您可以选择空闲的时间进行大量参数优化计算。


参数优化计算完成之后,将会显示出最优的记录,您可以通过工具栏的交易设置按钮修改交易参数,也可以通过重新优化按钮进行重新计算。

Step20

交易策略性能测试

在超级图表中插入一个或一个以上交易指令后,菜单和工具栏中的交易策略测试报表选项将会有效,您可以通过点击菜单项或工具栏使用该功能。

交易策略测试报表界面如下:



帐户分析按照五个方面对帐户进行分析,包括交易汇总、交易分析、交易记录、平仓分析、阶段总结、资产变化、图表分析和系统设置。

     交易汇总:按照多头交易、空头交易和全部交易列出当前交易策略的交易统计信息。

     交易分析:对当前策略的交易情况进行分析,包括交易分析、盈亏分析和连续盈亏分析。

     交易记录:按开仓平仓对所有交易进行配对组合,并计算盈亏及累计盈亏。

     平仓分析:按平仓记录对交易情况进行分析和汇总。

     阶段总结:按年、月对交易盈亏及次数进行统计。

     资产变化:列出资产的变化记录及统计信息。

     图表分析:按资产图表和盈亏图表两大类共十三小类对帐户进行图表分析。

     系统设置:显示交易策略的参数,设置以及数据等内容。

[ 本帖最后由 小米 于 2007-9-4 17:30 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 04:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部