# DATABASE 连接数据库
连接数据库
DATABASE(STRING)
- 该函数字符串参数只能是完整的一个字符串,不能中间有拼接任何字符串参数。
- 该函数实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面。
参数
参数 | 说明 |
---|---|
STRING | 必需,数据库ADO连接字符串 |
示例
//1.连接ACCESS数据库:表示连接D:\Test.MDB数据库文件.
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb');
//2.通过DSN数据源对任何支持ODBC的数据库进行连接:其中adotest是数据源名称,sa为登陆用户,1234为登陆密码
DATABASE('Data Source=adotest;UID=sa;PWD=1234;');
//3.不通过DSN对SQL SERVER数据库进行连接: 其中Server是127.0.0.1服务器的名称或IP地址,test是数据库的名称
DATABASE('driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=sa;PWD=1234');
//4.不通过DSN对Oracle数据库进行连接: 其中servername是服务器名称或IP地址.
DATABASE('provider=MSDAORA;Data Source=servername;User ID=sa;Password=1234;');
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# DBEXECUTE 执行SQL命令
执行一段SQL命令
DBEXECUTE(SQL)
- 序列计算模式时,参数SQL只能为常数
参数
参数 | 说明 |
---|---|
SQL | 必需,数据库执行语句。 |
示例
//插入一条记录在SH600000数据库表里
DBEXECUTE('insert into sh600000(stockopen) values(11)')
1
2
2
# DBMAXRECORDSET 限定记录集数量
限定检索表的返回数据库数据数量。
DBMAXRECORDSET(N)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
参数
参数 | 说明 |
---|---|
N | 必需,限定最近N条记录.利用该函数期权内在价值可以限定数量后可以提高数据库的读取速度. |
示例
//当图表只加载了360根K线数据时,你可以设置调用360条数据,直接跳过之前的数据记录.
DBMAXRECORDSET(360);
1
2
2
# DBREADTYPE 数据读取模式
数据读取模式中的两种方式选择。
DBREADTYPE(N)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
参数
参数 | 说明 |
---|---|
N | 必需,N=0时,如果DBVALUE或者DBSTRING找不到当日数据,则取其之前数据。不然这两个函数将返回0值。 |
# DBSTRING 读取字符串
取数据库中字符串数据
DBSTRING(S)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
参数
参数 | 说明 |
---|---|
S | 必需,字段名称,数据必须为字符类型。 |
示例
//数据库中的STOCKNAME字符串数据.
DBVALUE('STOCKNAME')
1
2
2
# DBTABLE 检索记录集
使用SQL语句检索记录集
DBTABLE(SQL)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
- 该函数字符串参数只能是完整的一个字符串,不能中间有拼接任何字符串参数。
参数
参数 | 说明 |
---|---|
SQL | 必需,检索记录集字符串. |
示例
//从品种代码表中选择全部字段数据,并按照StockDate字段类型从小到达排序.
//StockDate为一个日期型字段,数据库中必须要有此字段,否则系统将无法工作.
//@Code@在运行中会被系统替换成品种的具体品种代码,例如SH600215。
DBTABLE('Select * From @Code@ Order By StockDate')
//表示从一个固定sdk表中读取指定品种的数据,通过stockcode来进行过滤,数据的字符串用双引号。
DBTABLE('Select * From sdk where stockcode = "@Code@" Order By StockDate')
1
2
3
4
5
6
7
2
3
4
5
6
7
# DBTABLE2 检索记录集
使用SQL语句检索记录集
DBTABLE2(SQL)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
- 该函数字符串参数只能是完整的一个字符串,不能中间有拼接任何字符串参数。
参数
参数 | 说明 |
---|---|
SQL | 必需,检索记录集字符串. |
示例
//从品种代码表中选择全部字段数据,并按照StockDate字段类型从小到达排序.
//DBTABLE2除了StockDate不是必须字段外,其他均与DBTABLE使用上完全一致,但此时必须是数据库表的第一个字段为日期类型。
//@Code@在运行中会被系统替换成品种的具体品种代码,例如SH600215。
DBTABLE2('Select * From @Code@ Order By MeDate')
//表示从一个固定sdk表中读取指定品种的数据,通过stockcode来进行过滤,数据的字符串用双引号。
DBTABLE2('Select * From sdk where stockcode = "@Code@" Order By StockDate')
1
2
3
4
5
6
7
2
3
4
5
6
7
# DBVALUE 读取数据
取数据库中数值数据
TETAILDATAINSERT(NAME)
- 实际上是个宏命令不受IF THEN等语句流程控制,推荐放在整个公式代码的最前面
- 该函数字符串参数只能是完整的一个字符串,不能中间有拼接任何字符串参数。
参数
参数 | 说明 |
---|---|
NAME | 必需,字段名称,数据必须为浮点类型 |
示例
//取数据库中的STOCKCLOSE字段数据.
DBVALUE('STOCKCLOSE')
1
2
2
# TETAILDATAINSERT 插入理论明细
向数据库中写入理论明细
TETAILDATAINSERT(NAME)
参数
参数 | 说明 |
---|---|
NAME | 必需,NAME为理论成交明细别名,用于与和实际账号关联。 |
示例
//插入当前品种的理论成交明细,并使用别名JZT001表示。
TETAILDATAINSERT('JZT001');
1
2
2
# PROFITINSERT 插入理论盈亏
向数据库中写入理论盈亏
PROFITINSERT(NAME,STOCK1,STOCK2)
参数
参数 | 说明 |
---|---|
NAME | 必需,理论盈亏别名,用于与和实际账号关联 |
STOCK1 | 必需,插入品种1行情数据,默认不填表示当前品种 |
STOCK1 | 必需,插入品种2行情数据,默认不填表示当前品种 |
示例
//插入当前品种的理论成交明细,并且插入HC主力和RB主力的行情数据。
PROFITINSERT('','HC00','RB00');
//插入当前品种的理论成交明细和行情数据。
PROFITINSERT('','','');
1
2
3
4
5
2
3
4
5