欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件功能教学汇总区 → stkindi函数使用范例

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有11232人关注过本帖树形打印复制链接

主题:stkindi函数使用范例

帅哥,在线噢!
wenarm
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
stkindi函数使用范例  发帖心情 Post By:2018/4/10 11:27:14 [只看该作者]

       引用函数是用户最常用的函数,但是很多用户在刚接触使用时,总是有些无所适从,所以本帖专门针对引用方式进行范例式说明。

金字塔提供的引用函数分别是CALLSTOCK、CALLSTOCKEX和STKINDI、STKINDIEX,他们都可以完成跨品种、跨市场、跨周期引用需求。但是本帖仅重点说明STKINDI函数的用法。

 

       其实STKINDI就像是“秘书”,而“老板”(当前公式)可能需要查阅某一组专业数据。这个时候老板会将任务传达给“秘书”。

如:老板需要找会计小李,获得上海地区每一天的营业收入汇总数据时,就会把该任务下达给“秘书”,而对于秘书来说,

首先是找到“小李”(品种),然后让小李统计“每一天”(周期)的“上海地区”(公式名称)的“营业收入”(变量)情况。最后,秘书将一组计算好的数据文件取会,交给老板进行分析。基本就是这个流程。

STKINDI在引用时,其被引用公式以及被引用公式变量必须存在。否者无引用结果输出。(即如果小李已经离职或者上海地区没有分公司,那么秘书就会空手而回。)

 

 STKINDI使用方法及参数详细解释如下:

 用法:
    
  STKINDI(STKLABEL,INDINAME,CO,PERIOD[,Num])
            STKLABEL 指定品种代码,如为空表示当前品种,指定品种时推荐使用市场+代码的格式,例如SH600000,ZJIF00等.
            INDINAME 调用的指标、交易系统 (被引用变量必须是以:做变量的线输出类型)
            CO 坐标轴类型 0交易日坐标 1自然日 2交易交易时间
           PERIOD 周期类型,有效值范围为(0-24),依次表示:
                    0:分笔成交、1:1分钟、2:5分钟、3:15分钟、4:30分钟、5:60分钟、
                    6:日、7:周、8:月、9:年、10:多日、11:多分钟、12:多秒、
                    13:多小时、14:季度线、15:半年线、16:节气线、17:3分钟、18:10分钟、

                    19:多笔线、20:自定义N日线、21:自定义N分钟线、22:自定义N秒线
                    23:自定义N笔线;24:自定义N小时线;25:等价K线;26:等量K线;
             Num变量说明:
                      1、当PERIOD周期<=19,Num为左右偏移周期个数(可选),0表示引用当前数据,小于0为引用之前数据,

                            大于0为引用之后数据;
                      2、当PERIOD周期>=20和<=24时,Num为自定义N周期的具体数字

               警告:小周期引用大周期会带来信号闪烁的严重问题,推荐使用上周期已经确立的大周期信号(参数Num = -1)

 

 

       根据前面的说明,我们可以分析两点有用信息,即stkindi函数引用的数据,必须在某个具体公式中。其次,在这个具体公式中必须有被引用的变量。那么我们首先来建立一个被引用的公式。

示例:我们需要引用RB00合约5分钟周期下的macd的数据,作为当前周期品种分析的因子项使用。

首先,我们创建被引用公式并给其命名。(命名的公式名称会在引用公式中用到)。

被引用公式名称:my_macd

被引用公式内容:

             DIFF :EMA(CLOSE,12) - EMA(CLOSE,26);
           DEA  :EMA(DIFF,9);
           MACD :2*(DIFF-DEA);

 

引用公式名称:my_text

引用公式内容:

            STKINDI('RB00','my_macd.macd',0,2,0);//'my_macd被引用的“公式名称”,macd是被引用的变量。他们两者之间用“.”连接。

注:  STKINDI('RB00','被引用公式名称.被引用变量',0,引用的周期,0);

整体如下图的关系:


图片点击可在新窗口打开查看此主题相关图片如下:0.jpg
图片点击可在新窗口打开查看

 

理解上述过程后,用户在理解向前引用和N>19以后的参数处理上,应该会更容易些。

 

 

 

 

跨周期引用常见问题:

 

1.跨周期引用之间是按照时间对齐原则进行处理的,(都是基于历史数据完整的情况)。由此可以引申出3种情况,分别是引用同一周期,引用大周期,引用小周期。

 

同周期引用:

我们来逐个分析。引用同一周期的情况最好理解,因为时间上最好对齐

