在同一个公式脚本中,所有变量的数据周期都是相同的,就是调用公式时设置的周期。在公式脚本中要用其它周期的数据,共有两种方式:

# 跨周期引用符号

"#"后可用MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR

  • 例如:
TMP1:=CLOSE#WEEK;
1
  • 非指标引用时只可用于OPEN,HIGH,LOW,CLOSE,VOL,AMOUNT,VOLINSTK等,切勿对此外的数据直接使用变周期转换!
  • 当前周期可用MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR,不支持多秒线,多分钟线和多日线,
  • 引用周期必须要高于当前周期,5秒线只支持引用1分钟线和5分钟线,周期数据转换得到
TMP2:=KDJ.K#WEEK;
1
  • 跨周期指标引用,引用品种的对应周期的数据必须要先下载到本地
  • 跨周期指标引用不支持带参数
  • 提示:跨周期时,可能会引用到未来数据

使用跨周期引用数据时注意点:

  • 切勿对大周期内跑的数据使用小周期转换!无论是开高低收等基本数据、还是自定义变量,都无法从大周期数据直接转换成小周期数据,只能通过公式引用来获得小周期数据。

# 1.对变量用变周期符号(#),改变其周期。

这种方式有局限性,只能在小周期公式中得到大周期数据,且仅适用于一些基本数据,如close,high,low,open等。

  • 示例1:

公式1:
公式名称:BARH
公式脚本:

周期最高价:H;
周最高价:H#WEEK;
月最高价:H#MONTH;
1
2
3
  • 运行示例1:

# 2.在公式脚本中调用其它公式以取得其它周期的数据。调用其它公式,并用#设置其周期。

  • 示例2:公式脚本在日线下运行时,可用BAR.BARH#WEEK;来获得BAR公式在周线下的BARH值。

公式1:
公式名称:BAR

BARC:C;{当前周期收盘价}
BARH:H;{当前周期最高价}
BARL:L;{当前周期最低价}
BARO:O;{当前周期开盘价}
1
2
3
4

公式2:
公式名称:BARREF

日线开盘价:BAR.BARH#DAY;
周线开盘价:BAR.BARH#WEEK;
月线开盘价:BAR.BARH#MONTH;
1
2
3
  • 运行示例2:

  • 示例3:

公式1:
公式名称:TMP

REF(OPEN,1); {此指标用于分钟周期线,同时在昨开盘价的位置上画一根线。}
1

公式2:
公式名称:DFDF

E:=CURRBARSCOUNT;
E1:=DAY!=REF(DAY,1);
E2:=BARSLAST(E1)+1;
E3:=MA(C,E2);
E4:=SUM(AMO,E2)/SUM(VOL,E2)/100;
E5:=IF(CAPITAL>0,E4,E3);
昨开:IF(E<=CONST(E2),TMP#DAY,DRAWNULL),COLORCYAN,LINETHICK3; 
1
2
3
4
5
6
7
  • 运行示例3:

# 日内周期引用日周期数据

ZQ:=IF(PERIOD=0,240,
IF(PERIOD=1,48,
IF(PERIOD=2,16,
IF(PERIOD=3,8,
IF(PERIOD=4,4,
IF(PERIOD=5,1,1))))));

FIRST:=IF(PERIOD=0,HOUR=9 AND MINUTE=31,
IF(PERIOD=1,HOUR=9 AND MINUTE=35,
IF(PERIOD=2,HOUR=9 AND MINUTE=45,
IF(PERIOD=3,HOUR=10 AND MINUTE=0,
IF(PERIOD=4,HOUR=10 AND MINUTE=30,0)))));     {确定交易日内第一根K线的位置}
RNZQ:=IF(PERIOD=5,1,BARSLAST(FIRST)+1);       {确定交易日内的K线的位置,日周期确定为1根K线}

DIN9:REF(HHV(HIGH,ZQ*9),RNZQ),COLORCYAN;      {过去9个交易日最高价,适用于日内周期和日周期}
DI9:REF(LLV(LOW,ZQ*9),RNZQ),COLORMAGENTA;     {过去9个交易日最低价,适用于日内周期和日周期}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 运行实例: