TB编程官方实例PPT学习课件_第1页
TB编程官方实例PPT学习课件_第2页
TB编程官方实例PPT学习课件_第3页
TB编程官方实例PPT学习课件_第4页
TB编程官方实例PPT学习课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 TB编程基础和策略实现示例 深圳开拓者科技有限公司 内容安排 TB程序化交易的设置和使用 演示 TB程序化交易编程基本知识TB技术指标和交易策略编写示例 2 TB公式如何使用 TB公式类型用户函数公式应用 包括技术指标 交易指令等 如何使用一个交易模型 或新建公式应用 粘贴代码 校验保存公式 编译 打开超级图表 选择交易品种 插入公式应用修改公式应用设置投资组合性能测试和参数优化启动自动策略交易系TB公式的导入导出 3 4 5 6 公式源代码 ParamsNumericLength 10 NumericLots 1 VarsNumericSeriesMA BeginMA AverageFC Close Length PlotNumeric MA MA If Close 1 MA 1 Buy Lots Open If Close 1 MA 1 SellShort Lots Open End 7 TB公式的结构 TB的公式一般由三段组成 ParamsNumericLength 10 公式参数段 VarsNumericSeriesMA 公式变量段 BeginMA AverageFC Close Length 公式脚本段 End 8 Bar数据 K线数据 当前时间周期下所有K线的相关数据 按照时间从先到后的顺序排列而成的序列数据 每根K线中包含的数据如下 9 序列数据 10 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 序列变量 NN 1 210 非序列变量 简单变量 11 非序列变量 Bar数据的使用 Bar数据是TB公式运行的基础 Bar数据是序列数据 可以回溯读取 举例 比较今天的最高价是否突破了昨天的最高价表达式为 High High 1 比较今天的最高价是否突破了前两天的最高价表达式为 High High 1 andHigh High 2 或者 High High 1 High High 2 12 TB公式运行机制 从左到右 从上到下 13 例1 HelloWorld Sample1 BeginFileAppend c tb sample1 txt HelloWorld End 14 公式运行结果 大家都知道每个HelloWorld 都是怎么产生的吗 15 注释语句 Commentary TB的信息输出 除了可以通过FileAppend输出到文件外 也可以将信息输出显示到图表上 Commentary的用法 在超级图表的当前BAR添加一行注释信息 参数 StringstrTip 提示的信息 16 信息输出函数的作用 调试和诊断TB公式的代码错误 检验TB公式的运行结果是否符合设计逻辑 学习TB的运行机制 熟悉TB内建函数的用法 17 例2 输出BAR数据 Sample2 BeginFileAppend c tb sample2 txt Date text Date Time text time Open Text Open High Text High Low Text Low Close Text Close CurrentBar Text CurrentBar Barstatus Text BarStatus End 18 例2运行结果 19 参数与变量 简单地说 参数和变量都是代号 代表一个某一类型的数据 变量还可以代表一个表达式的运算结果 参数的作用是给用户一个不需修改代码即可改变公式运行结果的一个外部接口 参数的值在公式的内部不能够被修改 变量的作用是保存数据或是计算结果 便于以后调用 参数和变量都需要声明 20 参数的作用 假如我们要写一个均线指标 现在是用10天做周期 代码如下 BeginPlotNumeric MA AverageFC Close 10 End那如果要改用20天做周期 我们必须改程序 把10改成20 然后编译 下次想用别的周期 还得改 非常麻烦 如果使用参数 就方便多了 程序写好 使用时改参数就好了 代码如下 ParamsNumericLength 10 BeginPlotNumeric MA AverageFC Close Length End 21 数据类型 TB公式中有三种基本的数据类型数值型 Numeric 字符型 String 布尔型 Bool 为了对变量 参数进行回溯 又增加了序列类型数值型序列变量 参数 NumericSeries 字符型序列变量 参数 StringSeries 布尔型序列变量 参数 BoolSeries 为了通过用户函数返回多个值 又增加了引用类型NumericRef StringRef BoolRef变量 或参数 申明方法 数据类型变量名或参数名 初始值 22 控制语句 条件语句 If Else if语句if else语句if Elseif语句if Else嵌套循环语句 For While For循环变量 初始值TO结束值For循环变量 初始值Downto结束值While循环 23 条件语句 IFElse语句 语法如下 If Condition TB公式语句1 Else TB公式语句2 如果TB公式语句是单条 您可以省略 二条或者二条以上的语句必须使用 24 25 技术指标输出函数 PlotNumeric 在当前BAR输出一个数值参数 StringName 输出值的名称 NumericNumber 输出的数值 NumericLocator 0 输出值的定位点 IntegerColor 1 输出值的颜色 IntegerBarsBack 0 从当前BAR回溯的BAR数举例 PlotNumeric MA AverageFC Close 10 输出均线指标值PlotNumeric OpenToClose open close 输出开盘价与收盘价的连线 线型选择柱状图 26 技术指标输出函数 2 PlotString 在当前BAR输出一个字符串参数 StringName 输出值的名称Stringstr 输出的字符串 NumericLocator 0 输出值的定位点 IntegerColor 1 输出值的颜色 IntegerBarsBack 0 从当前BAR回溯的BAR数举例 PlotString CandleStick 阳线 Low Red 在Bar的最低价位置输出字符串 阳线 并显示为红色 27 技术指标输出函数 3 PlotBool 在当前BAR输出一个布尔值参数 StringName 输出值的名称BoolbPlot 输出的布尔值 NumericLocator 0 输出值的定位点 IntegerColor 1 输出值的颜色 IntegerBarsBack 0 从当前BAR回溯的BAR数举例 PlotString con con High 在Bar的最高价位置输出布尔变量con的值 如果con为真 则显示 笑脸 图标 否则显示为 哭脸 图标 28 例3 技术指标的编写 Sample3 单均线加通道指标ParamsNumericLength 10 均线周期NumericFilterPercent 20 通道幅度比例 VarsNumericSeriesMA NumericSeriesUpperBand NumericSeriesLowerBand BoolConBuy False BoolConSell False BeginMA AverageFC Close Length UpperBand MA 1 FilterPercent 10000 LowerBand MA 1 FilterPercent 10000 29 PlotNumeric MA MA 0 Yellow PlotNumeric UpperBand UpperBand 0 Red PlotNumeric LowerBand LowerBand 0 Green ConBuy CrossOver Close UpperBand ConSell CrossUnder Close LowerBand if ConBuy PlotBool ConBuy ConBuy High High Low 0 3 PlotString BS 多头突破 High High Low 0 6 red if ConSell PlotBool ConSell ConSell Low High Low 0 3 PlotString SS 空头突破 Low High Low 0 6 Green End 30 指标编写常见问题 指标编写完成后 还要注意在属性设置中进行相应的设置 指标是在主图显示还是在子图显示 指标的线型 从V3转到V4的客户注意参数的位置另外学习的例子可以参考 MACD指标的写法 柱状图 SAR指标 点图 31 运行结果 32 交易指令 Buy Sell Buy 平掉所有空头持仓 开多头仓位 sell 平掉指定多头持仓 Sellshort 平掉所有多头持仓 开空头仓位 Buytocover 平掉指定空头持仓 参数 NumericShare买入数量 默认 0时 使用系统设置参数NumericPrice买入价格 为浮点数 默认 0时为使用现价 非最后Bar为Close 33 交易指令A SendOrder 针对当前公式应用的帐户 商品发送委托单 该函数直接发单 不经过任何确认 并会在每次公式计算时发送 一般需要配合着仓位头寸进行条件处理 在不清楚运行机制的情况下慎用 不能使用于历史测试 仅适用于实时行情交易 参数 BuyOrSell 买卖类型 买Enum Buy 卖Enum Sell EntryOrExit 开平仓类型 开仓Enum Entry 平仓Enum Exit 平今Enum ExitToday fLot委托单的交易数量 fPrice委托单的交易价格 叠加多个商品合约进行交易 TB可以在一个图表中插入多个商品合约 支持同时对多个商品合约数据源编写公式应用 具体的方法是在交易指令 BAR数据及系统函数前加上数据源 TB中数据源的命名规则如下 Data0 图表中最开始选择的商品合约Data1 第一个插入的商品合约Data2 第二个插入的商品合约 一个图表最多支持50个数据源 调用方法 Data1 A SendOrder Data2 Buy Data3 CloseData4 MarketPosition 34 盘中和盘后公式运行的差别 盘后公式的执行情况分析K线是确定的 不存在信号消失问题公式在每根K线上只执行一遍符合开仓条件和平仓条件会标出买卖信号 使用Buy Sell指令 但并不真正发单盘中公式的执行情况分析K线是变化的 如用最新价或基于最新价计算出的指标来作为入场或出场条件会出现信号消失问题每当分笔交易数据 tick 传来时 公式都会执行一遍符合开仓条件和平仓条件除标出买卖信号 还会真正发单 35 信号消失问题 1 产生原因 使用变化的价格 如Close 或是基于最新价Close计算的技术指标 来作为交易的进场 出场或止损条件时 就会产生信号消失问题 如果编写的公式策略中存在信号闪烁问题 在历史测试中会得出失真的测试结果 在实盘交易时 更会因为重复发单造成严重损失 信号消失问题的一般解决办法 延迟发单或用前一根K线的数据来做为判断条件用能保持得住的价格来做为判断条件 36 信号消失问题 2 延迟发单举例 condition 交易条件If condition Buy 1 NextOpen true 用前一根K线做判断举例 condition 交易条件If condition 1 Buy 1 Open 用High Low Open等做判断If High High 1 buy 1 High 1 37 例4 单均线系统 ParamsNumericLength 10 NumericLots 1 VarsNumericSeriesMA BeginMA AverageFC Close Length PlotNumeric MA MA If MarketPosition1andClose 1 MA 1 Buy Lots Open If MarketPosition 1andClose 1 MA 1 SellShort Lots Open End 38 连续建仓的控制 原来的公式中 理论上任何一根收盘高于均线的K线 都会开多仓 形成连续建仓 但实际上交易设置中可控制 39 如果允许连续建仓 40 代码中限制连续建仓 持仓函数Marketposition的用法 获得当前持仓状态 返回值为整型 返回值定义如下 1当前位置为持多仓 1当前位置为持空仓0当前位置为持平代码修改如下 If MarketPosition 1andClose 1 MA 1 Buy Lots Open If MarketPosition 1andClose 1 MA 1 SellShort Lots Open 41 止盈止损策略的实现 止盈止损的设置有多种方法 常见的有 固定点数价格百分比进场价的一定比例 平均波动范围的一定比例 形态判断下面以固定点数止损 进场价的一定比例止盈为例 分别举个例子 42 止盈止损的代码 不包含进场部分 ParamsNumericTakeProfit 1 百分比NumericStopLoss 20 VarsNumericMinPoint NumericMyEntryPrice NumericMyExitPrice BeginMinPoint MinMove PriceScale MyEntryPrice AvgEntryPrice if MarketPosition 1 if High MyEntryPrice 1 TakeProfit 0 01 MyExitPrice MyEntryPrice 1 TakeProfit 0 01 if open MyExitPrice MyExitPrice Open Sell 0 MyExitPrice 43 Elseif LowMyEntryPrice Stoploss MinPoint MyExitPrice MyEntryPrice Stoploss MinPoint if Open MyExitPrice MyExitPrice Open BuyToCover 0 MyExitPrice End 44 追踪止盈策略的实现 追踪止盈的设置也有多种方法 常见的有 峰值价回落固定点数峰值价回落一定的百分比峰值价的一定比例 平均波动范围的一定比例 开盘价的一定比例 是否盈利达到一定幅度才启用追踪止盈 动态的回落点数或比例 下面以峰值价回落一定比例为例 来实现它 45 追踪止盈的代码 不包含进场部分 ParamsNumericTrailingStop 1 跟踪止损百分比VarsNumericMinPoint NumericMyExitPrice NumericSeriesHigherAfterEntry NumericSeriesLowerAfterEntry NumericStopLine 0 Beginif BarsSinceEntry 1 HigherAfterEntry AvgEntryPrice LowerAfterEntry AvgEntryPrice ElseIf BarsSinceEntry 1 HigherAfterEntry Max HigherAfterEntry 1 High 1 LowerAfterEntry Min LowerAfterEntry 1 Low 1 46 Else HigherAfterEntry HigherAfterEntry 1 LowerAfterEntry LowerAfterEntry 1 MinPoint MinMove PriceScale If MarketPosition 1 StopLine HigherAfterEntry 1 TrailingStop 0 01 If Low StopLine MyExitPrice StopLine MinPoint If Open MyExitPrice MyExitPrice Open BuyToCover 0 MyExitPrice End 47 48 应注意的问题 如果单根K线的最高价和最低价相差很大 有可能出现止盈和止损同时满足的情况 解决办法 切换到更小的时间周期上进行交易 扩大止盈和止损的幅度在开仓BAR 因无法判断开仓价和最高价最低价的先后顺序 因此一般是在开仓BAR的后一根BAR才开始判断是否满足止盈止损或跟踪止盈的的条件 如交易策略需要及时的止损 同样需要切换到更小的时间周期上进行交易 进场位置和盈利峰值价计算 开盘价 最低价 追踪止损价 盈利峰值价 止损 没被止损 49 再进场策略的设计 使用止损止盈或追踪止盈出场后 如果趋势没有改变 我们仍然需要再进场的策略以避免错失大的波段趋势 可以考虑的再入场的方法有 价格创出新高或新低 再次入场 出场后一定时间后 大趋势仍未改变则再次入场 出场后大趋势未改变 其他辅助指标出现和大趋势一致的进场信号时再次入场 下面以出场后一定时间后大趋势仍未改变即再次入场的方法来举例 50 跟踪止盈后 我们要设个标志 表示曾经出场过 因此要增加两个布尔型序列变量 BoolSeriesbLongStoped false BoolSeriesbShortStoped false 跟踪止盈后 设置这两个变量 多头跟踪止盈后If Low StopLine BuyToCover 0 MyExitPrice bShortStoped true 51 这两个序列变量值必须往下传递 V4中可以免写 if BarStatus 0 bLongStoped bLongStoped 1 bShortStoped bShortStoped 1 多头或空头初次进场和再次进场后 都要将这两个变量复位 bLongStoped false bShortStoped false 为了配合再进场 我们需要记录当前的趋势方向 52 追踪止盈后的等待时间 我们可用止盈后的K线根数来衡量 因为我们止盈后bLongStoped或bShortStoped会被置为True 因此我们可通过一个函数NthCon来寻找跟踪止盈的那根BAR到现在的BAR数 具体止盈后多少根BAR后趋势还在持续再进场 我们可以设置为一个参数 BarsReEntry 多头再进场部分的代码如下BarsAfterLongExit NthCon bLongStoped 1 Commentary BarsAfterLongExit text BarsAfterLongExit If bLongStopedandMarketPosition 0andcondBuy 1 trueandBarsAfterLongExit BarsReEntry Buy Lots Open bLongStoped False HigherAfterEntry Open 53 例6 双均线系统 加上跟踪止盈和再进场策略ParamsNumericLength1 10 NumericLength2 20 NumericLots 1 NumericTrailingStop 1 跟踪止损百分比NumericBarsReEntry 5 出场后趋势维持多少根Bar后再进场VarsNumericSeriesMA1 NumericSeriesMA2 BoolSeriescondBuy false BoolSeriescondSell false NumericMinPoint NumericMyExitPrice NumericSeriesHigherAfterEntry NumericSeriesLowerAfterEntry NumericStopLine 0 BoolSeriesbLongStoped false BoolSeriesbShortStoped false NumericBarsAfterLongExit 0 NumericBarsAfterShortExit 0 Begin 54 if BarStatus 0 V4中可以省略的序列变量传递部分 bLongStoped bLongStoped 1 bShortStoped bShortStoped 1 Commentary bLongStoped IIFString bLongStoped true false Commentary bShortStoped IIFString bShortStoped true false if BarsSinceEntry 1 HigherAfterEntry AvgEntryPrice LowerAfterEntry AvgEntryPrice ElseIf BarsSinceEntry 1 HigherAfterEntry Max HigherAfterEntry 1 High 1 LowerAfterEntry Min LowerAfterEntry 1 Low 1 Else HigherAfterEntry HigherAfterEntry 1 LowerAfterEntry LowerAfterEntry 1 55 MA1 AverageFC Close Length1 MA2 AverageFC Close Length2 PlotNumeric MA1 MA1 PlotNumeric MA2 MA2 condBuy CrossOver MA1 MA2 condSell CrossUnder MA1 MA2 if condBuy falseandcondSell false condBuy condBuy 1 condSell condSell 1 If MarketPosition1andcondBuy 1 trueandbLongStoped false Buy Lots Open HigherAfterEntry Open bLongStoped false bShortStoped false If MarKetPosi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论