量化开发手册 | 麦语言函数库
量化交易基础
量化交易是利用数学模型和计算机算法进行交易决策的一种方法。它通过分析历史数据、市场趋势和各种金融指标,构建交易策略并执行交易。
核心概念
量化交易的核心概念包括:
- 策略:交易规则的集合,用于决定何时买入和卖出。
- 回测:在历史数据上测试策略的表现。
- 优化:调整策略参数以提高性能。
- 执行:在实际市场中执行交易。
函数分类
TCQuant提供了全面的量化交易函数库,涵盖交易、条件判断、数学运算、时间处理、绘图等多个方面。
交易函数
用于执行开仓、平仓、加仓等交易操作的函数
条件函数
用于判断市场条件和触发交易信号的函数
数学函数
用于数据计算和统计分析的数学函数
时间函数
用于处理时间和日期相关操作的函数
绘图函数
用于在图表上绘制图形和文字的函数
变量函数
用于获取市场数据和变量值的函数
通知函数
用于发送交易信号和通知的函数
板块操作函数
用于管理股票板块和成分股的函数
交易函数
交易函数用于执行开仓、平仓、加仓等操作,是构建交易策略的核心组件。
BK
开多函数,满足条件时开多仓
SK
开空函数,满足条件时开空仓
BP
平多函数,满足条件时平多仓
SP
平空函数,满足条件时平空仓
BPK
平空开多函数,满足条件时平空仓并开多仓
SPK
平多开空函数,满足条件时平多仓并开空仓
BKA
根据金额开多函数,满足条件时开多仓
SKA
根据金额开多函数,满足条件时开空仓
ADDLONG
条件加仓多单函数,满足条件时加仓多单
ADDSHORT
条件加仓空单函数,满足条件时加仓空单
SUBLONG
条件减仓多单函数,满足条件时减仓多单
SUBSHORT
条件减仓空单函数,满足条件时减仓空单
TPMR
移动止盈百分比平仓函数,浮盈超过指定百分比后回撤一定比例平仓
TPPR
当盈利价格波幅达到10%,从最大价格盈利比例回撤3%平仓,根据最新价和开仓均价计算
SLM
浮亏金额平仓函数,浮亏达到指定金额时平仓
TPM
浮盈金额平仓函数,浮盈金额到指定百分比时平仓
SLR
浮亏比例平仓函数,浮亏达到指定百分比时平仓
TPR
浮盈百分比平仓函数,浮盈达到指定百分比时平仓
SLP
浮亏点差平仓函数,浮亏达到指定点差时平仓
TPP
浮盈点差平仓函数,浮盈达到指定点差时平仓
条件函数
条件函数用于判断市场状态和触发交易信号,是策略逻辑的核心组成部分。
CROSS
上穿函数,判断A是否从下向上穿过B
CROSSDOWN
下穿函数,判断A是否从上向下穿过B
CROSSUP
上穿函数,判断A是否从下向上穿过B
EXIST
存在函数,判断N周期内是否存在满足条件的情况
EVERY
一直存在函数,判断N周期内是否一直满足条件
LAST
持续存在函数,判断从A周期到B周期是否一直满足条件
IF
条件判断函数,根据条件返回不同值
IFF
条件判断函数,根据条件返回不同值
IFN
条件判断函数,条件不满足时返回指定值
ISVALID
判断是否为有效数值
数学函数
数学函数用于进行各种数学计算和统计分析,是策略开发中不可或缺的工具。
AMA
自适应均线函数
DMA
动态移动平均函数
EMA
指数移动平均函数
EXPMA
指数移动平均函数
EXPMEMA
指数平滑移动平均函数
MA
简单移动平均函数
MEMA
平滑移动平均函数
SMA
移动平均函数
SUM
求和函数
WMA
加权移动平均函数
ABS
绝对值函数
MAX
最大值函数
MIN
最小值函数
SQRT
平方根函数
LN
自然对数函数
EXP
指数函数
MAX6
6个参数中的最大值函数
MIN6
6个参数中的最小值函数
INTPART
取整函数
FRACPART
小数部分函数
CEILING
向上取整函数
FLOOR
向下取整函数
MOD
取模函数
BETWEEN
判断A是否在B和C之间
ROUND
四舍五入函数
ROUND2
四舍五入到N位小数函数
SIGN
符号函数,X>0返回1,X=0返回0,X<0返回-1
AVEDEV
平均绝对偏差函数
BETA
贝塔系数函数
COVAR
协方差函数
DEVSQ
数据偏差平方和函数
FORCAST
线性回归预测值函数
RELATE
相关系数函数
SLOPE
线性回归斜率函数
STD
标准差函数
STDP
总体标准差函数
VAR
方差函数
VARP
总体方差函数
COST
成本分布函数
WINNER
获利盘比例函数
ZIG
之字转向函数
COSTEX
区间成本函数
LWINNER
近期获利盘比例函数
时间函数
时间函数用于处理与时间和日期相关的操作,在策略的时间周期管理中非常重要。
OPENTIME
获取当前时间距离开盘的时间(秒)
CLOSETIME
获取当前距离收盘的时间(秒)
CLOSEMINUTE
获取距离收盘(15:00)的分钟数
DATE
获取当前周期的年月日
MONTH
获取当前周期的月份
YEAR
获取当前周期的年份
TIME
获取当前周期的时分
TIME2
获取当前周期的时分秒
WEEKOFYEAR
获取当前周期在年内的周数
DATETODAY
获取指定日期到1990.12.19的天数
DAYTODATE
获取1990.12.19后第N天的日期
TIMETOSEC
将时间转换为秒数
SECTOTIME
将秒数转换为时间
FROMOPEN
获取当前品种已开盘的分钟数
TOTALFZNUM
获取当前品种每天的总交易分钟数
BARPOS
获取从第一根K线开始到当前的周期数
BARSCOUNT
获取从第一个有效数据到当前的周期数
BARSSINCE
获取条件成立到当前的周期数
BARSSINCEN
获取N周期内条件成立到当前的周期数
COUNT
统计N周期内满足条件的周期数
DAYSTOTODAY
获取当前周期距离今天的天数
LLV
获取N周期内的最低值(不包含当前K线)
LLVBARS
获取上一低点到当前的周期数
LOD
获取当前值在N周期内的低值名次
MEMA
平滑移动平均
FINDHIGH
获取N周期前的M周期内的第T个最大值
FINDLOW
获取N周期前的M周期内的第T个最小值
FINDLOWBARS
获取N周期前的M周期内的第T个最小值到当前的周期数
FINDHIGHBARS
获取N周期前的M周期内的第T个最大值到当前的周期数
ZTPRICE
获取涨停价
DTPRICE
获取跌停价
BACKSET
将当前位置到N周期前的数据设为1
PRICEAT
返回条件满足时的价格(O,H,L,C)
HHVBTW
返回相邻条件满足区间内的最高价
LLVBTW
返回相邻条件满足区间内的最低价
ALIGNRIGHT
将有效数据右对齐
TRMA
三角移动平均
HARMEAN
调和平均值
CODE
获取品种代码
CODELIKE
模糊匹配品种代码
NAMELIKE
模糊匹配品种名称
NAMEINCLUDE
判断品种名称中是否包含指定字符串
STRCAT
连接两个字符串
CON2STR
将数值转换为字符串
VAR2STR
将序列转换为字符串
STRSPACE
在字符串后添加空格
VARCAT
连接两个字符串
FINDSTR
在字符串A中查找字符串B
STRLEN
获取字符串长度
STRCMP
比较两个字符串是否相等
LONGCROSS
判断A在N周期内是否一直小于B,且本周期从下向上穿过B
NDAY
判断N周期内是否一直满足X>Y
DOWNNDAY
判断N周期内是否一直满足X
UPNDAY
判断N周期内是否一直满足X>Y
LAST
判断从A周期到B周期是否一直满足条件X
EXISTR
判断从A周期到B周期是否存在满足条件X的情况
ISVALID
判断X是否为有效数值
IF
条件判断,条件满足返回trueValue,否则返回falseValue
IFF
条件判断,条件满足返回trueValue,否则返回falseValue
IFN
条件判断,条件不满足返回trueValue,否则返回falseValue
IFC
条件判断,条件满足执行trueAction,否则执行falseAction
VALUEWHEN
当条件满足时返回X的当前值,否则返回上次的值
TESTSKIP
条件满足时直接返回,不再计算后续表达式
ABS
返回X的绝对值
ACOS
返回X的反余弦值
ASIN
返回X的反正弦值
ATAN
返回X的反正切值
COS
返回X的余弦值
EXP
返回e的X次幂
LN
返回X的自然对数
LOG
返回X的常用对数(以10为底)
MAX
返回A和B中的较大值
MAX6
返回6个参数中的最大值
MIN
返回A和B中的较小值
MIN6
返回6个参数中的最小值
SIN
返回X的正弦值
SQRT
返回X的平方根
TAN
返回X的正切值
绘图函数
绘图函数用于在图表上绘制各种图形和文字,帮助直观展示策略逻辑和市场状态。
DRAWTEXT
在满足条件时在指定位置绘制文字
DRAWTEXTABS
在指定像素坐标位置绘制文字
DRAWCOLORKLINE
根据条件绘制K线
DRAWKLINE
根据指定价格绘制K线
DRAWBAND
根据条件填充颜色
开盘价和收盘价填充颜色
DRAWCHANNEL
绘制通道
DRAWTABLE
绘制表格
DRAWPIE
绘制饼图
DRAWRADAR
绘制雷达图
变量函数
变量函数用于获取各种市场数据和变量值,是策略开发的基础数据来源。
CLOSE
获取当前周期收盘价
VOL
获取当前周期成交量
OPEN
获取当前周期开盘价
HIGH
获取当前周期最高价
LOW
获取当前周期最低价
AMOUNT
获取当前周期成交金额
VOLINSTK
获取当前周期持仓量
QHJSJ
获取当前周期结算价
ZSTJJ
获取当前周期分时图均价线
ISUP
判断当前周期是否收阳
ISDOWN
判断当前周期是否收阴
ISEQUAL
判断当前周期是否平盘
PERIOD
获取当前周期类型
MACHINEDATE
获取当前客户端机器的日期
MACHINETIME
获取当前客户端机器的时间
MACHINEWEEK
获取当前客户端机器的星期几
DAYSTOTODAY
获取当前周期距离今天的天数
DYNAINFO(3)
获取昨日结算价,反映前一交易日的收盘价格水平,常用于期货或股票等金融市场的连续交易分析
DYNAINFO(4)
获取开盘价,表示当前交易日开始时的第一笔成交价格,用于分析日内价格波动趋势
DYNAINFO(5)
获取当日最高价,反映当前交易日内价格达到的最高点,是技术分析中的重要参考指标
DYNAINFO(6)
获取当日最低价,显示当前交易日内价格跌至的最低点,对判断支撑位和价格走势有重要意义
DYNAINFO(8)
获取总成交量,统计当前交易日内的所有成交手数,反映市场的活跃度和交易参与情况
DYNAINFO(9)
获取昨日成交量,获取前一交易日的总成交手数,用于对比分析成交量变化趋势
DYNAINFO(10)
获取总金额,计算当前交易日内所有成交的总价值,综合反映市场交易规模
DYNAINFO(11)
获取均价,根据总金额和总成交量计算得出的平均成交价格,反映整体交易成本水平
DYNAINFO(12)
获取日涨跌,计算当前价格与前一交易日收盘价的差值,直观显示价格变动绝对值
DYNAINFO(14)
获取日涨幅,计算当前价格较前一交易日收盘价的百分比变化,用于衡量价格波动幅度
DYNAINFO(20)
获取最新买价(买价一),显示当前市场中最高的买入委托价格,反映买家的即时购买意愿
DYNAINFO(21)
获取最新卖价(卖价一),显示当前市场中最低的卖出委托价格,体现卖家的即时出售意向
通知函数
通知函数用于发送交易信号和通知,帮助及时获取策略执行情况。
SENDMES
发送信号通知
SENDEMAIL
发送邮件通知
板块操作函数
板块操作函数用于管理股票板块和成分股,方便进行板块分析和选股。
AddSymbolToBank
将合约添加到指定板块
RemoveSymbolOutBank
将合约从指定板块中移除