开拓者代码(2)代码学习各种买卖指令及实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 该平仓函数用来在当日收盘后产生一个平仓动作,将当前所有的持仓按当日收 盘价全部平掉。
各种买卖指令 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 的情况下:
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 语句来完成相应的功能,Baidu Nhomakorabea如 Summation,Highest,Lowest,LinearReg 等。
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%之后,执行该持仓位置的百分比回落平仓。 (此时只计算该持仓位置的盈利)