- 精华
- 3
- 在线时间
- 12229 小时
- UID
- 5
- 积分
- 26584
- 帖子
- 12686
- 阅读权限
- 200
- 注册时间
- 2007-7-20
- 最后登录
- 2021-11-3
- 精华
- 3
- UID
- 5
- 积分
- 26584
- 帖子
- 12686
- 主题
- 49
- 阅读权限
- 200
- 注册时间
- 2007-7-20
- 最后登录
- 2021-11-3
|
TradeBlazer公式入门教程(12)
Step16
用户字段
用户字段因为暂时还末用到,所以这部分就先跳过不讲了
技术指标
技术指标是最常用的一类公式,它通过计算一系列的数学公式,在每个Bar都返回值,这些值在图表模块中输出为线条、柱状图、点等表现形式,通过分析图形特点、走势和曲线帮助客户分析行情走势,得出合理的交易判断。
当技术指标应用在图表中时,您可以设置技术指标各输出值的表现形式,以及颜色、粗细等,如下图的点,线,柱状图所示:
技术指标的使用规则归纳如下:
支持三种基本类型的参数定义,支持指定参数默认值;
不支持使用引用参数;
支持六种类型的变量定义,支持指定变量的默认值;
可以访问Data0-Data49个数据源的Bar数据;
可以访问行情数据、属性数据;
必须通过PlotNumeric、PlotBool、PlotString返回数据,返回数据类型为三种基本类型的组合;
可以输出多组数据,通过PlotNumeric、PlotBool、PlotString的第一个参数,即输出名称来区分输出数据;
可以支持Alert来进行报警;
技术指标可以调用所有的用户函数进行计算;
技术指标可以根据设置调用部分的系统函数;
技术指标在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。
示例,技术指标RSI,脚本如下:
- Params
- Numeric Length(14);
- Numeric OverSold(20);
- Numeric OverBought (80);
- Vars
- Numeric RSIValue(0);
- Numeric RSIColor(-1);
- Begin
- RSIValue = RSI(Close,Length);
- If (RSIValue > OverBought)
- {
- RSIColor = RED;
- }Else If (RSIValue < OverSold)
- {
- RSIColor = CYAN;
- }
- PlotNumeric("RSI1", RSIValue, RSIColor);
- PlotNumeric("超卖", OverSold);
- PlotNumeric("超买", OverBought);
-
- If CrossOver(RSIValue,OverSold)
- {
- Alert("Indicator exiting oversold zone");
- }
- If CrossUnder(RSIValue, OverBought)
- {
- Alert("Indicator exiting overbought zone");
- }
- End
复制代码
技术指标RSI调用RSI内建用户函数计算出结果,然后判断其返回值和超买,超卖的关系,设置显示颜色,并产生报警信息。
技术指标在输出数据时,我们是通过输出值的名称来进行识别,名称相同则认为是一个数据,如下的代码,后面语句的输出数据将会覆盖前面语句的输出数据。
- PlotNumeric("Test",10);
- PlotNumeric("Test",20);
复制代码
最后"Test"输出的数据为20,而不是10。
K线型态
K线型态是另外一种形式的技术分析公式,它对满足设定条件的Bar进行标记,使之醒目,便于客户进行分析。
当K线型态应用在图表中时,您可以设置其输出值的颜色、风格和粗细,如图所示:
K线型态的使用规则归纳如下:
支持三种基本类型的参数定义,支持指定参数默认值;
不支持使用引用参数;
支持六种类型的变量定义,支持指定变量的默认值;
可以访问Data0-Data49个数据源的Bar数据;
可以访问行情数据、属性数据;
必须通过PlotBar返回数据;
只能输出一组数据,用名称进行区分;
可以支持Alert来进行报警;
K线型态可以调用所有的用户函数进行计算;
K线型态可以根据设置调用部分的系统函数;
K线型态在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。
示例,K线型态十字星,脚本如下:
- Vars
- Bool Condition(False);
- Begin
- Condition = (Abs(Close-Open)*10<(High-Low)) And
- (High <> Close) And (Low <> Close);
- If (Condition)
- {
- PlotBar("SZX",High,Low)
- }
- End
复制代码
K线型态十字星判断条件,条件满足的情况下用PlotBar输出信息。
特征走势
特征走势是另外一种形式的技术分析公式,它对满足设定条件的Bar进行标记,使之醒目,便于客户进行分析。特征走势和K线型态有很多相似之处,最大的不同在于,K线型态和特征走势的数据输出方式。
当特征走势应用在图表中时,您可以设置其输出值的表现形式,以及颜色、风格和粗细,如图所示:
特征走势的使用规则归纳如下:
支持三种基本类型的参数定义,支持指定参数默认值;
支持使用引用参数;
支持六种类型的变量定义,支持指定变量的默认值;
可以访问Data0-Data49个数据源的Bar数据;
可以访问行情数据、属性数据;
必须通过PlotNumeric、PlotBool、PlotString返回数据,返回数据类型为三种基本类型的组合;
只能输出一组数据,用名称进行区分;
可以支持Alert来进行报警;
特征走势可以调用所有的用户函数进行计算;
特征走势可以根据设置调用部分的系统函数;
特征走势在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。
示例,特征走势创历史新高,脚本如下:
- Params
- Numeric Length(5);
- Vars
- Bool Condition(False);
- Begin
- Condition = (High ==Highest(High,Length)) ;
- If (Condition)
- {
- PlotNumeric("CLSXG",High)
- }
- End
复制代码
特征走势创历史新高判断条件,条件满足的情况下用PlotNumeric、PlotBool、PlotString输出信息。
交易指令
TradeBlazer公式提供一种简单的方法表达您的交易思想,那就是使用交易指令,一个简单的交易指令如下:
- If (Condition)
- Buy (1,Close);
复制代码
以上的语句表达的意思是:当某些条件满足了,将用当前Bar的收盘价买入1手指定商品。就像您平时通过经纪商进行交易操作一样,TradeBlazer公式提供四个系统函数和现实中的四种交易动作进行对应,如下:
交易指令的使用规则归纳如下:
支持三种基本类型的参数定义,支持指定参数默认值;
不支持使用引用参数;
支持六种类型的变量定义,支持指定变量的默认值;
可以访问Data0-Data49个数据源的Bar数据;
可以访问行情数据、属性数据;
通过Buy、Sell、SellShort和BuyToCover产生交易动作,也可以使用各种内建平仓指令产生交易动作;
每个交易指令至少包含一个交易动作;
交易指令可以调用所有的用户函数进行计算;
交易指令可以根据设置调用部分的系统函数;
交易指令在执行时,必须要指定相应的数据源和周期,需要调用历史数据的,只有历史数据存在的情况下才能返回正确的值。
示例,交易指令MACD_LE,脚本如下:
- Params
- Numeric FastLength( 12 );
- Numeric SlowLength( 26 );
- Numeric MACDLength( 9 );
- Numeric BuyLots(1);
- Vars
- NumericSeries MACDValue;
- NumericSeries AvgMACD;
- Numeric MACDDiff;
- Bool Condition1;
- Bool Condition2;
- Begin
- MACDValue = XAverage( Close, FastLength ) -
- XAverage( Close, SlowLength ) ;
- AvgMACD = XAverage(MACDValue,MACDLength);
- MACDDiff = MACDValue - AvgMACD;
- Condition1 = CrossOver(MACDValue, AvgMACD) ;
- Condition2 = MACDValue > 0;
- if (Condition1 And Condition2)
- {
- Buy(BuyLots,Close);
- }
- 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 编辑 ] |
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|