MultiCharts关于国内夜盘商品CloseD类函数的修改方式
在使用MC编写程序时,时常会用到OpenD、HighD、LowD、CloseD此类函数,例如,需要使用到前一天的最高价时,会引用函数HighD(1),软件默认的源码为“Date<>Date[1];”,即以系统日期时间的“00:00“作为两个交易日之间的分隔点,这种写法在只有日盘品种上使用没有任何问题,但是自2013年7月5日晚上推出连续交易开始,原先的程序会在有夜盘的品种上遇到不小的问题。
下图为第一批连续交易品种之一的上海期货交易所黄金期货,沪金主力连续5分钟K线图。叠加软件自带指标“OHLC Yesterday”, 其中,橙色、红色、绿色、黑色横虚线分别为前一自然日的开盘价、最高价、最低价、收盘价,红色竖线为自然日00:00分隔线,灰色竖点划线为交易日15:00收盘价划分线。
由此可见,应用原始的OpenD、HighD、LowD、CloseD此类函数,会与实际交易日的开盘价、最高价、最低价、收盘价产生较大的偏差,为了避免这个问题,我们可以将原始函数“OHLCPeriodsAgo”稍作修改,可将此句:
Condition1 = Date <> Date[1]
改写为:
Condition1 =(time>2100 and time[1]=1500) or (time[1]=1500 and time>0900)
这样不仅可以解决本文开头所涉及的问题,而且可以将,夜盘品种在节日前没有夜盘的问题,一并解决。
不行的,因为也存在某些交易日,没有3:00收盘的情况。
((Date = Date[1] and Time >= 1800 and Time[1] < 1800) or (Date Date[1] and not (Time = 1800)))
我是这样判断的。考虑了date,就又不同了。这里我是用1800作为分割时间的。