开拓者代码及函数三篇Word文档格式.docx

上传人:b****2 文档编号:3830718 上传时间:2023-05-02 格式:DOCX 页数:48 大小:33.80KB
下载 相关 举报
开拓者代码及函数三篇Word文档格式.docx_第1页
第1页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第2页
第2页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第3页
第3页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第4页
第4页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第5页
第5页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第6页
第6页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第7页
第7页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第8页
第8页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第9页
第9页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第10页
第10页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第11页
第11页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第12页
第12页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第13页
第13页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第14页
第14页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第15页
第15页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第16页
第16页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第17页
第17页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第18页
第18页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第19页
第19页 / 共48页
开拓者代码及函数三篇Word文档格式.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

开拓者代码及函数三篇Word文档格式.docx

《开拓者代码及函数三篇Word文档格式.docx》由会员分享,可在线阅读,更多相关《开拓者代码及函数三篇Word文档格式.docx(48页珍藏版)》请在冰点文库上搜索。

开拓者代码及函数三篇Word文档格式.docx

备注产生一个空头平仓操作,无返回值,该函数仅支持交易指令。

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

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

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

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

5PCzVD7HxA

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

BuyToCover(50,10.2,1>

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

jLBHrnAILg

BuyToCover(10,Close>

表示用当前Bar收盘价空头买入10张合约,马上发送委托。

BuyToCover(5,0>

表示用现价空头买入5张合约>

,马上发送委托。

sell

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

(BK>

语法Sell(NumericShare=0,NumericPrice=0,BoolDelay=False>

xHAQX74J0X

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

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

Delay卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。

备注产生一个多头平仓操作,无返回值,该函数仅支持交易指令。

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

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

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

LDAYtRyKfE

Sell(50,10.2,1>

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

Sell(10,Close>

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

Sell(5,0>

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

sellshort

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

语法SellShort(NumericShare=0,NumericPrice=0,BoolDelay=False>

Zzz6ZB2Ltk

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

备注产生一个空头建仓操作,无返回值,该函数仅支持交易指令。

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

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

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

dvzfvkwMI1

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

rqyn14ZNXI

SellShort(50,10.2,1>

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

EmxvxOtOco

SellShort(10,Close>

表示用当前Bar收盘价空头卖出10张合约,马上发送委托。

SellShort(5,0>

表示用现价空头卖出5张合约,马上发送委托。

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

函数名描述

Buy平掉所有空头持仓,开多头仓位。

(*BPK*>

Sell平掉指定的多头持仓。

SellShort平掉所有多头持仓,开空头仓位。

(*SPK*>

BuyToCover平掉指定的空头持仓。

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

MarketPosition

说明获得当前持仓状态。

语法IntegerMarketPosition(>

参数无

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

返回值定义如下:

-1当前位置为持空仓

0当前位置为持平

1当前位置为持多仓

示例无

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

内建平仓指令

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

SixE2yXPq5

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

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

6ewMyirQFL

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

kavU42VRUs

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

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

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

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

y6v3ALoS89

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

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

M2ub6vSTnP

关于ExitPosition

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

0YujCfmUCw

ExitPosition是布尔型参数,当ExitPosition=True时,表示将当前所有的持仓作为一个整体,根据其平均建仓成本,计算各平仓函数的盈亏,当条件满足时,会将所有仓位一起平掉;

当ExitPosition=False时,表示单独对每个建仓位置进行平仓,单独计算各平仓函数盈亏时,当单个建仓位置条件满足后,平掉该建仓位置即可。

eUts8ZQVRd

触发单

触发单是交易开拓者特有的交易方式,触发单是指用户设置条件,将触发单提交到交易开拓者的交易服务器,当设定条件满足情况,交易服务器会自动发送委托到交易所。

触发单可以帮助解决用户盯盘的辛苦,及手动发单的速度问题。

sQsAEJkW5T

触发单分为以下四种类型:

吊买、吊卖、追买、追卖。

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

触发价格:

触发单设定的条件价格,通过比较现价和触发价格确定是否下单。

下单之后,该触发单会从交易服务器中删除;

GMsIasNXkA

执行价格:

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

过期时间:

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

吊买

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

吊卖

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

追买

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

追卖

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

修改或删除触发单

当存在某个商品的触发单,可通过双击帐户管理的触发单页面的工程,打开交易师,进行修改或删除操作。

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

您可以直接点击[删除]按钮将该触发单删除。

TIrRGchYzg

注意:

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

SetPercentTrailing(2000,0.2,True>

又是一个宝

当前所有持仓盈利在大于2000之后回落,当回落百分比达到20%之后,执行所有持仓位置的百分比回落平仓。

<

此时是计算所有持仓的盈利数)7EqZcWLZNX

SetPercentTrailing(1000,0.1,False>

当前持仓的某一个建仓位置的盈利大于1000之后回落,当回落百分比达到10%之后,执行该持仓位置的百分比回落平仓。

此时只计算该持仓位置的盈利)lzq7IGf02E

SetStopLoss(0,2000,True>

当前所有持仓亏损达到2000之后,执行所有持仓位置的止损平仓。

此时是计算所有持仓的亏损数)zvpgeqJ1hk

SetStopLoss(1,50,False>

当前持仓的某一个建仓位置每张合约的亏损达到50之后,执行该持仓位置的止损平仓。

此时只计算该持仓位置的每张合约亏损)NrpoJac3v1

SetBreakEven(0,2000,True>

当前所有持仓的盈利达到2000之后,启动所有持仓位置的保本平仓。

此时是计算所有持仓的盈利数)1nowfTG4KI

SetBreakEven(1,50,False>

当前持仓的某一个建仓位置每张合约的盈利达到50之后,启动该持仓位置的保本平仓。

此时只计算该持仓位置的每张约的盈利)fjnFLDa5Zo

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

循环语句

循环语句包括两种表达方式:

For和While。

For

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

语法如下:

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

{

TradeBlazer公式语句。

}

循环变量为在之前已经定义的一个数值型变量,For循环的执行是从循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。

结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。

只计算其整数部分。

tfnNhnE6e5

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

HbmVN777sL

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

接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。

V7l4jRB8Hs

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

Params

NumericSeriesPrice(1>

NumericLength(10>

Vars

NumericSumValue(0>

Numerici。

Begin

fori=0toLength-1

{

SumValue=SumValue+Price[i]。

}

ReturnSumValue。

End

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

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

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

83lcPA59W9

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

mZkklkzaaP

While

While语句在条件为真的时候重复执行某一项操作。

即,只要条件表达式的值为真(True>

时,就重复执行某个动作。

直到行情信息改变以致条件为假(False>

时,循环才结束。

AVktR43bpw

While(Condition>

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

括起来。

ORjBnOwcEd

2MiJTy0dTT

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

NumericSumVolume(0>

NumericCounter(0>

While(SumVolume<

100000>

SumVolume=SumVolume+Vol[Counter]

Counter=Counter+1。

首先,我们定义两个变量SumVolume和Counter,并将其默认值设为0。

当SumVolume<

100000这个表达式为True时,While内的TradeBlazer公式语句一直被调用,将前Counter个Bar的Vol加到SumVolume中,当SumVolume大于等于100000时,退出循环。

gIiSpiue7A

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

uEh0U1Yfmh

While(True>

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

IAg9qLsgBX

Break

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

If(Condition>

Break。

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

WwghWvVhPE

Continue

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

asfpsfpi4k

While(Condition1>

TradeBlazer公式语句1。

If(Condition2>

Continue。

TradeBlazer公式语句2。

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

否则将继续执行TradeBlazer公式语句2。

ooeyYZTjj1

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

控制语句

TradeBlazer公式支持两大类的控制语句:

条件语句和循环语句。

条件语句

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

If

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

If(Condition>

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

BkeGuInkxI

PgdO0sRlMo

例如,您可以计算图表中上升缺口<

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

3cdXwckm15

NumericSeriesCounter(0>

If(Open>

High[1]>

Counter=Counter[1]+1。

...

}

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

例如,下面的语句就是特征走势的例子:

h8c52WOngM

If(High>

High[1]ANDLow<

Low[1]>

PlotNumeric(High,"

OutsideBar"

>

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

v4bdyGious

Alert("

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

Alert("

If-Else

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

否则执行Else后面的语句。

}Else

Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句1将会被执行;

Condition为False时,TradeBlazer公式语句2将会被执行。

Condition可以是多个条件表达式的逻辑组合,Condition必须用(>

J0bm4qMpJ9

XVauA9grYP

例如,比较当前Bar和上一个Bar的收盘价,如果Close>

Close[1],Value1=Value1+Vol;

否则Value1=Value1-Vol,脚本如下:

bR9C6TJscw

If(Colse>

Close[1]>

Value1=Value1+Vol。

Else

Value1=Value1-Vol。

If-Else-If

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

If(Condition1>

}ElseIf(Condition2>

{

TradeBlazer公式语句3。

Condition1是一

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2