股票自动交易软件助手提供了Order.dll , 扩展了大智慧,飞狐,通达信等公式语言的函数。利用这些函数,可以在公式里精细控制下单逻辑和交易策略。比如读取持仓数据,可用资金,指定下单数量等等。
需要注意的是,一般情况下,并不需要在公式里调用这些函数就能实现股票程序化的交易策略。对于一般用户,或者对大部分常用指标来说,使用公式预警条件单更加方便,简单,而不需要在公式里调用下单函数。只需要建立对应的助手预警条件单,并在大智慧,通达信等软件中设置好预警指标即可。只有在使用股票池自动交易或者图表交易,纯公式下单的情况下才需要这些函数。
要使用股票自动交易软件助手提供的交易函数,先把 order.dll 复制到 通达信目录 T0002\dlls 下面,然后还要绑定DLL,查看如何绑定DLL。通达信调用过Order.dll后,助手会在通达信目录下生成 “助手日志” 目录,里面有调用函数的日志信息,可以查看这个日志信息来确定调用是否正确,条件是否成立等等。一般条件成立了但是助手没反应,可以看这个日志来找出原因。如果这日志的显示是正常的,你可以进一步去助手的安装目录里查看助手日志进一步确定原因。
股票自动交易软件助手提供的有些函数的参数,是 条件和变量的乘积,如 买入 函数的最后个参数就是 条件*数量。表示在条件为1(即成立的情况下),买入对应数量的股票。比如 条件*1000, 条件成立的情况下,条件就是1,乘以1000结果就是1000股,助手就会买入1000股,在条件不成立的情况下条件的数值就会等于0,乘以1000结果也是0,代表条件不成立,因此助手不会买入。注意:条件只能是逻辑判断值,1或者0,不能是其他运算的结果,例如 条件:=C >0;不要条件:=C;或条件:=MA(C,5)这样,前者是逻辑判断值,后面是数值计算。
通达信的调用外部dll函数的方式比较特别,首先需要绑定dll,绑定到第几号dll,函数调用的函数名就是 TDXDLL数字 ,我们一般绑定助手Order.dll为第一个dll,因此调用助手提供的函数的名字都是 TDXDLL1,表示调用第一个绑定的dll,也就是Order.dll。此外每个调用都必须指定调用的是dll里的第几个函数,Order.dll提供的买入函数是第一个函数,因此调用买入函数就像这样:买入股票:=TDXDLL1(1, STR2CON(CODE), 1, 100);其中第一个参数1,表示第一个函数就是买入函数。同理,卖出股票函数是第二个函数,因此调用卖出函数就像这样:卖出股票:TDXDLL1(2, STR2CON(CODE), 2, 100);其他函数余此类推。
另外,通达信的函数最多只能有4个参数,并且参数不能省略,而有些助手函数不需要那么多参数的,这时候只要填0就行。并且通达信的参数只能传递数值,因此股票要传递股票代码的时候调用 STR2CON(CODE), 这样来传递。由于最多只能传递4个参数,因此不能像大智慧一样指定助手编号,如果要指定助手编号,需要调用 选择账户1:=TDXDLL1(7, 1, 0, 0); 这样来调用。大部分情况下可以忽略不管助手编号。只有在对不同的助手(对应的不同交易软件的交易账户)使用不同的下单数量时才需要用到。如果你从来没改过助手设置里的助手编号,所有助手都会执行下单动作,在这种情况下,即使开了多个助手,也不需理会这个参数。
助手函数列表 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
买入函数 | 条件成立时(即 条件:=1),买入指定数量的股票 | ||||||||||
卖出函数 | 条件成立时(即 条件:=1),卖出指定数量的股票 | ||||||||||
融资买入函数 | 条件成立时(即 条件:=1),买入指定数量的股票(仅适用纯公式) | ||||||||||
卖券还款函数 | 条件成立时(即 条件:=1),卖出(卖券还款)指定数量的股票(仅适用纯公式) | ||||||||||
融券卖出函数 | 条件成立时(即 条件:=1),融券卖出指定数量的股票(仅适用纯公式) | ||||||||||
买券还券函数 | 条件成立时(即 条件:=1),买入(买券还券)指定数量的股票(仅适用纯公式) | ||||||||||
买入可转债函数 | 条件成立时(即 条件:=1),买入正股对应的可转债 | ||||||||||
卖出可转债函数 | 条件成立时(即 条件:=1),卖出正股对应的可转债< | ||||||||||
查询持仓数量 | 查询当前股票持仓数量,单位(股) | ||||||||||
查询可卖数量 | 查询当前股票可卖数量,单位(股) | ||||||||||
查询成本价 | 查询当前股票的成本价 | ||||||||||
查询盈利金额 | 查询当前股票的盈利金额(元) | ||||||||||
查询盈利百分比 | 查询当前股票的盈利百分比(%),盈利5.5%,返回5.5 | ||||||||||
查询持仓市值 | 查询当前股票的持仓市值 | ||||||||||
下单天数 | 查询当前股票的下单天数,即上次助手下单离现在的天数 | ||||||||||
持仓天数 | 查询当前股票的持仓天数 | ||||||||||
上次买入价 | 查询当前股票的上次买入价 | ||||||||||
查询可撤买单 | 查询当前股票的可撤买单数量(股) | ||||||||||
查询可撤买单时间 | 查询当前股票的可撤买单的时间离现在的秒数(秒) | ||||||||||
查询可撤卖单 | 查询当前股票的可撤卖单数量(股) | ||||||||||
查询可撤卖单时间 | 查询当前股票的可撤卖单的时间离现在的秒数(秒) | ||||||||||
撤买单 | 条件成立时撤销当前股票的买入单 | ||||||||||
撤卖单 | 条件成立时撤销当前股票的卖出单 | ||||||||||
账户总资产 | 查询当前账户的总资产(元) | ||||||||||
账户可用资金 | 查询当前账户的可用资金(元) | ||||||||||
账户持仓市值 | 查询当前账户的账户持仓总市值(元) | ||||||||||
账户总盈利 | 查询当前账户的账户总盈利(元) | ||||||||||
持仓个数 | 查询当前账户的持仓股票数量 | ||||||||||
可用保证金 | 查询当前账户的可用保证金 | ||||||||||
担保比例 | 查询当前账户的担保比例 | ||||||||||
融资额度 | 查询当前账户的融资额度/div> | ||||||||||
融券额度 | 查询当前账户的融券额度 | ||||||||||
清仓 | 条件成立时执行清仓操作 | ||||||||||
清半仓 | 条件成立时执行清半仓操作 | ||||||||||
启动交易 | 条件成立时启动助手自动交易,相当于按下启动按钮 | ||||||||||
停止交易 | 条件成立时停止助手自动交易,相当于按下停止按钮 | ||||||||||
启用条件 | 条件成立时启用当前股票的条件单或止损设置 | ||||||||||
禁止条件 | 条件成立时禁用当前股票的条件单或止损设置或删除条件 | ||||||||||
刷新持仓 | 条件成立时刷新持仓数据 | ||||||||||
设置买入价 | 如果要指定买入价需在调用买入函数前调用 | ||||||||||
设置卖出价 | 如果要指定卖出入价需在调用买入函数前调用 | ||||||||||
日志函数 | 把数值写到当前日志文件里,方便调试 | ||||||||||
MsgBox函数 | 把数值以消息框的形式弹出来,方便调试 | ||||||||||
指定助手编号和账户编号 | 指定助手编号和账户编号 | ||||||||||
发送邮件,QQ信息 | 条件成立时(即 条件:=1),以指定的发送方式发送指定类型的消息 | ||||||||||
获取交易自定义数据 | 指定类型和公式号 | ||||||||||
设置交易自定义数据 | 设置交易自定义数据 | ||||||||||
获取全局自定义数据 | 指定类型和公式号 | ||||||||||
设置全局自定义数据 | 设置全局自定义数据 | ||||||||||
设置序列数据的日期 | 设置序列数据的日期,此函数和下面的31,32函数要一起使用 | ||||||||||
设置序列数据的时间 | 设置序列数据的时间,此函数和的30,32函数要一起使用 | ||||||||||
设置序列数据的数值 | 设置序列数据的数值,此函数和的30,31函数要一起使用 | ||||||||||
准备要获取序列数据的时间 | 准备要获取序列数据的时间,此函数和的34函数要一起使用 | ||||||||||
获取序列数据的数值 | 获取序列数据的数值,如果是分钟级别周期,需要先调用33函数 | ||||||||||
问财函数 | 查询当前股票是否符合问财选股条件 | ||||||||||
保存到自选股或板块 | 条件满足时保存股票到自选股或板块 | ||||||||||
从自选股或板块删除股票 | 条件满足时从自选股或板块删除股票 | ||||||||||
获取自选股或板块股票的数量 | 获取自选股或板块股票的数量 | ||||||||||
条件成立时(即 条件:=1),买入指定数量的股票
1 | 1,第一个函数是买入函数,因此填1 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件买入的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,买入数量,如果填1,按助手条件单里的指定量买入 |
{上穿5日均线买入1000股} 条件:Cross(C, MA(C,5)); 买入股票:=TDXDLL1(1, STR2CON(CODE), 1, 条件*1000);
条件成立时(即 条件:=1),卖出指定数量的股票
2 | 2,第二个函数是卖出函数,因此填2 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件卖出的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,卖出数量,如果填1,按助手条件单里的指定量卖出 |
{下穿5日均线卖出} 条件:Cross( MA(C,5), C); 卖出股票:=TDXDLL1(2, STR2CON(CODE), 2, 条件*1);
条件成立时(即 条件:=1),融资买入指定数量的股票(仅适用纯公式)
19 | 19,第十九个函数是融资买入函数,因此填19 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件买入的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,买入数量,如果填1,按助手条件单里的指定量买入 |
{上穿5日均线买入1000股} 条件:Cross(C, MA(C,5)); 买入股票:=TDXDLL1(19, STR2CON(CODE), 1, 条件*1000);
条件成立时(即 条件:=1),卖券还款卖出指定数量的股票(仅适用纯公式)
20 | 20,第二十个函数是卖券还款函数,因此填20 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件卖出的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,卖出数量,如果填1,按助手条件单里的指定量卖出 |
{下穿5日均线卖出} 条件:Cross( MA(C,5), C); 卖出股票:=TDXDLL1(20, STR2CON(CODE), 2, 条件*1);
条件成立时(即 条件:=1),融券卖出指定数量的股票(仅适用纯公式)
21 | 21,第二十一个函数是卖出函数,因此填21 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件卖出的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,卖出数量,如果填1,按助手条件单里的指定量卖出 |
{下穿5日均线卖出} 条件:Cross( MA(C,5), C); 卖出股票:=TDXDLL1(21, STR2CON(CODE), 2, 条件*1);
条件成立时(即 条件:=1),买券还券指定数量的股票(仅适用纯公式)
22 | 22,第二十一二个函数是买券还券函数,因此填22 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
公式编号 | 用来区分是哪个公式或者转移条件卖出的,买入和卖出的编号不要相同 |
条件*数量 | 条件,条件变量;数量,卖出数量,如果填1,按助手条件单里的指定量卖出 |
{下穿5日均线买 条件:Cross( MA(C,5), C); 买股票:=TDXDLL1(22, STR2CON(CODE), 2, 条件*1);
条件成立时(即 条件:=1),买入正股对应的可转债/p>
{这个例子运行在正股中,如果正股金叉5日平均线,买入的是可转债} 条件:Cross(C, MA(C,5)); 买入股票:=TDXDLL1(28, STR2CON(CODE), 1, 条件*10);
条件成立时(即 条件:=1),卖出正股对应的可转债
{这个例子运行在正股中,如果正股死叉5日平均线,卖出的是可转债} 条件:Cross( MA(C,5), C); 卖出股票:=TDXDLL1(29, STR2CON(CODE), 2, 条件*1);
查询当前股票的持仓数量(股)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 0,表示查询持仓数量,以股为单位 |
0 | 最后一个参数没用到,填0就行 |
个股持仓股数: TDXDLL1(3, STR2CON(CODE), 0, 0);
查询当前股票的可卖数量(股)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 1,表示查询可卖数量,以股为单位 |
0 | 最后一个参数没用到,填0就行 |
个股可卖股数: TDXDLL1(3, STR2CON(CODE), 1, 0);
查询当前股票的成本价(元)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 2,表示查询查询当前股票的成本价 |
0 | 最后一个参数没用到,填0就行 |
成本价: TDXDLL1(3, STR2CON(CODE), 2, 0);
查询当前股票的盈利金额(元)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 3,表示查询当前股票的盈利金额 |
0 | 最后一个参数没用到,填0就行 |
盈利金额: TDXDLL1(3, STR2CON(CODE), 3, 0)
查询当前股票的盈利百分比(%)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 4,表示查询当前股票的盈利百分比(%),盈利5.5%,返回5.5 |
0 | 最后一个参数没用到,填0就行 |
盈利百分比: TDXDLL1(3, STR2CON(CODE), 4, 0);
查询当前股票的持仓市值(元)
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 5,表示查询当前股票的持仓市值 |
0 | 最后一个参数没用到,填0就行 |
持仓市值: TDXDLL1(3, STR2CON(CODE), 5, 0);
查询当前股票的下单天数
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 6,表示查询当前股票的下单天数,只对助手下的单有效,并且依赖下单记录 |
0 | 最后一个参数没用到,填0就行 |
下单天数: TDXDLL1(3, STR2CON(CODE), 6, 0);
查询当前股票的持仓天数
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 7,查询当前股票的持仓天数,只对助手下的单有效(如果设置了下单时间都有效) |
0 | 最后一个参数没用到,填0就行 |
持仓天数: TDXDLL1(3, STR2CON(CODE), 7, 0);
查询当前股票的上次买入价
3 | 3,第三个函数是查询持仓信息函数,因此填3 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 8,查询当前股票的上次买入价,只对助手下的单有效 |
0 | 最后一个参数没用到,填0就行 |
上次买入价: TDXDLL1(3, STR2CON(CODE), 8, 0);
查询当前股票的可撤买单数量(股)
4 | 4,第四个函数是查询持仓撤单函数,因此填4 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
下单类型 | 0,查询买入单,1查询卖出单 |
查询类型 | 0,查询数量,1查询时间 |
可撤买单数量: TDXDLL1(4, STR2CON(CODE), 0, 0);
查询当前股票的可撤买单距现在的时间(秒)
4 | 4,第四个函数是查询持仓撤单函数,因此填4 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
下单类型 | 0,查询买入单,1查询卖出单 |
查询类型 | 0,查询数量,1查询时间 |
买单已过秒数: TDXDLL1(4, STR2CON(CODE), 0, 1);
查询当前股票的可撤卖单数量(股)
4 | 4,第四个函数是查询持仓撤单函数,因此填4 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
下单类型 | 0,查询买入单,1查询卖出单 |
查询类型 | 0,查询数量,1查询时间 |
可撤卖单数量: TDXDLL1(4, STR2CON(CODE), 1, 0);
查询当前股票的可撤卖单距现在的时间(秒)
4 | 4,第四个函数是查询持仓撤单函数,因此填4 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
下单类型 | 0,查询买入单,1查询卖出单 |
查询类型 | 0,查询数量,1查询时间 |
卖单已过秒数: TDXDLL1(4, STR2CON(CODE), 1, 1);
条件成立时撤销当前股票的买单
6 | 6,第六个函数是撤单函数,因此填6 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 1,撤买单;类型:2,撤卖单 |
0 | 最后一个参数没用到,填0就行 |
买单已过秒数:= TDXDLL1(4, STR2CON(CODE), 0, 1); 条件:买单已过秒数 > 60; 撤买单:=TDXDLL1(6, STR2CON(CODE), 条件*1, 0);
条件成立时撤销当前股票的卖单
6 | 6,第六个函数是撤单函数,因此填6 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 1,撤买单;类型:2,撤卖单 |
0 | 最后一个参数没用到,填0就行 |
卖单已过秒数: TDXDLL1(4, STR2CON(CODE), 1, 1); 条件:卖单已过秒数 > 60; 撤卖单 := TDXDLL1(6, STR2CON(CODE), 条件*2, 0);
查询当前账号的总资产
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 0, 查询当前账号的总资产(元) |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
账户总资产 : TDXDLL1(5, 0, 0, 0);
查询当前账号的可用资金
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 1, 查询当前账号的可用资金(元) |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
账户可用资金 : TDXDLL1(5, 1, 0, 0);
查询当前账号的总持仓市值
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 2, 查询当前账号的总持仓市值(元) |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
账户总持仓市值 : TDXDLL1(5, 2, 0, 0);
查询当前账号的总盈利金额
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 3, 查询当前账号的总盈利金额(元) |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
账户总盈利金额 : TDXDLL1(5, 3, 0, 0);
查询当前账号的持仓个数
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 4, 查询当前账号的持仓个数 |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
持仓个数 : TDXDLL1(5, 4, 0, 0);
查询当前账号的可用保证金
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 5, 查询当前账号的可用保证金 |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
保证金 : TDXDLL1(5, 5, 0, 0);
查询当前账号的担保比例
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 6, 查询当前账号的担保比例 |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
担保比例 : TDXDLL1(5, 6, 0, 0);
查询当前账号的融资额度
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 7, 查询当前账号的融资额度 |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
融资额度 : TDXDLL1(5, 7, 0, 0);
查询当前账号的融券额度
5 | 5,第五个函数是查询账号信息,因此填5 |
---|---|
类型 | 8, 查询当前账号的融券额度/td> |
0 | 这个参数没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
融券额度 : TDXDLL1(5, 8, 0, 0);
条件成立时执行清仓操作
9 | 9,第九个函数是清仓函数,因此填9 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 类型:1,全部清仓;类型:2,清半仓 |
0 | 最后一个参数没用到,填0就行 |
{此例子假定当前股票池只有上证指数一个股票,当上证指数跌破5日均线清仓} 条件:Cross(MA(C,5), C); 清仓:= TDXDLL1(9, STR2CON(CODE), 条件*1, 0);
条件成立时执行半清仓操作
9 | 9,第九个函数是撤单函数,因此填9 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 类型:1,全部清仓;类型:2,清半仓 |
0 | 最后一个参数没用到,填0就行 |
{此例子假定当前股票池只有上证指数一个股票,当上证指数跌破5日均线清半仓} 条件:Cross(MA(C,5), C); 清半仓:= TDXDLL1(9, STR2CON(CODE), 条件*2, 0);
条件成立时启动助手自动交易,相当于按下助手开始按钮
12 | 12,第十二个函数是启动自动交易函数,因此填12 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
条件 | 条件变量 |
0 | 最后一个参数没用到,填0就行 |
{此例子假定当前股票池只有上证指数一个股票,当上证指数上穿5日均线开启自动交易} 条件:Cross(C, MA(C,5)); 启动交易:= TDXDLL1(12, STR2CON(CODE), 条件, 0);
条件成立时停止助手自动交易,相当于按下助手停止按钮
13 | 13,第十三个函数是停止自动交易函数,因此填13 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
条件 | 条件变量 |
0 | 最后一个参数没用到,填0就行 |
{此例子假定当前股票池只有上证指数一个股票,当上证指数下穿5日均线停止自动交易} 条件:Cross( MA(C,5), C); 停止交易:= TDXDLL1(13, STR2CON(CODE), 条件, 0);
条件成立时让当前股票的止损止盈或条件单生效
10 | 10,第十个函数是条件生效函数,因此填10 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
条件 | 条件变量 |
条件序号 | 可选,指定条件序号(可在助手右键菜单查看) |
注意: | 条件序号参数10001表示仅开启买入,10002开启卖出,仅适用区间交易 |
{当前股票价格在5日均线之上时让该股票的止损止盈或条件单生效} 条件:C > MA(C,5); 启用条件:= TDXDLL1(10, STR2CON(CODE), 条件, 0);
{当前股票价格在5日均线之上时让该股票区间交易开启买入} 条件:C > MA(C,5); 启用买入:= TDXDLL1(10, STR2CON(CODE), 条件, 10001);
条件成立时禁止当前股票的止损止盈或条件单执行或删除条件
11 | 11,第十一个函数是禁止条件单生效函数,因此填11 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
条件*类型 | 类型:1(禁止),2(删除),条件成立时禁止当前股票的止损止盈或条件单执行或删除条件 |
条件序号 | 可选,指定条件序号(可在助手右键菜单查看) |
注意: | 条件序号参数10001表示仅禁止买入,10002禁止卖出,仅适用区间交易 |
{当前股票价格在5日均线之下时禁止当前股票的止损止盈或条件单执行} 条件:C < MA(C,5); 禁止条件:= TDXDLL1(11, STR2CON(CODE), 条件, 0);
{当前股票价格在5日均线之下时禁止当前股票区间交易买入} 条件:C < MA(C,5); 禁止买入:= TDXDLL1(11, STR2CON(CODE), 条件, 10001);
条件成立时刷新持仓数据
14 | 14,第十四个函数刷新持仓函数,因此填14 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
条件 | 条件成立时刷新持仓数据 |
0 | 这个参数没用到,填0 |
条件:Cross(c, MA(c,5)); 刷新持仓:=TDXDLL1(14, STR2CON(CODE), 条件, 0);
设置买入价格
15 | 15,第十五个函数是设置买入或卖出价格,因此填15 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 类型:0设置买入价格,类型:1设置卖出价格 |
价格 | 买入价格 |
{设定卖5价买入} 设定买入价:=TDXDLL1(15, STR2CON(CODE) , 0, DYNAINFO(21)+0.04);
设置卖出价格
15 | 15,第十五个函数是设置买入或卖出价格,因此填15 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 类型:0设置买入价格,类型:1设置卖出价格 |
价格 | 卖出价格 |
{设定买5价卖出} 设定卖出价:=TDXDLL1(15, STR2CON(CODE) , 1, DYNAINFO(20)-0.04);
把数值写到当前日志文件里,方便调试
16 | 16,第十六个函数是写日志信息,因此填16 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
数值 | 把数值写到当前日志文件里,方便调试 |
0 | 这个参数没用到,填0就行 |
{此例子把当前最新周期的收盘价写到日志文件,此文件位于大智慧或通达信等软件的助手日志下面} 写日志:=TDXDLL1(16, STR2CON(CODE), C, 0);
把数值以消息框的形式弹出来显示,方便调试
17 | 17,第十七个函数是写日志信息,因此填17 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
数值 | 把数值以消息框的形式弹出来显示,方便调试 |
0 | 这个参数没用到,填0就行 |
{此例子把当前最新周期的收盘价弹出消息框} 消息框:=TDXDLL1(17, STR2CON(CODE), C, 0);
指定助手编号
7 | 7,第七个函数是写指定助手编号,因此填7 |
---|---|
助手编号 | 助手编号 |
账号编号 | 账号编号按助手条件单里的下拉列表显示顺序为准。这个参数只对尊贵版有用,其他没用到,填0就行 |
0 | 这个参数没用到,填0就行 |
{指定(切换)助手编号,后面所有语句都是针对这个编号为1的助手起作用} 选择账户1:=TDXDLL1(7, 1, 0, 0);}
{指定(切换)账号编号,后面所有语句都是针对这个编号为1的账号起作用,账号编号以助手条件单里的排序为准} 选择账户1:=TDXDLL1(7, 0, 1, 0);}
条件成立时发送邮件,QQ,微信信息
18 | 18,第十八个函数是写日志信息,因此填18 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
发送方式 | 0,发送邮件;1,发送QQ消息;2,发送微信 |
条件*消息类型 | 条件成立时(即 条件:=1),发送指定消息类型的消息 消息类型是自己定的,也可以在行情软件当前目录用Order.ini文件配置消息类型对应的文字 |
{价格大于10元发送类型为1的邮件,消息类型对应的文字可以在Order.ini配置} 条件:C > 10; 发邮件:=TDXDLL1(18, STR2CON(CODE), 0, 条件*1);
条件成立时设置交易自定义数据
24 | 24,第24个函数是设置交易自定义数据,因此填24 |
---|---|
助手号+公式号+股票代码, | 助手号+公式号+股票代码,一般写成 STR2CON(STRCAT('1',CODE)) 由于通达信参数有限,公式号和助手号需要和code连接在一起传给函数 其中'1’替换成需要的公式号 注意通达信公式号不能大于10 助手号不能大于6 如果只有一个助手(助手号0),写成 STR2CON(STRCAT('1',CODE))表示 ‘1' 就是公式号1 如果还有一个助手(助手号1),写成 STR2CON(STRCAT('11',CODE))第一个‘1'助手号1,第二个‘1' 就是公式号1 |
类型*条件 | 条件成立时(即 条件:=1),设置指定类型的数据 类型为用户自定义,可以大于99的任意数字 如果成功,函数返回1,否则为0 |
数值 | 要保存的数值 |
{类型 100 以上为用户可定义数据,可以写入任意单值数据,并读取} 条件:= C > 10; SET_OK: TDXDLL1(24, STR2CON(STRCAT('1',CODE)), 100*条件, C);{写入} GET: TDXDLL1(25, STR2CON(CODE), 100, 1);{读取};
获取交易自定义数据
25 | 25,第25个函数是获取交易自定义数据,因此填25 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
类型 | 0-99为系统(助手内部)定义的数据; 0,1,2,3,4分别为上次买入时间(格式和大智慧通达信的Date函数相同) 天数,秒数,价格,数量 5,6,7,8,9分别为上次卖出时间,天数,秒数,价格,数量 |
助手号+公式号 | 个位数字表示公式号,注意通达信公式号不能大于10
十位数的数值表示助手号不能大于6 如果只有一个助手(助手号0),写成 1 就是公式号1 如果还有一个助手(助手号1),写成 11 第一个1 助手号1,第二个1是公式号 |
{获取助手系统内置的交易数据,类型<100为助手内置的类型数据如上次买入时间等, 这些数据不需要设置就能获取} 上次买入时间: TDXDLL1(25, STR2CON(CODE), 0, 1); 上次买入天数: TDXDLL1(25, STR2CON(CODE), 1, 1); 上次买入秒数: TDXDLL1(25, STR2CON(CODE), 2, 1); 上次买入价格: TDXDLL1(25, STR2CON(CODE), 3, 1); 上次买入数量: TDXDLL1(25, STR2CON(CODE), 4, 1); 上次卖出时间: TDXDLL1(25, STR2CON(CODE), 5, 1); 上次卖出天数: TDXDLL1(25, STR2CON(CODE), 6, 1); 上次卖出秒数: TDXDLL1(25, STR2CON(CODE), 7, 1); 上次卖出价格: TDXDLL1(25, STR2CON(CODE), 8, 1); 上次卖出数量: TDXDLL1(25, STR2CON(CODE), 9, 1);
条件成立时设置交易自定义数据
26 | 26,第26个函数是设置交易自定义数据,因此填26 |
---|---|
助手号+公式号 | 个位数字表示公式号,注意通达信公式号不能大于10
十位数的数值表示助手号不能大于6 如果只有一个助手(助手号0),写成 1 就是公式号1 如果还有一个助手(助手号1),写成 11 第一个1 助手号1,第二个1是公式号 |
类型*条件 | 条件成立时(即 条件:=1),设置指定类型的数据 类型为用户自定义,可以大于99的任意数字 如果成功,函数返回1,否则为0 |
数值 | 要保存的数值 |
{类型 100 以上为用户可定义数据,可以写入任意单值数据,并读取} 条件:= C > 10; Set_全局: TDXDLL1(26, 1, 100*条件, C);{写入} Get_全局: TDXDLL1(27, 1, 100, 0);{读取}
获取全局自定义数据
27 | 27,第27个函数是获取全局自定义数据,因此填27 |
---|---|
助手号+公式号 | 个位数字表示公式号,注意通达信公式号不能大于10
十位数的数值表示助手号不能大于6 如果只有一个助手(助手号0),写成 1 就是公式号1 如果还有一个助手(助手号1),写成 11 第一个1 助手号1,第二个1是公式号 |
类型 | 大于99的数 |
0 | 固定填0 |
{类型 100 以上为用户可定义数据,可以写入任意单值数据,并读取} 条件:= C > 10; Set_全局: TDXDLL1(26, 1, 100*条件, C);{写入} Get_全局: TDXDLL1(27, 1, 100, 0);{读取}
设置序列数据的日期
30 | 30,第30个函数是序列数据的日期,因此填30 |
---|---|
周期+股票代码 | 把周期和股票代码连接起来并转成浮点传递. 通常写成 STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)) 就可以了 |
类型*条件 | 条件成立时设置序列数据的日期,类型需>=10000代表是时间序列类型的 |
DATE | 当前周期的日期,固定写 DATE |
注意: | 此函数和31,32函数一起使用,记录时间序列数据 |
{记录集合竞价成交量,请在日线周期运行} 是竞价时间: MACHINETIME > 92500 AND MACHINETIME < 93000 ; SET_DATE:= TDXDLL1(30, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DATE);{写入日期} {SET_TIME:= TDXDLL1(31, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, TIME);}{写入时间,日线周期可不调用} SET_VALUE:= TDXDLL1(32, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DYNAINFO(8));{写入数值};
设置序列数据的时间
31 | 31,第31个函数是序列数据的时间,因此填31 |
---|---|
周期+股票代码 | 把周期和股票代码连接起来并转成浮点传递. 通常写成 STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)) 就可以了 |
类型*条件 | 条件成立时设置序列数据的日期,类型需>=10000代表是时间序列类型的 |
DATE | 当前周期的时间,固定写 TIME |
注意: | 此函数和30,32函数一起使用,记录时间序列数据 |
{记录集合竞价成交量,请在日线周期运行} 是竞价时间: MACHINETIME > 92500 AND MACHINETIME < 93000 ; SET_DATE:= TDXDLL1(30, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DATE);{写入日期} {SET_TIME:= TDXDLL1(31, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, TIME);}{写入时间,日线周期可不调用} SET_VALUE:= TDXDLL1(32, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DYNAINFO(8));{写入数值};
设置序列数据的数值
32 | 32,第32个函数是序列数据的时间,因此填32 |
---|---|
周期+股票代码 | 把周期和股票代码连接起来并转成浮点传递. 通常写成 STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)) 就可以了 |
类型*条件 | 条件成立时设置序列数据的数值,类型需>=10000代表是时间序列类型的 |
数值 | 要记录的数值 |
注意: | 此函数和30,31函数一起使用,记录时间序列数据 |
{记录集合竞价成交量,请在日线周期运行} 是竞价时间: MACHINETIME > 92500 AND MACHINETIME < 93000 ; SET_DATE:= TDXDLL1(30, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DATE);{写入日期} {SET_TIME:= TDXDLL1(31, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, TIME);}{写入时间,日线周期可不调用} SET_VALUE:= TDXDLL1(32, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10000*是竞价时间, DYNAINFO(8));{写入数值};
准备要获取序列数据的时间
33 | 33,第33个函数是准备要获取序列数据的时间,因此填33 |
---|---|
周期+股票代码 | 把周期和股票代码连接起来并转成浮点传递. 通常写成 STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)) 就可以了 |
类型 | 类型需>=10000代表是时间序列类型的 |
TIME | 固定写 TIME |
注意: | 此函数在分钟级别周期和34函数一起使用,获取时间序列数据 在分钟级别周期,必须先调用这个函数再调用34函数 日线周期不需调用 |
{记录成交量,并获取记录的值} 条件:= C > 0; SET_DATE:= TDXDLL1(30, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, DATE);{写入日期} SET_TIME:= TDXDLL1(31, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, TIME);{写入时间} SET_VALUE:= TDXDLL1(32, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, V);{写入数值}; GET_TIME:= TDXDLL1(33, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001, TIME); GET_VALUE: TDXDLL1(34, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001, DATE),VOLSTICK;
获取序列数据的数值
34 | 34,第34个函数是获取序列数据的数值,因此填34 |
---|---|
周期+股票代码 | 把周期和股票代码连接起来并转成浮点传递. 通常写成 STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)) 就可以了 |
类型 | 类型需>=10000代表是时间序列类型的 |
DATE | 股定写 DATE 就可以了 |
注意: | 此函数如果在分钟级别周期需先调用33函数 先准备要获取序列数据的时间 |
{例子} 条件:= C > 0; SET_DATE:= TDXDLL1(30, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, DATE);{写入日期} SET_TIME:= TDXDLL1(31, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, TIME);{写入时间} SET_VALUE:= TDXDLL1(32, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001*条件, V);{写入数值}; GET_TIME:= TDXDLL1(33, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001, TIME); GET_VALUE: TDXDLL1(34, STR2CON(STRCAT(CON2STR(PERIOD,0),CODE)), 10001, DATE),VOLSTICK;
查询当前股票是否符合问财选股条件
35 | 35,第35函数是查询当前股票是否符合问财选股条件,因此填35 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行 |
问财编号 | 每个问财编号对应一个问财选股条件即问财提问,查询条件 可以在助手建立不同的问财条件你也可以点助手Fx按钮直接生成问财选股公式 |
0 | 最后一个参数没用到,填0就行 |
{1代表的问财问题可以在助手里添加,这里1表示 10年roe>15%;pe<10;PB<2} 问财编号:=1; 问财:TDXDLL1(35, STR2CON(CODE), 问财编号, 0);
保存到自选股或板块
36 | 36,第36个函数是保存到自选股或板块,因此填36 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行了 |
条件 | 条件>0 成立时保存到自选股或板块 |
ID | 自选股ID,0表示自选股,1表示自选股1以此类推 也可以配置一个order.ini文件指定ID对应的板块名 即完全兼容kingwa的格式 |
{保存自选股} 条件:=C > 10; 保存自选股:TDXDLL1(36, STR2CON(CODE), 条件, 0); 自选股数量:TDXDLL1(38, 0,0, 0);
从自选股或板块删除股票
37 | 37,第37个函数是保存到自选股或板块,因此填37 |
---|---|
股票代码 | 股票代码,一般写成 STR2CON(CODE) 就行了 |
条件 | 条件成立时(即 条件> 0),从自选股或板块删除股票 |
ID | 自选股ID,0表示自选股,1表示自选股1以此类推 也可以配置一个order.ini文件指定ID对应的板块名 即完全兼容kingwa的格式 |
{删除自选股} 条件:=C > 10; 删除自选股:TDXDLL1(37, STR2CON(CODE), 条件, 0); 自选股数量:TDXDLL1(38, 0,0, 0);
获取自选股或板块股票的数量
38 | 38,第37个函数是获取自选股或板块股票的数量,因此填38 |
---|---|
ID | 自选股ID,0表示自选股,1表示自选股1以此类推 也可以配置一个order.ini文件指定ID对应的板块名 即完全兼容kingwa的格式 |
0 | 此参数没用到, 填 0 就行了 |
0 | 此参数没用到, 填 0 就行了 |
{获取自选股数量} 自选股数量:TDXDLL1(38, 0, 0, 0);