立即注册 登录
股海明灯官网 返回首页

碧海竹林的个人空间 http://www.178448.com/?97150 [收藏] [复制] [分享] [RSS]

日志

通达信 公式系统(高级)

热度 1已有 613 次阅读2011-5-21 14:01 |

公式系统(高级) 1. 特殊公式脚本编写

要编写一个公式,必须要明确这个公式对应的理论知识。一套完整的理论知识且能在通达信的公式平台上做成公式还要满足如下要求:

1.              从该理论应能分析出公式启动的起始数据。如股票的开高低收价格、成交量、各财务数据、各即时数据、时间数据、一些常见的技术分析概念、其他理论的结果等,这些数据大部分是系统提供的,而最后两项则要从其他公式中得来也就是对应于公式编写中的指标引用操作(当然在这公式编写前要确保该要引用的指标已实现)

2.              从理论中应能分析出起始数据到结果的明确运算过程。在公式平台中提供了一些系统函数,这些函数包含了部分常用的运算过程(HHV(X,N) 可求N周期内X最高值)。如果理论中的运算过程拆解完全后,能由公式平台中的函数及允许的基本运算全部组成就可以编写成公式了。

 

在之前的学习当中,我们已经对公式系统、公式脚本编辑有了基本的认识。公式系统提供给我们的基本函数、系统公式,就是我们运用公式系统编写自己的公式时的基本元素。对于一些常见的技术分析概念的编写在上一章节已经给出了介绍和示例,本章节主要来介绍一下在公式脚本编写如果用系统函数及基本运算来解决一些特殊难题。

 

1.1在分钟周期下划分交易日

 

1. 均线(分钟):

 

指标名称:均线(分钟)

指标原理:均价=累加自当日开市到当前K线时间内的成交金额/累加自当日开市到当前K线时间内的成交量。

编写分析:

1.确定交易日内第一根K线的位置(难点);

       2.1中确定的位置累加成交金额、成交量(由系统函数SUM实现);

       3.由成交金额、成交量求均价(由除法操作符实现)。

公式脚本:
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)))));

SUM(AMO,BARSLAST(FIRST)+1)/SUM(VOL,BARSLAST(FIRST)+1);

 

上面的公式适用于1分钟,5分钟,15分钟,30分钟,60分钟等五个周期下。将给出每个交易日中各周期下均线的走势。公式脚本编写中的重点就是First变量的确定,这也是这段脚本的亮点。First变量表示的是当日当前周期的第一根K线位置,是通过IF函数的嵌套使用结合各分钟周期的第一根K线的时间得来的。

 

1.2 跨周期引用数据

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

 

1)              对变量用变周期符号(#),改变其周期。这种方式有局限性,只能在小周期公式中得到大周期数据,且仅适用于一些基本数据,如closehighlowopen等。

示例脚本:

日最高价:H;

周最高价:H#WEEK;

运行示例:

2)              在公式脚本中调用其它公式以取得其它周期的数据。调用其它公式,并用#设置其周期。如,公式脚本在日线下运行时,可用Kdj.k#week;来获得kdj在周线下的k值,另属于于同一周线的日线将获得相同的K值。

示例脚本:

公式1

公式名称:JBSJ

公式描述:基本数据

公式脚本:

JC:C;{当前周期收盘价}

JH:H;{当前周期最高价}

JL:L;{当前周期最低价}

JO:O;{当前周期开盘价}

JYC:REF(C,1);{前一个周期收盘价}

 

公式2

公式名称:TEST049

公式脚本:

日线开盘价:JBSJ.JO#DAY;

周线开盘价:O;

月线开盘价:JBSJ.JO#MONTH;

 

 

运行示例:

使用跨周期引用数据时要注意:
  
  1.可供引用的周期类型有:
  
  MIN1MIN5MIN15MIN30MIN60DAYWEEKMONTH
  
  分别表示将15153060分钟K线数据,以及日,周,月K线数据,代入被引用的公式,进行运算。
  
  2.意义:
  
  可将大周期内跑的数据,引用到小周期内来跑;也可将小周期内跑的数据,引用到大周期内来跑。

 

    3.切勿对开高低收以外的数据直接使用变周期转换!

 

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

 

1.3 对某个时间段统计

1)某绝对时间段最高价

       此脚本段求199883日到19981220日间的最高价:

       HH:=IF(YEAR=1998 AND (MONTH>8 OR (MONTH=8 AND DAY>=3) ) AND (MONTH<12 OR (MONTH=12 AND DAY<=20) ),H,0);{HH变量在该时间段内等于H,其他时间为0}
  HHV(HH,0);{此例求199883日到19981220日间的最高价}

