开拓者代码及函数三篇.docx
- 文档编号:12520840
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:48
- 大小:33.80KB
开拓者代码及函数三篇.docx
《开拓者代码及函数三篇.docx》由会员分享,可在线阅读,更多相关《开拓者代码及函数三篇.docx(48页珍藏版)》请在冰豆网上搜索。
开拓者代码及函数三篇
开拓者代码及函数三篇
篇一:
学习各种买卖指令及实例
Buy
说明产生一个多头建仓操作。
语法Buy(NumericShare=0,NumericPrice=0,BoolDelay=False>b5E2RGbCAP
参数Share买入数量,为整型值,默认为使用系统设置参数;
Price买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close>;
Delay买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。
备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于多头建仓,其处理规则如下:
如果当前持仓状态为持平,即MarketPosition=0时,该函数按照参数进行多头建仓。
如果当前持仓状态为空仓,即MarketPosition=-1时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。
p1EanqFDPw
如果当前持仓状态为多仓,即MarketPosition=1时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。
DXDiTa9E3d
示例在MarketPosition=0的情况下:
Buy(50,10.2,1>表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。
Buy(10,Close>表示用当前Bar收盘价买入10张合约,马上发送委托。
Buy(5,0>表示用现价买入5张合约,马上发送委托。
BuyToCover
说明产生一个空头平仓操作。
语法BuyToCover(NumericShare=0,NumericPrice=0,BoolDelay=False>RTCrpUDGiT
参数Share买入数量,为整型值,默认为平掉当前所有持仓;
Price买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close>;
Delay买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。
备注产生一个空头平仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于空头平仓,其处理规则如下:
如果当前持仓状态为持平,即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=0时,该函数不执行任何操作。
如果当前持仓状态为空仓,即MarketPosition=-1时,该函数不执行任何操作。
如果当前持仓状态为多仓,即MarketPosition=1时,如果此时Share使用默认值,该函数将平掉所有多仓,达到持平的状态,否则只平掉参数Share的多仓。
LDAYtRyKfE
示例在MarketPosition=0的情况下:
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卖出数量,为整型值,默认为使用系统设置参数;
Price卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close>;
Delay卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。
备注产生一个空头建仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于空头建仓,其处理规则如下:
如果当前持仓状态为持平,即MarketPosition=0时,该函数按照参数进行空头建仓。
如果当前持仓状态为多仓,即MarketPosition=1时,该函数首先平掉所有多仓,达到持平的状态,然后再按照参数进行空头建仓。
dvzfvkwMI1
如果当前持仓状态为空仓,即MarketPosition=-1时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。
rqyn14ZNXI
示例在MarketPosition=0的情况下:
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>。
又是一个宝
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结束值
{
TradeBlazer公式语句。
}
For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义。
83lcPA59W9
For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。
mZkklkzaaP
While
While语句在条件为真的时候重复执行某一项操作。
即,只要条件表达式的值为真(True>时,就重复执行某个动作。
直到行情信息改变以致条件为假(False>时,循环才结束。
AVktR43bpw
语法如下:
While(Condition>
{
TradeBlazer公式语句。
}
Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被循环执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用(>括起来。
ORjBnOwcEd
TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。
2MiJTy0dTT
例如,以下的公式用来计算要产生大于100000成交量需要最近Bar的个数:
Vars
NumericSumVolume(0>。
NumericCounter(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时,退出循环。
gIiSpiue7A
在使用While循环的时候,有可能会遇到循环一直执行,永远不能退出的情况,这种情况我们称之为死循环,比如下面的语句;uEh0U1Yfmh
While(True>
{
TradeBlazer公式语句。
}
在这种情况下,循环将一直执行,导致程序不能继续工作,在这种情况,我们可以使用Break来跳出循环,详细情况参加下节。
IAg9qLsgBX
Break
针对上节的例子,要想从死循环中跳出,我们可以在循环之中添加Break语句,如下:
While(True>
{
TradeBlazer公式语句。
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>
{
TradeBlazer公式语句。
}
Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用(>括起来。
BkeGuInkxI
TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。
PgdO0sRlMo
例如,您可以计算图表中上升缺口<当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下:
3cdXwckm15
Vars
NumericSeriesCounter(0>。
Begin
If(Open>High[1]>
{
Counter=Counter[1]+1。
...
}
...
End
在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件满足的时候,在满足条件的Bar上面进行标记。
例如,下面的语句就是特征走势的例子:
h8c52WOngM
If(High>High[1]ANDLow
{
PlotNumeric(High,"OutsideBar">。
}
If语句在不是用括号的情况,只执行下面的第一条语句,如下的语句,Alert不会只在条件为True时执行,而是每次都执行。
v4bdyGious
If(High>High[1]ANDLow
PlotNumeric(High,"OutsideBar">。
Alert("OutsideBar">。
要想Alert只在条件为True时执行,您需要按照下面的格式编写:
If(High>High[1]ANDLow
{
PlotNumeric(High,"OutsideBar">。
Alert("OutsideBar">。
}
If-Else
If-Else语句是对指定条件进行判断,如果条件满足执行If后的语句。
否则执行Else后面的语句。
语法如下:
If(Condition>
{
TradeBlazer公式语句1。
}Else
{
TradeBlazer公式语句2。
}
Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句1将会被执行;Condition为False时,TradeBlazer公式语句2将会被执行。
Condition可以是多个条件表达式的逻辑组合,Condition必须用(>括起来。
J0bm4qMpJ9
TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。
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>
{
TradeBlazer公式语句1。
}ElseIf(Condition2>
{
TradeBlazer公式语句2。
}Else
{
TradeBlazer公式语句3。
}
Condition1是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开拓者 代码 函数