交易开拓者-TB 公式(一)

发布时间:2025-12-10 11:41:18 浏览次数:18

文章目录

  • 2 TB公式编写
  • 1. TB 公式的结构
    • TB公式一般由三段构成:
    • 参数
    • 变量
    • 表达式
    • Bar数据
    • 开仓平仓

2 TB公式编写

1. TB 公式的结构

TB公式一般由三段构成:

  • 公式参数段
ParamsNumeric Length(10); #定义数值型参数Length,初始值为10......
  • 公式变量段
VarsNumericSeries MA; #变量定义,变量名为MA......
  • 公式脚本段
BeginMA = AverageFC(Close,Length);.....End

参数

  • 参数声明,必须声明,使用Params进行参数声明,整个公式只能出现一个Params声明,并且要放到公式的开始部分,定义变量之前。
ParamsBool bTest(False); //定义布尔型参数bTest,默认值为FalseNumeric Length(10);NumericSeries Price(0); //定义数值型序列参数,默认值为0NumericRef output(0); //定义数值型引用参数output,默认值为0;
  • 使用参数为了便于使用和修改参数的具体数值;
    若10天为周期的均线指标改为20天为周期;
BeginPlotNumeric("MA",AverageFC(Close,10)).....End

需要逐个修改,定义参数后,只需修改定义的参数即可,后面的脚本段不需修改。

ParamsNumeric Length(10);BeginPlotNumeric("MA",AverageFC(Close,Length)).....End

直接修改参数值:在策略名称处右击,属性设置,修改参数;而不用在公式中修改后再重新应用。


参数优化:在策略名称处右击,参数优化,设置最大值、最小值、步长,得到各个参数对应的结果


变量

  • 整个公式只能出现一个Vars声明,并且要放到公式的开始部分,定义变量之前。
  • 变量的主要作用是方便之后脚本的引用

变量的声明:变量类型仅仅支持六种,没有引用类型
对变量值没有硬性规定,可以赋值也可以不赋值

Vars变量类型 变量名(默认值)

变量的赋值:声明完成后,可以对变量直接进行赋值

Vars变量名称 = 表达式;

序列变量:序列变量可以可回溯,包括NumericSeries,BoolSeries,StringSeries

  • 序列变量和简单变量一样,可以对其赋予默认值;
  • 在指定条件下对序列变量赋值,他的值会传递下去,直至语句对其进行新的赋值。
  • 而普通变量,赋值仅针对条件满足的这个Bar,其他Bar上的变量记录仍是初始值。
    全局变量:保存的变量值不会因为Bar的改变而消失,他的生命范围是超级图表,关闭超级图标后,它保存的值才会消失。

表达式

不同数据类型的转换:操作数的数据类型应该符合要求,不同的数据应该转换为同一类型
例:commentary("close="+Text(close))
commentary 只能显示字符串类型的注释信息,因此,使用Text()函数将close的数值转化为字符再显示。

Bar数据

  • 不同周期下形成的序列数据,在单独的每个bar上面包含开盘价、最高价、最低价、收盘价、成交量及时间,期货等品种还有持仓量。
  • 所有的Bar 按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。

Bar数据系统函数

函数名间写描述
DateD当前Bar的日期
TimeT当前Bar的时间,即当前Bar开始生成的时间
OpenO当前Bar的开盘价
HighH当前Bar的最高价,Tick为当时的委卖价
LowL当前Bar的最低价,Tick为当时的委买价
CloseC当前Bar的收盘价
ValV当前Bar的成交量
OpenInt当前Bar的持仓量
CurrentBar当前Bar的索引值,从0开始计时
BarStatus当前Bar的状态量,0表示第一个Bar,1表示中间的普通的Bar,2表示最后一个Bar

Bar的状态值

  • BarStatus表示当前公式应用商品当前Bar的状态值,分为三种状态,0表示第一个Bar,1表示中间的普通的Bar,2表示最后一个Bar
  • 只有在Bar的返回值为2的情况下,公式指令才会对合约进行委托。

开仓平仓

脚本段设置条件

ParamsNumeric Length(10);VarsNumericSeries MA10;BeginMA10 = Average(Close,Length);PlotNumeric("10日均线",MA10);If(High>MA10[1]) Buy(1,MA10[1]);Else If(Low<MA10[1]) SellShort(1,MA10[1]);End

***若想直接修改参数值

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477