文档视界 最新最全的文档下载
当前位置:文档视界 › 交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例
交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例(TB)(转)

2012年07月27日22:35

原文地址:交易开拓者代码学习各种买卖指令及实例(TB)(转)作者:竹本无青

各种买卖指令

Buy

说明产生一个多头建仓操作。

语法Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False)

参数Share 买入数量,为整型值,默认为使用系统设置参数;

Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。

该函数仅用于多头建仓,其处理规则如下:

如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。

如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。

如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。

示例在MarketPosition=0的情况下:

Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。

Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。

Buy(5,0) 表示用现价买入5张合约,马上发送委托。

BuyToCover

说明产生一个空头平仓操作。

语法BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False)

参数Share 买入数量,为整型值,默认为平掉当前所有持仓;

Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。备注产生一个空头平仓操作,无返回值,该函数仅支持交易指令。

该函数仅用于空头平仓,其处理规则如下:

如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。

如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数不执行任何操作。

如果当前持仓状态为空仓,即MarketPosition = -1 时,如果此时Share使用默认值,该函数将平掉所有空仓,达到持平的状态,否则只平掉参数Share的空仓。

示例在MarketPosition = -1的情况下:

BuyToCover(50,10.2,1) 表示用10.2的价格空头买入50张合约,延迟到下一个Bar发送委托。BuyToCover(10,Close) 表示用当前Bar收盘价空头买入10张合约,马上发送委托。BuyToCover(5,0) 表示用现价空头买入5张合约),马上发送委托。

sell

说明产生一个多头平仓操作。(BK)

语法Sell(Numeric Share=0,Numeric Price=0,Bool Delay=False)

参数Share 卖出数量,为整型值,默认为平掉当前所有持仓;

Price 卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

Delay 卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。备注产生一个多头平仓操作,无返回值,该函数仅支持交易指令。

该函数仅用于多头平仓,其处理规则如下:

如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。

如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数不执行任何操作。

如果当前持仓状态为多仓,即MarketPosition = 1 时,如果此时Share使用默认值,该函数将平掉所有多仓,达到持平的状态,否则只平掉参数Share的多仓。

示例在MarketPosition=0的情况下:

Sell(50,10.2,1) 表示用10.2的价格卖出50张合约,延迟到下一个Bar发送委托。

Sell(10,Close) 表示用当前Bar收盘价卖出10张合约,马上发送委托。

Sell(5,0) 表示用现价卖出5张合约,马上发送委托。

sellshort

说明产生一个空头建仓操作。

语法SellShort(Numeric Share=0,Numeric Price=0,Bool Delay=False)

参数Share 卖出数量,为整型值,默认为使用系统设置参数;

Price 卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

Delay 卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。备注产生一个空头建仓操作,无返回值,该函数仅支持交易指令。

该函数仅用于空头建仓,其处理规则如下:

如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行空头建仓。

如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数首先平掉所有多仓,达到持平的状态,然后再按照参数进行空头建仓。

如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。

示例在MarketPosition=0的情况下:

SellShort(50,10.2,1) 表示用10.2的价格空头卖出50张合约,延迟到下一个Bar发送委托。SellShort(10,Close) 表示用当前Bar收盘价空头卖出10张合约,马上发送委托。SellShort(5,0) 表示用现价空头卖出5张合约,马上发送委托。

对应的BPK,SPK,你清楚了吗

函数名描述

Buy 平掉所有空头持仓,开多头仓位。(*BPK*)

Sell 平掉指定的多头持仓。

SellShort 平掉所有多头持仓,开空头仓位。(*SPK*)

BuyToCover 平掉指定的空头持仓。

获得当前持仓状态,太妙了

MarketPosition

说明获得当前持仓状态。

语法Integer MarketPosition()

参数无

备注获得当前持仓状态,返回值为整型,该函数仅支持交易指令。

返回值定义如下:

-1 当前位置为持空仓

0 当前位置为持平

1 当前位置为持多仓

示例无

内建平仓指令--精华之特色

内建平仓指令

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

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

函数名描述

SetExitOnClose 该平仓函数用来在当日收盘后产生一个平仓动作,将当前所有的持仓按当日收盘价全部平掉。

SetBreakEven 该平仓函数在获利条件满足的情况下启动,当盈利回落达到保本时产生平仓动作,平掉指定的仓位。

SetStopLoss 该平仓函数在亏损达到设定条件时产生平仓动作,平掉指定的仓位。

SetProfitTarget 该平仓函数在盈利达到设定条件时产生平仓动作,平掉指定的仓位。

SetPeriodTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。

SetPercentTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。

SetDollarTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。

SetInactivate 该平仓函数在设定时间内行情一直在某个幅度内波动时产生平仓动作,平掉指定的仓位。

关于ExitPosition

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

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

触发单

触发单

触发单是交易开拓者特有的交易方式,触发单是指用户设置条件,将触发单提交到交易开拓者的交易服务器,当设定条件满足情况,交易服务器会自动发送委托到交易所。触发单可以帮助解决用户盯盘的辛苦,及手动发单的速度问题。

触发单分为以下四种类型:吊买、吊卖、追买、追卖。

每个触发单在发送时需要输入以下参数:

触发价格:触发单设定的条件价格,通过比较现价和触发价格确定是否下单。下单之后,该触发单会从交易服务器中删除;

执行价格:条件满足之后,发送委托的价格,设定为0可自动获取当时的叫买/卖价;

过期时间:设定触发单的过期时间,到这个时间还没有触发的订单会被设为过期,不再进行监控。

吊买

吊买是指当现价向下跌破触发价格,即按执行价格产生一个即时买入委托单,如下图所示:吊卖

吊卖是指当现价向上突破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:追买

追买是指当现价向上突破触发价格,即按执行价格产生一个即时买入委托单,如下图所示:追卖

追卖是指当现价向下跌破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:

修改或删除触发单

当存在某个商品的触发单,可通过双击帐户管理的触发单页面的项目,打开交易师,进行修

改或删除操作。您可以修改数量、触发单类型、触发价格、执行价格、过期时间及止损获利等,完成修改之后,点击[修改]按钮即可完成修改;您可以直接点击[删除]按钮将该触发单删除。

注意: 触发单在发送之后将会生效,该委托单在服务器上运行,此时您关闭程序或电脑不会影响触发单的执行。

SetPercentTrailing(2000,0.2,True); 又是一个宝

SetPercentTrailing(2000,0.2,True); 当前所有持仓盈利在大于2000之后回落,当回落百分比达到20%之后,执行所有持仓位置的百分比回落平仓。(此时是计算所有持仓的盈利数)

SetPercentTrailing(1000,0.1,False); 当前持仓的某一个建仓位置的盈利大于1000之后回落,当回落百分比达到10%之后,执行该持仓位置的百分比回落平仓。(此时只计算该持仓位置的盈利)

SetStopLoss(0,2000,True); 当前所有持仓亏损达到2000之后,执行所有持仓位置的止损平仓。(此时是计算所有持仓的亏损数)

SetStopLoss(1,50, False); 当前持仓的某一个建仓位置每张合约的亏损达到50之后,执行该持仓位置的止损平仓。(此时只计算该持仓位置的每张合约亏损)