如:“RB00”5分钟周期引用"HC00" 5分钟周期的数据。,那么他们每根k的时间是对齐的。

RB00            13:00:00   13:05:00     13:10:00

HC00           13:00:00   13:05:00     13:10:00

 

小周期引用大周期:

如:“RB00”1分钟周期引用"HC00" 5分钟周期的数据。,那么他们每根k的时间如下方式对齐。

RB00            14:55:00   14:56:00     14:57:00     14:58:00   14:59:00     15:00:00 

HC00           14:55:00                                                                                 15:00:00  

       如果当前北京时间为14:56:00,则RB00对应的k线时间为14:57:00,而它在引用5分钟周期数据时,按时间对齐原则HC00并无14:57:00的k线,此时,根据选择对应HC00最近一根k线的5分钟数据,即15:00:00 位置。所以会出现14:56:00、     14:57:00、14:58:00、14:59:00、15:00:00  五根k线都对应HC00的15:00:00   K线位置。

       所以在小引大时,由于小周期数据走完,但是被引用的大周期数据周期还未结束。那么大周期的信号存在波动时,小周期和其对应的历史k线位置也会随着闪动。也就是图表上经常提到的信号闪烁。

分析测试结果:(引用大周期的时间可以更加简明)

 
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 

 

大周期引用小周期:

 

如:“RB00”5分钟周期引用"HC00" 1分钟周期的数据。,那么他们每根k的时间如下方式对齐。

RB00           14:00:00                                                                                  14:0500  

HC00           14:00:00   14:01:00     14:02:00     14:03:00   14:04:00      14:05:00   

从k线时间上看,大周期引用小周期,也是按相同的时间对齐,当北京时间在14:02分时,RB00的K线时间是14:05:00。HC00的k线时间是14:03(最新的K)。这个时候按时间对其并没找到HC00的14:05:00的k,则就近原则选取。所以此时RB00引用的HC00的k线值是14:03:00这根,当HC00,这个k线走完后,RB00的K线依旧是14:05:00,它得到的值开始是HC00的下一根14:04:00的值。直到RB00本周期的k线结束变成历史k线。那么此时引用的值就是HC00的14:05:00。

(从上面分析结果看,其引用的过程在历史中是无法被体现出来的。就像k线最终只有开高低收一样。你压根不知道k线生成过程中经历过那些过程。)

 
图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

 

 

向前引用问题:

STKINDI函数中,可以向前偏移使用,这里的偏移量,指的是被引用周期。而不是当前策略运行的周期。

如:“RB00”1分钟周期引用"HC00" 5分钟周期的数据,并且向前偏移1根数据。

RB00            14:55:00   14:56:00     14:57:00     14:58:00   14:59:00     15:00:00 

HC00           14:55:00                                                                            15:00:00  

 

如果当前k线对应的HC00k线时间是15:00:00.向前引用一根数据,指的是HC00的5分钟周期数据,实际就是14:55:00 。并不是许多用户理解的当前“RB00”1分钟k线的上一根数据。

 

引用非时间划分周期问题:

 

引用非时间方式划分的周期数据容易造成引用数据发生变化。如:在1分钟数据下引用100笔多笔周期的开盘价,由于多笔线是根据分笔数量划分的,属于非时间划分方式。而跨周期引用函数是按时间对其的原则进行处理。那么就可能出现,两个以上的100笔线,公用一个时间点的情况,如下图。当行情走完到倒数第3根k线后,这个时候引用的开盘价时倒数第二根k线的开盘价(02:59位置),当倒数第2根k线走完,时,由于最后一根k的时间依旧是02:59,这个时候引用的开盘价则变成了最后一根的开盘价。(引用的原则是和本周期的时间对齐或者最近的值时间点。)


图片点击可在新窗口打开查看此主题相关图片如下:9.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:10.png
图片点击可在新窗口打开查看 

 

 

引用函数之间的区别:

CALLSTOCK:其只能引用k线自身相关的属性值。如:开高低收(其详细说明见软件函数列表)

STKINDI:引用其它公式指标的值,即被引用公式和变量一定要存在。

CALLSTOCKEX:作用和callstock一样,但是其可以限定引用的k线数量范围。可以提高引用执行的效率

STKINDIEX:作用和STKINDI一样,但是其可以限定引用的k线数量范围。可以提高引用执行的效率


[此贴子已经被作者于2021/8/6 15:50:45编辑过]


编程无捷径,技巧靠积累。
 回到顶部