交易开拓者TB夜盘编程技术集

来源:互联网 发布:怎样判断淘宝评价真假 编辑:程序博客网 时间:2024/04/29 12:34
一、夜盘交易的基本情况

目前期货市场上,越来越多的品种都加入了夜盘交易大军。截止7月23日,目前已经确定在夜盘交易的有:

上海期货交易所:白银ag,铜cu,金au,锌zu

大连商品交易所:棕榈油p、焦炭J

另外,根据郑州商品交易所的公告,2014年8月4日也将会启用白糖、棉花和甲醇三个品种的夜盘交易。



二、交易开拓者与夜盘相关的几个函数

1、Date

属于系统函数,使用时类似于序列变量回溯值的使用。如Date,Date[1],Date[2]。

在无夜盘的情况下,我们经常使用这种语句来表示一天的开始初始化:

If (Date!=Date[1])

{ }

Else

{ }

这种语句,在有夜盘的情况下不能使用。原因是晚上2:00的bar的date值,与早上9:00的bar的date值是一样。晚上21:00的bar的值,也与下午3:00的bar的date值一样。Date!=Date[1]只发生在晚上0:00的时候。



2、CurrentDate

获取交易开拓者平台的当前日期。获取的是当前时间,与bar值无关。



3、Truedate

交易开拓者TB平台自带的“用户函数”,但在TB手册中没有介绍。

由于是用户函数,引用方法是:Truedate(0), truedate(1), truedate(2)等。

truedate返回指定Bar的真正交易日期。

所谓真正交易日期,简单而言就是所有夜盘算入一一个白天的交易日日期。

周一晚上21:00开始的夜盘,其truedate属于周二的日期;周五晚上开始的夜盘,其truedate属于下周一。用以下语句可以作为一天的初始化

If (trueDate[0]!=trueDate[1])

{ }

Else

{ }



4、OpenD

交易开拓者TB平台自带的“用户函数”,但在TB手册中也有介绍。其引用方法是OpenD(0), OpenD(2), OpenD(3)等。

OpenD是求N天前的开盘价,语法是:Numeric OpenD(Numeric daysAgo)

有夜盘的品种的开盘价OpenD是取晚上9:00的开盘价,

而没有夜盘的品种的开盘价OpenD是取早上9:00的开盘价。

而highD,lowD,其意义是相同的,即是取一个完整truedate的最高、最低值。



5、Time

系统函数,返回当前公式应用商品在当前Bar的时间。语法 Numeric Time()。



三、几个问题的编程实现

1、如何过滤掉集合竞价

采用以下语句,过滤掉两个时间的集合竞价,适合于夜盘与非夜盘品种一起用。

If(BarStatus==2 && Time==0.090000 && High==Low) return;

If(BarStatus==2 && Time==0.210000 && High==Low) return;



2、是否可以用bar的数目来判断当天的情况

虽然当使用的K线周期确定,一天bar的数目也是确定的。但是在遇到节假日时,当天晚上经常没有夜盘,所以会导致bar的数目混乱,不宜使用。



3、如何用交易开拓者查看各函数值的情况

当不清楚各函数,如前文所说的openD, truedate的取值时,建议使用以下公式应用,放在具体的超级图表上,则可以看到各函数的取值情况。

Params

Vars

Begin

FileAppend ("d:\\print2.log",DateTimeToString(Date+Time)+" Date=" +Text(Date)+" Date[1]="+Text(Date[1])+" CurrentDate="+Text(CurrentDate)+" OpenD(0)="+Text(OpenD(0))+" OpenD(1)="+Text(OpenD(1))+" OpenD(2)="+Text(OpenD(2))+" truedate(0)="+Text(truedate(0))+" truedate(1)="+Text(truedate(1))+"\t");

End



4、将以往程序修改成为适应夜盘程序的思路

主要看使用的策略情况,以下是几个可能影响到的点:

(1)交易日bar的数目,bar的时间

(2)是否使用(Date!=Date[1])的判断

(3)使用openD,HighD, LowD的逻辑判断,如有夜盘,会指到21:00开盘后的一天的价格。
0 0
原创粉丝点击