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

文章目录

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

2 TB公式编写

1. TB 公式的结构

TB公式一般由三段构成:

  • 公式参数段
Params
	Numeric Length(10);  #定义数值型参数Length,初始值为10
	......
  • 公式变量段
Vars
	NumericSeries MA;   #变量定义,变量名为MA
	......
  • 公式脚本段
Begin
	MA = AverageFC(Close,Length);
	.....
End

参数

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

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

Params
	Numeric Length(10);
Begin
	PlotNumeric("MA",AverageFC(Close,Length))
	.....
End

直接修改参数值:在策略名称处右击,属性设置,修改参数;而不用在公式中修改后再重新应用。
2. 交易开拓者-TB 公式(一)_第1张图片
2. 交易开拓者-TB 公式(一)_第2张图片
参数优化:在策略名称处右击,参数优化,设置最大值、最小值、步长,得到各个参数对应的结果
2. 交易开拓者-TB 公式(一)_第3张图片
2. 交易开拓者-TB 公式(一)_第4张图片
2. 交易开拓者-TB 公式(一)_第5张图片

变量

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

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

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

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

Vars
	变量名称 = 表达式;

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

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

表达式

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

Bar数据

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

Bar数据系统函数

函数名 间写 描述
Date D 当前Bar的日期
Time T 当前Bar的时间,即当前Bar开始生成的时间
Open O 当前Bar的开盘价
High H 当前Bar的最高价,Tick为当时的委卖价
Low L 当前Bar的最低价,Tick为当时的委买价
Close C 当前Bar的收盘价
Val V 当前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的情况下,公式指令才会对合约进行委托。

开仓平仓

脚本段设置条件

Params
	Numeric Length(10);
Vars
	NumericSeries MA10;
Begin
	MA10 = Average(Close,Length);
	PlotNumeric("10日均线",MA10);
	If(High>MA10[1]) Buy(1,MA10[1]);
	Else If(Low<MA10[1]) SellShort(1,MA10[1]);
End

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

你可能感兴趣的:(#,交易开拓者教程)