SetBreakEven(0,2000,True); 当前所有持仓的盈利达到2000之后,启动所有持仓位置的保本平仓。(此时是计算所有持仓的盈利数)

SetBreakEven(1,50, False); 当前持仓的某一个建仓位置每张合约的盈利达到50之后,启动该持仓位置的保本平仓。(此时只计算该持仓位置的每张约的盈利)

精华中精华文华所没有实现复杂策略工具一

循环语句

循环语句包括两种表达方式:For和While。

For

For语句是一个循环语句,重复执行某项操作,直到循环结束。

语法如下:

For 循环变量= 初始值To 结束值

{

TradeBlazer公式语句;

}

循环变量为在之前已经定义的一个数值型变量,For循环的执行是从循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。只计算其整数部分。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

第一次执行时,首先将循环变量赋值为初始值,然后判断循环变量是否小于等于结束值,如果满足条件,则执行TradeBlazer公式语句,同时循环变量加1。接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。

例如,以下的用户计算Price最近Length周期的和。

Params

NumericSeries Price(1);

Numeric Length(10);

Vars

Numeric SumValue(0);

Numeric i;

Begin

for i = 0 to Length - 1

{

SumValue = SumValue Price[ i ];

}

Return SumValue;

End

如果希望For语句从大到小进行循环,可以使用以下的语法:

For 循环变量= 初始值DownTo 结束值

{

TradeBlazer公式语句;

}

For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义。

For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。

While

While语句在条件为真的时候重复执行某一项操作。即,只要条件表达式的值为真(True)时,就重复执行某个动作。直到行情信息改变以致条件为假(False)时,循环才结束。

语法如下:

While (Condition)

{

TradeBlazer公式语句;

}

Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被循环执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,以下的公式用来计算要产生大于100000成交量需要最近Bar的个数:

Vars

Numeric SumVolume(0);

Numeric Counter (0);

Begin

While (SumVolume < 100000)

{

SumVolume = SumVolume Vol[Counter]

Counter = Counter 1;

}

End

首先,我们定义两个变量SumVolume和Counter,并将其默认值设为0。当SumVolume <100000这个表达式为True时,While内的TradeBlazer公式语句一直被调用,将前Counter个Bar的Vol加到SumVolume中,当SumVolume大于等于100000时,退出循环。

在使用While循环的时候,有可能会遇到循环一直执行,永远不能退出的情况,这种情况我们称之为死循环,比如下面的语句;

While (True)

{

TradeBlazer公式语句;

}

在这种情况下,循环将一直执行,导致程序不能继续工作,在这种情况,我们可以使用Break 来跳出循环,详细情况参加下节。

针对上节的例子,要想从死循环中跳出,我们可以在循环之中添加Break语句,如下:

While (True)

{

TradeBlazer公式语句;

If (Condition)

Break;

}

循环在每次执行后,都将判断Condition的值,当Condition为True时,则执行Break语句,跳出整个循环。

Continue

有的时候在循环中,我们可能希望跳过后面的代码,进入下一次循环,在这种情况下,可以使用Continue语句来达到目的,如下:

While (Condition1)

{

TradeBlazer公式语句1;

If (Condition2)

Continue;

TradeBlazer公式语句2;

}

当Condition1满足时,循环被执行,在执行完TradeBlazer公式语句1后,将判断Condition2的值,当Condition2为True,将跳过TradeBlazer公式语句2,重新判断Condition1的值,进入下一次循环。否则将继续执行TradeBlazer公式语句2。

精华中精华文华所没有实现复杂策略工具二

控制语句

TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。

条件语句

条件语句包括以下四类表达方式:

If

If语句是一个条件语句,当特定的条件满足后执行一部分操作。

语法如下:

If (Condition)

{

TradeBlazer公式语句;

}

Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,您可以计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下:

Vars

NumericSeries Counter(0);

Begin

If ( Open > High[1])

{

Counter = Counter[1] 1;

...

}

...

End

在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If 语句,当条件满足的时候,在满足条件的Bar上面进行标记。例如,下面的语句就是特征走势的例子:

If(High > High[1] AND Low < Low[1])

{

PlotNumeric(High,"Outside Bar");

}

If语句在不是用括号的情况,只执行下面的第一条语句,如下的语句,Alert不会只在条件为True时执行,而是每次都执行。

If(High > High[1] AND Low < Low[1])

PlotNumeric(High,"Outside Bar");

Alert("Outside Bar");

要想Alert只在条件为True时执行,您需要按照下面的格式编写:

If(High > High[1] AND Low < Low[1])

{

PlotNumeric(High,"Outside Bar");

Alert("Outside Bar");

}

If-Else

If-Else语句是对指定条件进行判断,如果条件满足执行If后的语句。否则执行Else后面的语句。

语法如下:

If (Condition)

{

TradeBlazer公式语句1;

}Else

{

TradeBlazer公式语句2;

}

Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句1将会被执行;Condition为False时,TradeBlazer公式语句2将会被执行。Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,比较当前Bar和上一个Bar的收盘价,如果Close > Close[1],Value1 = Value1 Vol;否则Value1 = Value1 - Vol,脚本如下:

If (Colse > Close[1])

Value1 = Value1 Vol;

Else

Value1 = Value1 - Vol;

If-Else-If

If-Else-If是在If-Else的基础上进行扩展,支持条件的多重分支。

语法如下:

If (Condition1)

{

TradeBlazer公式语句1;

}Else If(Condition2)

{

TradeBlazer公式语句2;

}Else

{

TradeBlazer公式语句3;

}

Condition1是一个逻辑表达式,当Condition1为True的时候,TradeBlazer公式语句1将会被执行,Condition1为False时,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句2将会被执行。Condition2为False时,TradeBlazer公式语句3将会被执行。Condition1,Condition2可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

If-Else-If的语句可以根据需要一直扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支,语法如下:

If (Condition1)

{

TradeBlazer公式语句1;

}Else If(Condition2)

{

TradeBlazer公式语句2;

}

If-Else的嵌套

If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。

语法如下:

If (Condition1)

{

If (Condition2)

{

TradeBlazer公式语句1;

}Else

{

TradeBlazer公式语句2;

}

}Else

{

If (Condition3)

{

TradeBlazer公式语句3;

}Else

{

TradeBlazer公式语句4;

}

}

Condition1是一个逻辑表达式,当Condition1为True的时候,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句1将会被执行。Condition2为False时,TradeBlazer 公式语句2将会被执行。当Condition1为False的时候,将会继续判断Condition3的值,当Condition3为True时,TradeBlazer公式语句3将会被执行。Condition3为False时,TradeBlazer 公式语句4将会被执行。Condition1,Condition2,Condition3可以是多个条件表达式的逻辑

组合,条件表达式必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,在一个交易指令中,条件设置如下:当前行情上涨的时候,如果收盘价高于开盘价时,则产生一个以收盘价买入1张合约;否则产生一个以开盘价买入1张合约。当前行情没有上涨的时候,如果收盘价高于开盘价,则产生一个以收盘价卖出1张合约;否则产生一个以开盘价卖出1张合约。脚本如下:

If (Open > High[1])

{

If (Close>Open)

{

Buy(1,Open);

}Else

{

Buy(1,Close);

}

}Else

{

If (Close > Open)

{

Sell(1,Open);

}Else

{

Sell (1,Close);

}

}

SetDollarTrailing (2000,True); 当前所有持仓盈利在回落达到2000之后,执行所有持仓位置的价值回落平仓。(此时是计算所有持仓的盈利数)

SetDollarTrailing (1000,False); 当前持仓的某一个建仓位置的盈利在回落达到1000之后,执行该持仓位置的价值回落平仓。(此时只计算该持仓位置的盈利)

说明当日收盘全部平仓。

语法SetExitOnClose()

参数无

备注当日收盘全部平仓,无返回值,该函数仅支持交易指令。

在当日收盘之后以收盘价全部平仓,将持仓状态变为持平,该函数仅用于历史数据测试,在小于1日线的周期情况下,该操作在建仓日期的最后一个Bar上执行,在1日线及以上的周期中,该操作以建仓Bar的收盘价在同一Bar内执行。在自动交易中因为收盘之后不一定能够保证成功发送委托,所以该函数延迟到第二天的开盘发送。

PositionProfit

说明获得当前持仓位置的浮动盈亏。

语法Numeric PositionProfit()

参数无

备注获得当前持仓位置的浮动盈亏,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。

只有当MarketPosition != 0时,即有持仓的状况下,该函数才有意义,否则返回0。

当前持仓的平均建仓价格

说明获得当前持仓的平均建仓价格。

语法Numeric AvgEntryPrice()

参数无

备注获得当前持仓的平均建仓价格,返回值为浮点数,该函数仅支持交易指令。

示例无

当前持仓位置的每手浮动盈亏

说明获得当前持仓位置的每手浮动盈亏。

语法Numeric ContractProfit()

参数无

备注获得当前持仓位置的每手浮动盈亏,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。

只有当MarketPosition != 0时,即有持仓的状况下,该函数才有意义,否则返回0。

获得当前的可用资金

CurrentCapital

说明获得当前的可用资金。

语法Numeric CurrentCapital()

参数无

备注获得当前的可用资金,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。

根据参数进行获利平仓操作

SetProfitTarget (0,2000,True); 当前所有持仓盈利达到2000之后,执行所有持仓位置的获利平仓。(此时是计算所有持仓的盈利数)

SetProfitTarget (1,50, False); 当前持仓的某一个建仓位置每张合约的盈利达到50之后,执行该持仓位置的获利平仓。(此时只计算该持仓位置的每张合约盈利)

第一课:实例之战

一个文华交易系统的移植例子

多空趋势-交易系统之文华的公式脚本:

[Copy to clipboard] [ - ]CODE:

MA1:=EMA(CLOSE,16);

MA2:=EMA(CLOSE,35),COLORYELLOW;

MA3:=EMA(CLOSE,60);

MA4:=REF(HIGH,1);

LOWV:=LLV(LOW,9);

HIGHV:=HHV(HIGH,9);

RSV:=EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,3);

K:=EMA(RSV,3);

D:=MA(K,3);

MV5:=MA(VOL,5);

KK:=REF(K,1);

PP:=REF(LOW,1);

VAR3:=(2*CLOSE HIGH LOW)/4;

VAR4:=LLV(LOW,33);

VAR5:=HHV(HIGH,33);

ZL:=EMA((VAR3-VAR4)/(VAR5-VAR4)*100,17);

SH:=EMA(0.667*REF(ZL,1) 0.333*ZL,2);

LC:=REF(CLOSE,1);

RSI:=SMA(MAX(CLOSE-LC, 0), 6, 1)/SMA(ABS(CLOSE-LC), 6, 1)*100;

CROSS(CLOSE,MA1)&&(K>D)&&(ZL>SH)||CROSS(MA1,MA2)&&(ZL>SH)&&(VOL>1.25*MV5)&&(K >D)||CROSS(K,D)&&(CLOSE>MA1)&&(ZL>SH)||CROSS(RSI,70),BK;

CROSS(PP,CLOSE)&&(D>K)&&(SH>ZL)||CROSS(D,K)&&(CLOSEZL),SK;

CROSS(D,K)||(CLOSE

CROSS(K,D)||(CLOSE>MA1*1.001),BP;

TradeBlazer公式代码:

[Copy to clipboard] [ - ]CODE:

//------------------------------------------------------------------------

// 简称: Test

// 名称: 多空趋势交易系统

// 类别: 交易指令

// 类型: 其他

// 输出:

//------------------------------------------------------------------------ Params

Numeric Length1(16);

Numeric Length2(35);

Numeric Length3(9);

Numeric Lots(1);

Vars

NumericSeries Value1;

NumericSeries Value2;

Numeric LowestValue;

NumericSeries Value5;

NumericSeries RSV;

NumericSeries KValue;

NumericSeries DValue;

Numeric AvgVol5;

NumericSeries CloseTmp1;

NumericSeries CloseTmp2;

NumericSeries RSIValue;

NumericSeries PreLow;

NumericSeries PreKValue;

Numeric Lowest33Value;

NumericSeries VarTmp1;

NumericSeries VarTmp2;

NumericSeries ZL;

Numeric SH;

Begin

Value1 = XAverage(Close,Length1);

Value2 = XAverage(Close,Length2);

//取两条均线的值

LowestValue = Lowest(Low,Length3);

//取最低值

Value5 = (CLOSE-LowestValue)/(Highest(High,Length3)-LowestValue)*100;

RSV = XAverage(Value5,3);

KValue = XAverage(RSV,3);

DValue = Average(KValue,3);

PreKValue = KValue[1];

PreLow = Low[1];

AvgVol5 = Average(Vol,5);

Lowest33Value = Lowest(Low,33);

VarTmp1 =((2*CLOSE HIGH LOW)/4 - Lowest33Value )/(Highest(High,33) - Lowest33Value) * 100; ZL = XAverage(VarTmp1,17);

VarTmp2 = 0.667*ZL[1] 0.333*ZL;

SH = XAverage(VarTmp2,2);

CloseTmp1 = Max(Close - Close[1], 0);

CloseTmp2 = Abs(Close - Close[1]);

RSIValue = WAverage(CloseTmp1,6)/WAverage(CloseTmp2,6) *100;

//以上为KD部分只要如何换书写方式就可了,,higest ==hhv lowest==llv xAverager=ma

交易开拓者函数一览表文华对照)

交易开拓者函数一览表(文华对照) 交易开拓者文华 数学函数 绝对值Abs ABS(X)反余弦值Acos ACOS(X)反双曲余弦值Acosh 反正弦值Asin ASIN(X)反双曲正弦值Asinh 反正切值Atan ATAN(X)给定的X及Y坐标值的反正切值Atan2 反双曲正切值Atanh 沿绝对值增大方向按基数舍入Ceiling

从给定数目的对象集合中提取若干对 Combin 象的组合数 余弦值Cos COS(X)双曲余弦值Cosh 余切值Ctan 沿绝对值增大方向取整后最接近的偶 Even 数 e的N次幂Exp EXP(X)数的阶乘Fact 沿绝对值减少的方向去尾舍入Floor 实数舍入后的小数值FracPart 实数舍入后的整数值IntPart 自然对数Ln LN(X)

