文章目录 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变量名称 = 表达式;序列变量:序列变量可以可回溯,包括NumericSeries,BoolSeries,StringSeries
序列变量和简单变量一样,可以对其赋予默认值;在指定条件下对序列变量赋值,他的值会传递下去,直至语句对其进行新的赋值。而普通变量,赋值仅针对条件满足的这个Bar,其他Bar上的变量记录仍是初始值。全局变量:保存的变量值不会因为Bar的改变而消失,他的生命范围是超级图表,关闭超级图标后,它保存的值才会消失。 表达式
不同数据类型的转换:操作数的数据类型应该符合要求,不同的数据应该转换为同一类型
例:commentary("close="+Text(close))
commentary 只能显示字符串类型的注释信息,因此,使用Text()函数将close的数值转化为字符再显示。
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表示最后一个BarBar的状态值:
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***若想直接修改参数值