程序化交易之教你写公式
公式入门—概述
输出
公式按时间顺序将计算结果显示在图形上。
公式入门—名词解释
技术指标
将行情数据进行数学计算后, 用计算结果绘制辅助分析图形。如MA、KDJ
MA指标
公式入门—概述
条件选股
根据选股公式设定的条件, 从众多股票中选出符合条件的股票
备选股票
600000 浦发银行 600004 白云机场 600005 武钢股份 600006 东风汽车 600007 中国国贸 600008 首创股份 600009 上海机场
FOR A=1 TO 100
FOR [变量]=[初值]
DO R:=R+CLOSE;
DOWNTO [终值]
DO [语句]
FOR A=100 DOWNTO 1 DO R:=R+CLOSE;
[变量]的值从[初值] 自动递加到[终值], 每递加一次执行一次 DO后面的语句
1
例: 将100天的收盘价相加
[变量]的值从[初值] 自动递减到[终值], 每递减一次执行一次 DO后面的语句
例
公式编写—格式与法则
INDEXC 上证指数收盘价
INDEXV 上证指数成交量
000001$VOL 引用上证指数成交量
SZ000002$VOL 引用深市股票成交量
SH600000$VOL 引用沪市股票成交量
公式编写—简单公式编写
提取K线上各类数据数值的常用函数
最高价 HIGH()、HIGH、H
开盘价 OPEN()、OPEN、O
数组使用前需声明: VARIABLE:A[20]=0; VARIABLE:A[10]=’AX’;
数组使用时必须带序号, 数组不能引用过去的值
REF(A[3],10); 以上结果还是A[3]
公式编写—格式与法则
用于提取股票财务报表 中的数据, 如每股收益,公积金等
公式中用数字代码 表示各财务项目
PFFIN(N,M)、 PFSTR(N,M) 取专业财务数据值
600000 浦发银行 600015 华夏银行 600016 民生银行
公式入门—概述
参数
公式中所使用的变量。
HHV(HIGH,3)=HHV(HIGH,0);
HHV(HIGH,N)=HHV(HIGH,0);
公式入门—概述
参数
公软式件中所变使 量用的的设变置量界。面
可设多个变量
变量的默认值
设定变量的 变量的最小 取值范围 变动单位
POINTDOT 小圆点线
例
公式编写—格式与法则
引用格式:
”MACD.DEF”(26,12,9)
“指标.指标线”(参数)
引用计算参数为
26、12、9的MACD
指标中的DEF值
例
公式编写—格式与法则
引用格式: “公式名称.指标线名称
#周期"(参数表)
"KDJ.K#WEEK“
引用周K线的KDJ指标 中K指标线的值
公式管理界面
为公式取名、 描述、加密
选择公式归属类型 和绘图方式
给公式的用法和 参数的定义做注释
设置公式 适用的周期
定义交易指令 发出的条件
公式入门—公式设定步骤
公式管理界面
公式中参数 设置框
调试并测试 公式是否有误
引用现有的函数 和公式代码
公式代码 编写区
公式入门—公式设定步骤
KDJ编写示例
RSV=﹙收盘价-最近N日最低价﹚/﹙最近N日最高价-最近N日最低价﹚×100
用今天成交量 给A赋初值
给天数计算变量 B赋初值1
A累加B天前的成交量 B自加1
成交量累计小于流通盘 累计天数小于上市天数
公式编写—格式与法则
循环中再套入循环
FOR A=0 TO 99 DO BEGIN FOR B=A+1 TO 99 DO BEGIN IF REF(C,A)=REF(C,B) THEN ND:=ND+1; END END
目录 1 公式入门
2 公式编写
3 公式调试与
测试
4 技术指标公式
编写
5 条件选股公式
编写
6 五彩K线公式
编写
7 交易系统公式
编写
8 公式
交易验证
公式编写—格式与法则
公式中标点符号 均为半角符号
一个公式代码中最多只能有 16条绘图语句
公式中每条语句 以分号结尾
常用函数可简写: OPEN=O CLOSE=C HIGH=H LOW=L
公式入门—公式设定步骤
KDJ编写示例
K=RSV的M1日移动平均值
K︰
赋值并画线语句
SMA﹙RSV﹐M1﹐1﹚﹔
计算移动平均值函数
K︰SMA﹙RSV﹐M1﹐1﹚﹔
公式入门—公式设定步骤
KDJ编写示例
D线=K的M2日移动平均值 D︰SMA﹙K﹐M2﹐1﹚﹔
J线=3×D-2×K J︰ 3×D-2×K ﹔
如叠加股票的数据
RELATE(CLOSE, DATA2.CLOSE,60); 计算两个股票的收盘价 在近60天的相似程度
1表示完全相同, -1表示完全相反, 0表示二者无关
例
公式编写—格式与法则
REF(X,A) ; 引用A周期前的X值
REF(CLOSE,1) ; 表示上一周期的收盘价
可改写为CLOSE[1] ;
公式入门—概述
周期
K线图中一根K线所代表的时间。 如:代表一周叫周线,代表5分钟叫5分钟线。
高
Байду номын сангаас
日线
收 开
低
周线
公式入门—概述
函数
公式编写中由软件预置的功能模块。 如:取最高值函数HIGH,取历史数据函数REF。
REF(HIGH,7) 取7天前最高价
HIGH 取当日最高价
日线(例)
公式入门—名词解释
例
公式编写—格式与法则
REFLINE:L1,L2,….LN; 用于绘制水平坐标线
REFLINE: 0,50,100; 表示在值为0、50、100 的位置绘制水平坐标线
例
公式编写—格式与法则
#DEFINE X Y 表示将Y定义为X
#DEFINE M MA(C,10) A:=MA(M,20);
宏定义必须放在 整个公式代码最前面
公式调试与测试
选择公式适用 的周期
公式调试与测试
在光标所在行代码做标志 运行到断点时程序暂停
公式编写—格式与法则
数据来源:
每日行情数据 如成交量、成交价。 以及财务数据、 宏观经济数据
变量:
随时间变化 的数据 如成交量VOL
常量:
永远不变 的数据 如8
例如:
计算两日的均量 MA(VOL,2);
变量 常量
公式编写—格式与法则
算术运算符:
+、-、*、/
算术运算符:
求两日的均价 A:=REF(C,1)+C
时间顺序: A1:=A2/2; A2:=MA(C,10);
上市首日A2无值,系统默认为0
用昨天的A2值 算今天的A1值
算今天的A2值
公式编写—格式与法则
用上一周期同一 例:
参数的数值,计
A1:=A1+1;
算本周期的数值。
上市首日A1无值,系统默认为0
用昨天的A1值 算今天的A1值
算今天的A1值
公式编写—格式与法则
如:A=‘B’;
例
A是变量,B是常量
例 STRTONUM(‘12.5’); 强制将字符串 转换成数值
STRCMP(‘ABC’,’abc’); 比较两个字符串大小
由于abc大于ABC, 以上结果为-1 如两参数换位结果为1
例
公式编写—格式与法则
一组带序号的变量, 用于存放多个数据, 通过序号访问这些数据
RSV︰=
赋值语句
LLV(LOW﹐N)
计算N日最低价函数
LLV(LOW﹐N)
计算N日最低价函数
CLOSE
计算当日收盘价函数
HHV(HIGH﹐N)
计算N日最高价函数
HIGH、LOW
计算单日最高价、 最低价函数
RSV︰=﹙CLOSE-LLV ﹙ LOW﹐N﹚﹚/﹙ HHV ﹙ HIGH﹐N﹚ -LLV ﹙ LOW﹐N﹚﹚×100﹔
如何写公式
目录 1 公式入门
2 公式编写
3 公式调试与
测试
4 技术指标公式
编写
5 条件选股公式
编写
6 五彩K线公式
编写
7 交易系统公式
编写
8 公式
交易验证
公式入门—概述
公式
用客观的数学算法,表达对证券市场主观的判断
公式分类 技术指标 交易系统 条件选股 五彩 K线 条件预警
近三日创新高 HHV(HIGH,3)=HHV(HIGH,0);
每一周期 均初始化一次:
仅在首个周期 初始化一次:
A1:=0;
VARIABLE:A1=0;
公式编写—格式与法则
IF(逻辑表达式,值1,值2); IF [逻辑表达式] THEN [语句]
IF [逻辑表达式] THEN BEGIN [语句] END
IF [逻辑表达式] THEN [语句1] ELSE [语句2]
成交量 VOL()、VOL、V
流通盘
CAPITAL
最低价 LOW()、LOW、L
收盘价 CLOSE()、CLOSE、C
成交额
AMO
换手率
VOL/CAPITAL
公式编写—简单公式编写
两条线相交的公式表示
CROSS(Y,X) Y向上穿过X
CROSS函数
CROSS(X,Y) X向上穿过Y