对数Log LOG(X) 余数Mod MOD(A,B)负绝对值Neq 指定数值舍入后的奇数Odd 返回PI Pi 给定数字的乘幂Power POW(A,B) 随机数Rand 按指定位数舍入Round 靠近零值,舍入数字RoundDown 远离零值,舍入数字RoundUp 数字的符号Sign SGN(X) 正弦值Sin

双曲正弦值Sinh SIN(X) 平方Sqr SQUARE(X)正平方根Sqrt SQRT(X) 正切值Tan TAN(X) 双曲正切值Tanh 取整Trunc INTPART(X)字符串函数 测试是否相同Exact 返回字符串中的字符数Len 大写转小写Lower 数字转化为字符串Text 取出文本两边的空格Trim

小写转大写Upper 文字转化为数字Value 颜色函数 黑色Black COLORBLACK 蓝色Blue COLORBLUE 青色Cyan COLORCYAN 茶色DarkBrown 深青色DarkCyan 深灰色DarkGray 深绿色DarkGreen 深褐色DarkMagenta 深红色DarkRed

交易开拓者止损止盈

TB源码: Params Numeric Length1(10); // 短均线周期 Numeric Length2(20); // 长均线周期 Numeric InitialStop(20); // 初始止损比例*1000 Numeric BreakEvenStop(30); // 保本止损比例*1000 Numeric TrailingStop(50); // 追踪止损比例*1000 Numeric Lots(1); // 头寸大小 Vars NumericSeries MA1; NumericSeries MA2; BoolSeries condBuy(false); // 做多条件 BoolSeries condSell(false); // 做空条件 Numeric MinPoint; Numeric MyPrice; NumericSeries LowerAfterEntry; // 空头盈利峰值价 BoolSeries bShortStoped(false); // 当前均线空头趋势下是否有过一次进场Numeric StopLine(0); Begin // 把上一根bar的出场状况传递过来 if (BarStatus > 0) { bShortStoped = bShortStoped[1]; } Commentary("bShortStoped="+IIFString(bShortStoped,"true","false")); // 传递或比较盈利峰值价 If(BarsSinceEntry >= 1) { LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]); } Else { LowerAfterEntry = LowerAfterEntry[1]; } Commentary("LowerAfterEntry="+Text(LowerAfterEntry)); // 过滤集合竞价 If((BarType==1 or BarType==2) && date!=date[1] && high==low) return; If(BarType==0 && CurrentTime<=0.09 && high==low) return; MinPoint = MinMove * PriceScale; MA1 = AverageFC(Close,Length1); MA2 = AverageFC(Close,Length2); PlotNumeric("MA1",MA1); PlotNumeric("MA2",MA2);

开拓者代码(2)代码学习各种买卖指令及实例

各种买卖指令 Buy 说明产生一个多头建仓操作。 语法Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False) 参数Share 买入数量,为整型值,默认为使用系统设置参数; Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close); Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。 该函数仅用于多头建仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。 如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。 如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 示例在MarketPosition=0的情况下: Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。 Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。 Buy(5,0) 表示用现价买入5张合约,马上发送委托。 BuyToCover 说明产生一个空头平仓操作。 语法BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False) 参数Share 买入数量,为整型值,默认为平掉当前所有持仓; Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close); Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注产生一个空头平仓操作,无返回值,该函数仅支持交易指令。 该函数仅用于空头平仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。 如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数不执行任何操作。 如果当前持仓状态为空仓,即MarketPosition = -1 时,如果此时Share使用默认值,该函数将平掉所有空仓,达到持平的状态,否则只平掉参数Share的空仓。 示例在MarketPosition = -1的情况下: BuyToCover(50,10.2,1) 表示用10.2的价格空头买入50张合约,延迟到下一个Bar发送委托。BuyToCover(10,Close) 表示用当前Bar收盘价空头买入10张合约,马上发送委托。BuyToCover(5,0) 表示用现价空头买入5张合约),马上发送委托。 sell 说明产生一个多头平仓操作。(BK) 语法Sell(Numeric Share=0,Numeric Price=0,Bool Delay=False) 参数Share 卖出数量,为整型值,默认为平掉当前所有持仓; Price 卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close); Delay 卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注产生一个多头平仓操作,无返回值,该函数仅支持交易指令。 该函数仅用于多头平仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。 如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数不执行任何操作。 如果当前持仓状态为多仓,即MarketPosition = 1 时,如果此时Share使用默认值,该函数将平掉所有多仓,达到持平的状态,否则只平掉参数Share的多仓。 示例在MarketPosition=0的情况下:

交易开拓者(TB)编程初级篇