2)某相对时间段最高价

       60天前到40天前之间的最高价
  REF(HHV(H,60-40),40);

1.4 在某个时间段内某条件满足

TT:=C/REF(C,1)>1.095;{是否涨停}
COUNT(TT,20)>0;{
二十个交易日内时候涨停过}

上面的脚本配合1.3中示例可以写出历史某绝对时间段,或相对时间内是否涨停过的选股公式。

 

上图中的效果还可以借助Filter这个函数来实现。

1.5 K线绘制

示例公式:博弈K线

公式名称:博弈K线

公式脚本:

BKO:WINNER(O),NODRAW;

BKH:WINNER(H),NODRAW;

BKL:WINNER(L),NODRAW;

BKC:WINNER(C),NODRAW;

DRAWKLINE(BKH,BKO,BKL,BKC);

运行示例:

1.6 创新高周期数

成交量创新高周期数脚本:

FV:=IF(BARSCOUNT(C)=0,9999999999,VOL);

量创新高周期数:SUMBARS(REF(FV,1)-FV,0);

{这里的关键是 REF(FV,1)-FV ,想想看写成 FV-REF(FV,1) 行不行?};

 

 

1.7脚本控制

在通达信的公式脚本中没有专门的控制语句,一切都是变量(仅有输出与不输出的区别),所以要实现应用于多种情况的脚本也要依靠变量来控制。

系统函数中有几个重要的函数就是IF,IFF,IFN,TESTSKIP.请大家注意的是通达信的函数的参数都是先计算出结果然后将参数传给函数的。因此对于TESTSKIP,最好作为一条单独的语句来使用。

公式脚本1:同1.2中的JBSJ公式。

{用于引用股票的基本数据。}

公式脚本2FZMN分钟模拟

{用于通过几种分钟周期的数据模拟出当天对应于改周期的各项数据}

N:=IF(PERIOD=0,1,

IF(PERIOD=1,5,

IF(PERIOD=2,15,

IF(PERIOD=3,30,

IF(PERIOD=4,60,0)))));

CTRL:=TESTSKIP(N=0);{仅用于分钟周期}

 

TTIME1:=(TIME/100);

TTIME2:=IF(TTIME1<1000,TTIME1-930,

       IF(TTIME1<1100,TTIME1-1000+30,

       IF(TTIME1<1131,TTIME1-1100+90,

       IF(TTIME1<1300,120,

       IF(TTIME1<1400,TTIME1-1300+120,

       IF(TTIME1<1500,TTIME1-1400+180,

       240))))));

 

TTIME:=TTIME2/N;

YTC:="JBSJ.JYC#DAY";

YTDPC:="399300$CLOSE#DAY";

ZFS:=(C*1000/YTC)-1000;

AC:="399300$CLOSE";

ZFA:=(AC*1000/YTDPC)-1000;

 

DJC:(ZFS-ZFA)*YTC/1000+YTC;

DJH:IF(TTIME<2,DJC,HHV(DJC,TTIME-1));

DJL:IF(TTIME<2,DJC,LLV(DJC,TTIME-1));

DJO:REFV(DJC,TTIME-1);

{DRAWKLINE(DJH,DJO,DJL,DJC);};

 

公式脚本3

在日线周期下,引用公式2中的数据(通过引用指标设置周期的方法来获得分钟周期的数据),通过K线绘制的函数就可以画出模拟 K线了。

JH:="FZMN.DJH#MIN5";

JO:=" FZMN.DJO#MIN5";

JLC:=" FZMN.DJL#MIN5";

JC:=" FZMN.DJC#MIN5";

DRAWKLINE(JH,JO,JLC,JC);

 


路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (2 个评论)

回复 碧海竹林 2011-5-23 15:09
http://ishare.iask.sina.com.cn/f/15590370.html这个地方是WORD的文档。可以下载下来看。这里面有图片。
回复 马孝谦 2012-9-4 14:39
谢谢分享,学习了
本文来自: 股海明灯论坛  详细文章参考:http://www.178448.com/thread-323943-1-1.html

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Archiver|手机版|小黑屋|股海明灯官网 ( 京ICP备18020431号 )

GMT+8, 2024-5-11 18:53 , Processed in 0.055660 second(s), Total 12, Slave 11 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

返回顶部