在通达信公式系统中,PERIOD函数是用于判断当前K线周期类型的关键函数,其返回值对应不同时间周期。以下是其核心用法及场景示例:
一、PERIOD函数返回值
在通达信公式系统中,PERIOD函数返回值与周期的对应关系如下:
返回值 | 对应周期类型 |
0 | 1分钟线 |
1 | 5分钟线 |
2 | 15分钟线 |
3 | 30分钟线 |
4 | 60分钟线(即小时线) |
5 | 日线 |
6 | 周线 |
7 | 月线 |
8 | 多分钟线(自定义分钟数) |
9 | 多日/季/年线 |
12 | 5秒线/多秒线 |
>=13 | 自定义周期 |
补充说明:
未定义的返回值
10和11在官方标准列表中未被明确分配周期类型13,可能为保留值或特定版本扩展用途。
自定义周期应用
当返回值≥13时,周期参数需通过软件手动设置(如特定分钟数、小时组合等),非系统预设标准周期17。
典型代码应用
// 仅在日线周期下显示10日均线
十日线: IF(PERIOD=5, MA(C,10), DRAWNULL);
二、典型应用场景
1. 周期条件筛选
在指标公式中动态控制显示内容,例如仅在日线周期下绘制10日均线:
十日线: IF(PERIOD=5, MA(C,10), DRAWNULL);
此时,非日线周期(如周线、分钟线)下该均线不显示。
2. 跨周期数据引用
结合#符号引用更高周期数据(需注意仅支持从低周期引用高周期):
周线收盘价 := CLOSE#WEEK; // 在日线周期下引用周线收盘价
但需确保本地已下载对应周期数据,且避免直接转换非基本数据(如自定义变量)。
3. 流程控制优化
通过TESTSKIP中断无关周期计算,提升公式效率:
N := IF(PERIOD=0,1, IF(PERIOD=1,5, IF(PERIOD=2,15, ... ))); // 根据周期设定参数
CTRL := TESTSKIP(N=0); // 仅在非分钟周期下中断后续计算
此方法可减少冗余计算。
4.时间窗口动态计算
根据当前周期类型动态调整计算逻辑。例如,在分钟周期中计算交易日内的成交均价走势:
FIRST:=IF(PERIOD=0, HOUR=9 AND MINUTE=31, // 1分钟周期首根K线时间
IF(PERIOD=1, HOUR=9 AND MINUTE=35, ...));// 5分钟周期首根K线时间
当日均价:SUM(AMO,BARSLAST(FIRST)+1)/SUM(VOL,BARSLAST(FIRST)+1)/100; // 动态起点计算}
5.条件触发式策略
根据不同周期执行差异化交易策略。例如,在小时线及以上周期启用趋势跟踪策略,分钟线启用短线信号:
趋势策略: IF(PERIOD>=4 AND PERIOD<=7, 趋势条件, 0); // 周期4-7为小时/日/周/月线
短线信号: IF(PERIOD<=3, 突破条件, 0); // 周期0-3为分钟线
注意事项
周期兼容性
跨周期引用需遵循“高级别周期引用低级别周期”原则(如日线可引用分钟线数据,反之需谨慎处理)5。
自定义周期处理
当PERIOD≥13时,需手动配置软件中的自定义参数(如特殊分钟数或混合周期)7。
未来数据风险
在多周期叠加场景中,避免直接引用未完整周期的数据导致信号漂移5。
三、注意事项
周期一致性
公式内所有变量默认继承调用时设置的周期,跨周期引用需严格遵循“低周期引用高周期”规则。
未来数据风险
跨周期引用可能引入未来数据(如周线引用在日线中),需在策略回测中验证逻辑有效性。
返回值扩展性
自定义周期(返回值≥13)需通过软件设置实现,常规公式中较少直接使用。
四、综合案例
构建一个仅在周线周期显示20日均线,并在日线周期引用周线数据的指标:
周均线显示: IF(PERIOD=6, MA(C,20), DRAWNULL);
日线引用周线收盘价: CLOSE#WEEK;
{ 转载自好运哒哒指标源码网:【函数详解】通达信PERIOD周期类型使用详解|
https://www.haoyundada.com/8003.html}
{==========================================================================================}