交易开拓者(TB)期货程序化交易编程 本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。 TB里面代码执行 1,代码从第一根K线开始执行,一直到最后一根K线; 2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行; 我们就写个输出每日的收盘价的例子; 打开TB,在左边的TB公式里面,点击新建技术指标, 然后在出来的公式编辑器里面输入 Begin End 注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间 我们再在Begin和End之间输入一些代码,完整的就是: Begin FileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"); FileAppend("C:\\",Text(Close)); End 我们再说说这两行代码是什么意思 File就是文件,Append就是添加,现在明白了吧 FileAppend就是添加一个文件,文件名是什么呢就是你后面写的,这个文件的路径在哪里呢就是c:\\里面的C盘,且在这个文件里面添加一行东西, 这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于" 当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容 好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串 CloseK线的收盘价啊,如果代码执行到最后的那根K线 我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了 我们在回到K线图里面,TB把K线图叫做超级图表 在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,点确定后,你就看到在K线图里面只显示了5跟K线, 当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的 我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯FileAppend("c:\\",很明显,文件是在c盘的,文件的名字是 好了,我们到c盘找到文件,双击打开,我们就会看到下面的内容: 2007年9月24日的收盘价等于 67280 2007年9月25日的收盘价等于 67800 2007年9月26日的收盘价等于 67160 2007年9月27日的收盘价等于 67300 2007年9月28日的收盘价等于 68020

开拓者函数集

数学函数 Abs: 返回参数的绝对值。 Acos: 返回参数的反余弦值。 Acosh: 返回参数的反双曲余弦值。 Asin: 返回参数的反正弦值。 Asinh: 返回参数的反双曲正弦值。 Atan: 返回参数的反正切值。 Atan2: 返回给定的X及Y坐标值的反正切值。 Atanh: 返回参数的反双曲正切值。 Ceiling: 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数Significance的最小倍数。 Combin: 计算从给定数目的对象集合中提取若干对象的组合数。 Cos: 返回给定角度的余弦值。 Cosh: 返回参数的双曲余弦值。 Ctan: 返回给定角度的余切值。 Even: 返回沿绝对值增大方向取整后最接近的偶数。 Exp: 返回e的Number次幂。 Fact: 返回数的阶乘。 Floor: 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 Significance 的倍数。 FracPart: 返回实数舍入后的小数值。 IntPart: 返回实数舍入后的整数值。 Ln: 返回一个数的自然对数。 Log: 按所指定的底数,返回一个数的对数。

Mod: 返回两数相除的余数。 Neg: 返回参数的负绝对值。 Odd: 返回对指定数值进行舍入后的奇数。 Pi: 返回数字3.1415926535898。 Power: 返回给定数字的乘幂。 Rand: 返回位于两个指定数之间的一个随机数。 Round: 返回某个数字按指定位数舍入后的数字。RoundDown: 靠近零值,向下(绝对值减小的方向)舍入数字。RoundUp: 远离零值,向上(绝对值增大的方向)舍入数字。Sign: 返回数字的符号。 Sin: 返回给定角度的正弦值。 Sinh: 返回某一数字的双曲正弦值。 Sqr: 返回参数的平方。 Sqrt: 返回参数的正平方根。 Tan: 返回给定角度的正切值。 Tanh: 返回某一数字的双曲正切值。 字符串函数 Exact: 该函数测试两个字符串是否完全相同。 Left: 返回文本串的前lCount位。 Len: 返回文本串中的字符数。 Lower: 将一个文字串中的所有大写字母转换为小写字母。Mid: 返回文本串的后lCount位。

从一无所知开始学习交易开拓者(TB)期货程序化交易编程

从一无所知开始学习交易开拓者(TB)期货程序化交易编程 经常会看到很多朋友问:帮我写个公式怎么样啊?帮我把某个公式改成TB的怎么样啊? 我想出现这种情况的原因有两种: 一是真的不会,毕竟做期货的会编程的不多; 二是自己如果多花点时间的话是弄的出来,但是有点懒; 我想无论是哪种原因,都应该好好的学习下TB,因为真正的你的交易思路只有你自己才清楚 而且也只有你自己去把你的交易思路用TB表现出来你才能更清楚的知道你的交易思维中有何缺点 但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了 所以本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料,如果您是高手,请忽略此文,以免耽误您的时间. 我先不说那些专业术语,什么变量,函数和语法的,我们先不管他,以免看的头晕. 我想先说说在TB中代码的执行顺序,也就是说在TB的K线图(TB把K线叫做Bar)里面你写的公式或者指标是如何得到执行的; 我想这个东西是最重要而且也是最好理解的. 在其他的期货软件比如文华飞狐一类,我们是无法知道你写的公式是如何执行的,甚至我们不知道我们写出来的公式是不是真的 就体现出了我们的思想,因为你写的公式或者指标是被这些软件在幕后进行处理的,是黑箱操作! 而TB不同,我们能够清楚的看到你写的代码在任意一根K线上是如何得到执行的!!!! 好了,先说说在TB里面代码是如何得到执行的. 1,代码从第一根K线开始执行,一直到最后一根K线; 2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行; 明白了吧,是不是很简单,我们先看一个小例子,如果您还不明白,那只能说我完全没有任何能力写这文章,您就板砖吧 我们就写个输出每日的收盘价的例子; 打开TB,在左边的TB公式里面,点击新建技术指标,新建其他的也没有关系,然后在出来的对话框的简称里面填入名字,记住,这个名字只能是E文哦 在名字里面填入你喜欢的名字,点确定就OK了啊 然后在出来的公式编辑器里面输入 Begin End 注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间 意思很简单 就是Begin后,你的代码就开始执行了,End了,你的代码就执行完毕拉 呵呵 我们再在Begin和End之间输入一些代码,完整的就是: Begin FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"); FileAppend("C:\\a.log",Text(Close));

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例(TB)(转) 2012年07月27日22:35 原文地址:交易开拓者代码学习各种买卖指令及实例(TB)(转)作者:竹本无青 各种买卖指令 Buy 说明产生一个多头建仓操作。 语法Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False) 参数Share 买入数量,为整型值,默认为使用系统设置参数; Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close); Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。 该函数仅用于多头建仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。 如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。 如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 示例在MarketPosition=0的情况下: Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。 Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。 Buy(5,0) 表示用现价买入5张合约,马上发送委托。 BuyToCover 说明产生一个空头平仓操作。 语法BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False) 参数Share 买入数量,为整型值,默认为平掉当前所有持仓; Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

实习生笔试题2_金融工程和量化交易岗v7

鋆石 敦敏资产管理有限公司-上海量化对冲基金团队 实习生笔试题 金融工程和量化交易岗 【工作内容提示】您将加入一个华尔街海归团队,从事高频量化和程序化交易方面的工作,您将从事量化投资、高频交易、海量数据发掘等全世界最激动人心的前沿技术工作!如果您工作业绩出众,将往投资岗位培养。我们的宗旨是:技术为先,数据为王! 【提示】请注意尽量回答每道题。要求有深度、有干货、全面、细致、逻辑正确、语句通顺、表达清晰、格式美观。这既是对现有能力和经验的测试,更是对学习能力、网络搜索能力和鉴别能力的测试。如果您暂时不具备这方面的能力和经验,也不要紧,您可以通过搜索和快速学习网络上的干货来弥补。可以摘抄网络及其他方的资料。但要注明哪些是您的现有能力和经验(即原创性内容),哪些是摘抄,并一定要详细注明出处供查核(不注明可供查验的出处,将被扣分)。在进行网络搜索的时候,请尽量先使用谷歌,然后是百度。请注意搜索能力也是一种智力。回答越有深度越有广度得分越高、并兼顾其他要求。提交答案的时候,可以将辅助和参考文档(比如各种参考书籍、文献、网页、源程序等)的源文件做成PDF(要求是PDF格式,请把其他如caj等格式转化为PDF格式),打包上传。 请注意因为量化岗应聘人数非常多,竞争非常激烈。您的答题的深度、广度和细致程度将决定您的排名。工作态度和实力同样重要!我们原则上不招收本科生。不过,可以对特别优秀满足以下条件的本科生破格录取:奥赛奖牌得主,有相关工作经验的,在量化方面有突出成绩的,有实盘经验的,有数理统计方面有突出成绩的,在计算机编程开发方面有突出成绩,研究能力等同博士研究生级别的等等。如果您是本科生,请您在答题的时候更加勤勉,并从深度、广度和快速学习能力等方面展现自己的亮点。也可在简历上加注自己的亮点。 【最终提交内容– 全部打包上传。不全的将无法进入下一轮】 1.简历 2.笔试答案(PPT或者WORD。请注意,答题的时候,先复述一下您所回答的题目,以 便阅卷) 3.辅助和参考文档要求是干货,不能是简单的网页新闻。注意不要忘了!一定要上传各种 参考书籍、文献和网页!要求是PDF格式,请把其他如caj等格式转化为PDF格式。 4.各项展示自己智力和能力的证明(可选):比如本科成绩单,展示自己达到博士研究水 平,金融工程和量化交易方面的项目等。要求是常用的文件格式,便于打开(请把其他

TB公式编程官方基础教程1

TradeBlazer公式的结构与编程 目录 页码一、TB的程序化交易的功能与特点 4 1-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 6 2-1、Bar数据 6 2-2、计算方法 6 2-3、叠加数据 8 2-4、行情数据 9 2-5、属性数据 9 三、TB公式编程基础知识 9 3-1、TB的公式的结构 9 3-2、公式名称规则 11 3-3、语句写法 11 四、参数的说明与应用 21 4-1、参数说明 22 4-2、参数的使用与说明 22 4-3、参数的默认值 23 4-4、参数使用例子 24 4-5、变量参数 24 五、变量的类型与使用 25

5-1、变量参数 25 5-2、变量声明 26 5-3、变量的默认值 27 5-4、变量赋值 27 5-5、序列变量 28 5-6、变量、数据与函数的回溯 28 六、系统函数的使用 31 6-1、标点符号 31 6-2、控制语句 32 6-3、循环语句 37 七、用户函数的使用与说明 40 7-1、TB用户函数 40 7-2、序列函数 42 7-3、使用内建用户函数 42 7-4、用户函数的调用 44 7-5、用默认参数调用用户函数 44 八、技术指标编写 45 8-1、技术指标与应用 45 8-2、常用的技术指标应用举例 48 8-3、自编指标的输出 56 8-4、指标编写常见问题 58 九、用户函数编写 58 9-1、TB用户函数的编写 58 9-2、交易指令(Buy/Sell) 61 9-3、叠加多个商品合约进行交易 62 9-4、交易常用系统函数介绍 62 十、交易策略的程序实现与实例 65

开拓者变量

公式系统 - TradeBlazer公式基础 - 变量 变量 变量是一个存储值的地址,当变量被声明之后,就可以在脚本中使用变量,可以对其赋值,也可以在其他地方引用变量的值进行计算,要对变量进行操作,直接使用变量名称即可。 变量的主要用处在于它可以存放计算或比较的结果,以方便在之后的脚本中直接引用运算的值,而无需重现计算过程。 例如,我们定义一个变量Y,我们把一个收盘价(Close)乘上8%的所得的值存储在Y中,即Y = Close *8%。那么一旦计算出Close * 8%的值,便赋给变量Y。而无需在公式中输入计算过程,只需调用变量名称即可引用变量的值。 变量有助于程序的优化,这是TradeBlazer公式必须重复调用一些数据,这些数据可能是某些函数(如:Bar数据),或通过表达式执行计算和比较的值。因此,在表达式频繁使用的地方使用变量可提高程序的运行速度和节约内存空间。 使用变量也可以避免输入错误,使程序的可读性提高,示例如下: If(Close > High[1] + Average(Close,10)*0.5) { Buy(100, High[1] + Average(Close,10)*0.5); } 如果使用变量,则整个代码变得简洁: Value1 = High[1] + Average(Close,10)*0.5; If (Close > Value1) { Buy(100,Value1); } 如果一些表达式的组合经常在不同的公式中被调用,这个时候变量就不能实现功能,变量只能在单个公式的内部使用,这个时候我们需要建立用户函数来完成这些功能,详细说明参见用户函数。 变量类型

期货程序化交易——交易开拓者(TradeBlazer)公式详细介

交易开拓者(TradeBlazer)公式详细介绍 概述 本章节内容是TradeBlazer公式的全面参考手册,详细介绍了TradeBlazer公式的结构、语法、特点、使用方法及功能等。 通过阅读该参考手册,您能够了解TradeBlazer公式的基本语法、操作符、表达式及控制语句等,通过手册提供的各种示例程序,掌握各种TradeBlazer公式的编写要领,最终达到能够熟练将自己的思想转化为TradeBlazer公式,并在交易开拓者中应用。 什么是TradeBlazer公式? TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、用户字段、技术分析,交易指令等计算机能够识别的代码。 TradeBlazer公式是一门语法简单但是功能强大的语言,它能帮助您创建自己的交易和技术分析工具。通过组合普通的交易指令和简单的语句,TradeBlazer公式使您能够很容易并且直接的用简单语句表达自己的交易规则和行为。 交易开拓者能够读取您开发的TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将您的交易思想转化为实际的交易操作。 TradeBlazer公式能做什么? 通过TradeBlazer公式,您能够创建自己的交易指令、技术指标、K线型态、特征走势、用户函数以及用户字段。您也可以拷贝,修改并使用系统内置几百个函数、字段、技术分析和交易指令。 TradeBlazer公式包含的公式类型如下: ?用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。 您可以在其他任何公式中使用用户函数进行计算; ?用户字段:用户字段是TradeBlazer公式为交易开拓者报价类窗体提供的一项数据输出公式,通过用户字段执行一系列语言指令,给报价窗体返回一个特定的显示值; ?技术指标:技术指标是基于基础数据,通过一系列的数学运算,在每个Bar返回相应的结果值 的一类公式,这些值在图表模块中输出为线条、柱状图、点等表现形式; ?K线型态:K线型态是类似于技术指标的一类公式,它主要着重于反映一段K线的特定型态,并 通过不同的技术指标的方式输出到图表; ?特征走势:特征走势是类似于技术指标的一类公式,它主要着重于反映整个价格曲线的趋势、变化特征,并通过特定的表达方式输出到图表; ?交易指令:交易指令是包含买、卖、平仓,头寸,仓位控制的并执行交易指令的一类公式,它 主要帮助您将您的交易思想转化为计算机的操作。 通过调用TradeBlazer公式,您可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。 各类数据

TB课堂 基于指数移动平均线组进行判断 策略公式

TB课堂基于指数移动平均线组进行判断策略公式 只做专业交易软件 | 交易开拓者旗舰版| TB-Plus | TB-Smart | 基于指数移动平均线组进行判断(多) //------------------------------------------------------------------------// 简称: CL_Three_EMA_Crossover_System_L// 名称: 基于 指数移动平均线组进行判断多// 类别: 公式应用// 类型: 内建应用// 输 出://------------------------------------------------------------------------//------------------------------------------------------------------------// 策略说明://1.计算三条指数移动平均线(Avg1, Avg2 , Avg3);//2.通过指数移动平均线的组合来判断趋势// // 入场条件://1.当Avg1向上穿过Avg2并且Avg2大于Avg3时,在下一根k线开盘处买入//2.当Avg1向下穿过Avg2并且Avg2小于Avg3时,在下一根k线开盘处卖出// 出场条件: //1.Avg1下穿Avg2多头出场//2.跟踪止损//// 注: 当前策略仅为做多系统, 如需做空, 请参见 CL_Three_EMA_Crossover_System_S//------------------------ ----------------------------------------------// ParamsNumeric AvgLen1(6);Numeric AvgLen2(12);Numeric AvgLen3(28);Numeric

交易开拓者(TB)公司及产品介绍

交易开拓者(TB)公司及产品介绍 一、公司基本情况 公司名称:深圳开拓者科技有限公司 成立日期:2007年2月(产品早于公司) 注册资本:2000万人民币 注册地址:深圳市南山区海德三道海岸城西座1312 深圳开拓者科技有限公司是专为中国金融市场提供软件产品的计算机应用 软件开发公司,我们专注于为金融机构以及各类投资者开发系统软件,提供专业的交易工具。 二、公司简介 我们始终致力于完善在线交易软件,以成为世界一流的交易平台作为目标,让交易软件的使用更为简单便捷。为了完成这一目标,公司一直在业内保持领先的水平,利用最新的信息技术和创新理念,相信在我们不懈的努力下,在线交易软件将会发展得更好。 我们除了为客户提供最新的技术资讯和高品质的软件外,还将提供专业优质的服务。长期参与全球最为活跃的期货期权交易市场的经验证明了我们的专业性。我们不断对软件产品进行改进,不定期地升级更新,使其能够适应各种实际的交易需求,及以客为尊的态度更表明了我们将拓瑞邦泽发展成为中国最好的期货交易软件公司的决心和远景。 公司以金融工程与IT应用的结合,全面服务于期货投资者。我们有精通金融工程和IT应用的开发团队,还拥有国内外广泛的外汇、期货期权投资家关系网,以及多种形式的投资者交流互动平台。自2008年,由众多的外汇、期货领域的专家以及资深交易者组成我们自己的金融投资团队。实践经验让我们更能以使用者的角度去理解软件,去不断完善软件产品。 发展及引进新的商业模式,不断提升自我的管理水平,是我们核心的竟争能力。

在由期货日报与证券时报合办的“第四届中国最佳期货经营机构评选暨最佳期货分析师评选”活动中,交易开拓者荣获“中国最佳期货软件服务商”奖项。 三、公司特点 技术领先 精通金融工程和IT应用的结合,善于利用最新的信息技术和创新理念,事实上的国内该领域技术领跑者 开发经验 近10年程序化自动交易平台开发经验积累 投资团队 拥有外汇、期货领域的专家以及资深交易者组成的金融投资团队,目前在期货市场管理规模达近4亿元人民币 投资经验 软件开发人员均有丰富程序化交易实战经验,核心人员具有6年无人值守的程序化交易实战经验,使得技术与需求无缝对接 四、产品介绍 交易开拓者是一款针对中国期货市场投资用户而开发的投资工具,集中了实时行情,技术分析,快捷交易,套利,多账户管理及程序化自动交易等功能。 交易开拓者突破传统交易平台的限制,一切以交易为核心,所有功能都围绕交易而设计。并提供强大的、先进的、独有的策略交易功能,善用该功能将有效地提升您的交易思想。 交易开拓者采取先进的TradeBlazer language为基础,通过这种语言,使用者可以建立自己的技术指标、曲线分析和K线形态等,更重要的是您可能通过该语言建立各种交易指令,通过组合交易指令的使用,从而得到完整的交易策略,并可达到在线实时交易,建立头寸,控制风险,资金管理,资产给合等系统交易的操作。 ★提供行情报价、分时图与K线图显示的实时行情以及大量的历史K线数据。

交易开拓者使用教程

目录 第一章 (4) 概述 (4) TradeBlazer语言特点 (5) 功能特色 (5) 安装TradeBlazer (6) 软件下载 (6) 软件卸载 (7) 第二章 (8) TradeBlazer可视化集成开发环境 (8) 启动TradeBlazer (9) TradeBlazer系统登陆 (9) 连接交易账户 (10) 的用户界面 (11) 系统菜单 (12) 工具栏 (14) 工作室 (15) 工作区 (16) 面板 (17) 桌面 (18) 窗口特性 (18) 我的键盘 (19) 跑马灯 (20) 状态栏 (20) 消息中心 (21) 系统设置 (23) 数据维护 (26) 导入和导出 (29) 图像存储和打印 (30) 操作小技巧 (31) 第三章 (32) TradeBlazer视窗模块 (32) 行情报价 (33) 行情报价主界面 (33) 行情报价工具栏 (34) 行情报价右键菜单 (34) 商品选择和字段选择 (34) 分时图 (36) 分时图主界面 (36) 分时图分时图表 (37) 分时图盆口明细 (37) 分时图分笔成交 (38) 添加“开平仓性质” (38)

超级图表主界面 (39) 超级图表工具栏 (40) 超级图表菜单 (41) 页面设置 (45) 商品设置 (48) 技术分析设置 (50) 交易指令设置 (51) 自动交易 (52) 交易设置 (52) 讯号设置 (54) TB浏览器 (55) 第四章 (56) 交易系统 (56) 交易师 (57) 触发单 (59) 快速平仓 (60) 止损获利 (61) 批量下单 (62) 组合下单 (64) 预埋单 (65) 交易助手 (66) 帐户管理 (67) 帐户分析 (70) 第五章 (72) TradeBlazer公式基础 (72) 公式简介 (73) 数据 (73) 命名规则 (77) 语句 (77) 保留字 (78) 操作符 (80) 表达式 (83) 使用注释 (84) 系统函数 (84) 标点符号 (84) 控制语句 (85) 参数 (91) 变量 (93) 数据回溯 (96) 第六章 (99) TradeBlazer公式应用 (99) 用户函数 (100) 用户字段 (104) 技术指标 (106) K线型态 (108)

开拓者参数介绍

参数 参数是一个预先声明的地址,用来存放输入参数的值,在声明之后,您就可以在接下来的公式中使用该参数的名称来引用其值。 参数的值在公式的内部是不能够被修改,在整个程序中一直保持不变,不能对参数进行赋值操作(引用参数是个特例)。参数的好处在于您可以在调用公式应用的时候才指定相应的参数,而不需要重新编译。 例如,我们常用的移动平均线指标,就是通过不同的Length来控制移动平均线的周期,在调用指标时可以随意修改各个Length的值,使之能够计算出相对应的移动平均线。您可以指定4个参数为5,10,20,30计算出这4条移动平均线,也可以修改4个参数为10,22,100,250计算出另外的4条移动平均线。 参数的修改很简单,在超级图表调用指标的过程中,您可以打开指标的属性设置框,切换到参数页面,手动修改各项参数的值,然后应用即可,交易开拓者将根据新的参数设置计算出新的结果,在超级图表中反映出来。 另外,参数的一个额外的优点是,我们可以通过修改公式应用不同的参数,测试交易策略的性能优劣,达到优化参数的目的。 参数类型 在介绍参数类型之前,我们需要对于TradeBlazer公式的公式类型作一些说明,用户函数是公式中比较特殊的类型,它自身不能被超级图表,行情报价这样的模块调用,只能被公式应用或者用户函数调用,因此它的参数类型也和公式应用不一样。 用户函数的参数类型可以包含TradeBlazer公式的九种类型,而公式应用只能使用三种简单的基本类型。 三种简单类型参数通过传值的方式将参数值传入公式,公式内部通过使用参数名称,将参数值用来进行计算或赋值。 引用参数是在调用的时候传入一个变量的地址,在用户函数内部会修改参数的值,在函数执行完毕,上层调用的公式会通过变量获得修改后的值,引用参数对于需要通过用户函数返回多个值的情况非常有用。 序列参数可以通过回溯获取以前Bar的值,具体介绍可参见参数回溯。 参数声明

若即若离--《六年探索,见证程序化交易的惊人威力》

若即若离--《六年探索,见证程序化交易的惊人威力》 2011年9月6日 17:10 2006年开始做投资,本金是1000块,这个月初账面资金为211.6万,中间曾经爆仓,后续投入为工资收入的部分,大概6—8万。我觉得我的经历和思路可能会对投资有困惑的人有一些帮助,抽一个晚上的时间写一篇文章,如有言疏语陋之处,请勿见笑。 我入市大概在2006年。当时读大四,第一笔投资是在证券市场,买的是神火股份,有一点小小的思想挣扎,毕竟是背着父母的一笔不小的支出。当时的想法很简单,亏200就止损,损失可以承受,赚出从学校到上海的来返路费就止盈。后来几个月后拿到了预期的收益,尽管在好多人看来这是个笑话,因为卖在了起涨点,但我一直觉得这次投资最成功,因为是理性投资+规范操作! 毕业后去了一家证券公司,我不是一个聪明的人,和大多数人一样,几年投资经历,有盈有亏,起起落落,从直觉派转到技术派,从技术派转到基本面派,从基本面派转到价值投资派,又从价值派转到资金派,最后自封为奶油蛋黄派。衣服穿上又被扒下,扒下后又穿上,由人成为神,由神成为人,由人成为鬼,最后索性在一次期货豪赌中变成土了。还好靠着稳定工作的输血,我又能卷土重来,投资领域扩大到股票、期货、外汇全天候海陆空三栖,但是后来的投资还是陷入了一种更加歇斯底里的境地,该胆大的时候谨慎,该谨慎的时候大胆;什么都想顾,顾也顾不过来,左右扇耳光,每一天的投资其实就是神经质般的三个动作,一个开仓,一个止损,完了看一下亏了多少。有一段时间,甚至觉得自己鬼上身了,初一十五的没少去庙里烧香,旁边磕头作揖的都是五六十岁的老太太,有几个还混了个脸熟,就差和她们一起在庙里穿的红红绿绿的敲大鼓了。 总结这段时间失败的原因,我觉得一个是不具备基础的投资理财知识而把直觉这个靠不住的东西当成投资的法宝;另一个是承担了自己不能承担的风险;还有一个是不知道自己的不能而觉得自己无所不能。 局面发生改观是在2008年底,之前的整个奥运期间我已经辞职了,有大概两个月的自由时间反省,看了好多专业投资方面的书,还有大量的实盘图,后来总结出了几条感悟,称不上什么理论,用蜜蜂采蜜做个比方:蜜蜂采蜜先选时,一年当中并不是每一天都是采蜜的时间,起码是要花开时节,天气要好;选时完了得选花,有的花有蜜,有的花没有,一支花开不值得采,还不够飞过去的油钱,起码得有一大片;选完花了还要知道在哪里下手,把整株花掐回去的蜜蜂可能过去曾经有,后来因为太傻灭绝了,只要知道采哪个地方,小刷子刷几下,简洁而高效的把事儿办了就行了;整个流程都熟悉了还要懂得把这种有效的办法简单重复,因为没有必要花很多时间把一枝花采的那么干净,毕竟花还是很多的,一支上采最鲜的几口就足够了。 就是这样一个浅显的道理,把它具体化就能形成一个交易系统需要具备的几个要素,怎么选时?选完时了怎么选股?选完股资金怎么分配?什么情况下介入?什么情况下离场?这个系统的可靠性怎么样?能不能定量和复制? 回答这一切的唯一有效的答案不是直觉也不是所谓的经验,而是绝对严谨一丝不苟的大量数据统计!数据统计能揭示很多你不知道的事实,比如双方博弈,博弈的结果在大量博弈数据条件下正负是不是各占50%?通俗的讲比如抛硬币,抛了十次,可能正面朝上了6次,反面朝上了4次,这时候得出来的统计数据为正负比1.5;但是抛一百次,一千次,一万次呢?如果正反出现是随机并且各占50%的话,能不能在这种随机事件中找出不随机的情况?答案是肯定的! 这里又涉及到一个经典的理论——散兵坑理论! K线形态上有所谓的散兵坑组合,但这里讲散兵坑为的是引出概率的概念。两颗炮弹落在同一个弹坑的概率有多大?那么作为一个步兵在寻找掩护位时候,躲在弹坑里是不是要比躲在非弹坑里安全呢? 再进一步具体化类推,比如最基本的: 一:MACD+RSI指标底部一背离后有5%的上涨概率为多少?两背离?三背离呢? 二:成交量呈现连续三天递缩至48天地量后次日收阳的概率是多大?后两日呢? 三:以低于13日均量线的成交量创出新高的股五日内再创新高的概率有多大? 如果你发现在类似的某些特定的时候介入成功的概率大的话,那么能不能让这种概率值增大到极致? 高鼻子=美国人?不一定吧,高鼻子的人多的去了!不一定都是美国人。 高鼻子+蓝眼睛=美国人?有可能,至少不太像亚洲人! 高鼻子+蓝眼睛+白种人=美国人?很有可能,不是欧洲人就是美国人! 高鼻子+蓝眼睛+白种人+讲美式英语=美国人?八九不离十! 高鼻子+蓝眼睛+白种人+讲美式英语+持有美国护照=美国人?基本可以肯定要不是美国人那就是国际间谍! 类似的多系统互相确认提高概率值的思路,我建立起了自己的交易系统,通过定量的方法(定量止损+定量止盈)使得风险和收益完全定量化。量化交易产生的直接后果是使得交易简单化和收益稳健化!但是这中间依然存在一个问题,能不能实现效能很高的程式自动化交易? 我们当下的投资辅助技术水平和我刚入市时候已经进步很大了,我刚入市的时候一段时间甚至用的是电话委托,后来的交易系统大约是钱龙,好像没有公式选股、条件预警、自定义指标等功能,正是因为这些功能在后来的专业化软件中的出现,甚至自动交易软件的出现,使得股票程式化交易得以实现。中间用了几个星期的时间完全掌握了指标编程的各种函数和语言组织,终于实现了日常数据存档-自定义选股-盘中预警-买卖止损止盈点和资金分配自动计算等的完全自动化,(全自动交易是去年年中实现的)日常的操作变得比较轻松,不敢大言不惭的说股市就是自动取款机这样的话,但事实是在实际的差不多一年多的操作中,跑赢了大市,也跑赢了王亚伟。 真正的思想和实践出现升华是在后来接触期货的两年,出发点是基于这样一个思考:如果一个交易系统在不同类别的市场均成熟有效,那么放大资金使用杠杆的唯一结果就是提高资金的使用效率,从而使得收益增速加大。 通过接触一些职业投资机构和个人,系统的学习市场上的各种投资理念和技术,交易系统实现了针对不同市场的不同创新。双边交易的市场有一些自己独特的特征,而这些特征完全区别于单边交易市场的品种。这些特征的捕捉并应用到程式化交易模型中会出现很多超出预期的效果。

TB过滤集合竞价的函数

//------------------------------------------------------------------------ // 简称: CallAuctionFilter // 名称: 集合竞价与小节过滤函数 // 类别: 用户函数 // 类型: 用户函数 // 输出: 布尔型 //------------------------------------------------------------------------ Begin // 写成“Date >= CurrentDate”,是为了处理日线交易有夜盘的品种在夜间开盘的集合竞价 If(BarStatus == 2 And Date >= CurrentDate) { If(ExchangeName == "上海证券交易所" Or ExchangeName == "深圳证券交易所") { If(Time == 0.0930 And CurrentTime < 0.093005) Return False; If(Time == 0.1300 And CurrentTime < 0.130005) Return False; }Else If(ExchangeName == "中国金融期货交易所") { // 日线,周线,月线 If((BarType == 0 Or BarType == 4 Or BarType == 5) And CurrentTime > 0.091355 And CurrentTime < 0.091505) Return False; If(Time == 0.0915 And CurrentTime < 0.091505) Return False; If(Time == 0.1300 And CurrentTime < 0.130005) Return False; }Else If(ExchangeName == "上海期货交易所" Or ExchangeName == "郑州商品交易所" Or ExchangeName == "大连商品交易所") {

相关文档
相关文档 最新文档