通达信自动交易函数股票自动交易软件助手提供了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)这样,前者是逻辑判断值,后面是数值计算。 重要提示2通达信的调用外部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); 这样来调用。大部分情况下可以忽略不管助手编号。只有在对不同的助手(对应的不同交易软件的交易账户)使用不同的下单数量时才需要用到。如果你从来没改过助手设置里的助手编号,所有助手都会执行下单动作,在这种情况下,即使开了多个助手,也不需理会这个参数。
函数说明TDXDLL1(1, 股票代码, 公式编号,条件*数量)条件成立时(即 条件:=1),买入指定数量的股票 参数
例子{上穿5日均线买入1000股} 条件:Cross(C, MA(C,5)); 买入股票:=TDXDLL1(1, STR2CON(CODE), 1, 条件*1000); TDXDLL1(2, 股票代码, 公式编号,条件*数量)条件成立时(即 条件:=1),卖出指定数量的股票 参数
例子{下穿5日均线卖出} 条件:Cross( MA(C,5), C); 卖出股票:=TDXDLL1(2, STR2CON(CODE), 2, 条件*1); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的持仓数量(股) 参数
例子个股持仓股数: TDXDLL1(3, STR2CON(CODE), 0, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的可卖数量(股) 参数
例子个股可卖股数: TDXDLL1(3, STR2CON(CODE), 1, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的成本价(元) 参数
例子成本价: TDXDLL1(3, STR2CON(CODE), 2, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的盈利金额(元) 参数
例子盈利金额: TDXDLL1(3, STR2CON(CODE), 3, 0) TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的盈利百分比(%) 参数
例子盈利百分比: TDXDLL1(3, STR2CON(CODE), 4, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的持仓市值(元) 参数
例子持仓市值: TDXDLL1(3, STR2CON(CODE), 5, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的下单天数 参数
例子下单天数: TDXDLL1(3, STR2CON(CODE), 6, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的持仓天数 参数
例子持仓天数: TDXDLL1(3, STR2CON(CODE), 7, 0); TDXDLL1(3, 股票代码, 类型, 0)查询当前股票的上次买入价 参数
例子上次买入价: TDXDLL1(3, STR2CON(CODE), 8, 0); TDXDLL1(4, 股票代码,下单类型, 查询类型)查询当前股票的可撤买单数量(股) 参数
例子可撤买单数量: TDXDLL1(4, STR2CON(CODE), 0, 0); TDXDLL1(4, 股票代码,下单类型, 查询类型)查询当前股票的可撤买单距现在的时间(秒) 参数
例子买单已过秒数: TDXDLL1(4, STR2CON(CODE), 0, 1); TDXDLL1(4, 股票代码,下单类型, 查询类型)查询当前股票的可撤卖单数量(股) 参数
例子可撤卖单数量: TDXDLL1(4, STR2CON(CODE), 1, 0); TDXDLL1(4, 股票代码,下单类型, 查询类型)查询当前股票的可撤卖单距现在的时间(秒) 参数
例子卖单已过秒数: TDXDLL1(4, STR2CON(CODE), 1, 1); TDXDLL1(6, 股票代码, 条件*类型, 0)条件成立时撤销当前股票的买单 参数
例子买单已过秒数:= TDXDLL1(4, STR2CON(CODE), 0, 1); 条件:买单已过秒数 > 60; 撤买单:=TDXDLL1(6, STR2CON(CODE), 条件*1, 0); TDXDLL1(6, 股票代码, 条件*类型, 0)条件成立时撤销当前股票的卖单 参数
例子卖单已过秒数: TDXDLL1(4, STR2CON(CODE), 1, 1); 条件:卖单已过秒数 > 60; 撤卖单 := TDXDLL1(6, STR2CON(CODE), 条件*2, 0); TDXDLL1(5, 类型, 0, 0)查询当前账号的总资产 参数
例子账户总资产 : TDXDLL1(5, 0, 0, 0); TDXDLL1(5, 类型, 0, 0)查询当前账号的可用资金 参数
例子账户可用资金 : TDXDLL1(5, 1, 0, 0); TDXDLL1(5, 类型, 0, 0)查询当前账号的总持仓市值 参数
例子账户总持仓市值 : TDXDLL1(5, 2, 0, 0); TDXDLL1(5, 类型, 0, 0)查询当前账号的总盈利金额 参数
例子账户总盈利金额 : TDXDLL1(5, 3, 0, 0); TDXDLL1(5, 类型, 0, 0)查询当前账号的持仓个数 参数
例子持仓个数 : TDXDLL1(5, 4, 0, 0); TDXDLL1(9, 股票代码, 条件*清仓类型)条件成立时执行清仓操作 参数
例子{此例子假定当前股票池只有上证指数一个股票,当上证指数跌破5日均线清仓} 条件:Cross(MA(C,5), C); 清仓:= TDXDLL1(9, STR2CON(CODE), 条件*1, 0); TDXDLL1(9, 股票代码, 条件*清仓类型)条件成立时执行半清仓操作 参数
例子{此例子假定当前股票池只有上证指数一个股票,当上证指数跌破5日均线清半仓} 条件:Cross(MA(C,5), C); 清半仓:= TDXDLL1(9, STR2CON(CODE), 条件*2, 0); TDXDLL1(12, 股票代码, 条件)条件成立时启动助手自动交易,相当于按下助手开始按钮 参数
例子{此例子假定当前股票池只有上证指数一个股票,当上证指数上穿5日均线开启自动交易} 条件:Cross(C, MA(C,5)); 启动交易:= TDXDLL1(12, STR2CON(CODE), 条件, 0); TDXDLL1(13, 股票代码, 条件)条件成立时停止助手自动交易,相当于按下助手停止按钮 参数
例子{此例子假定当前股票池只有上证指数一个股票,当上证指数下穿5日均线停止自动交易} 条件:Cross( MA(C,5), C); 停止交易:= TDXDLL1(13, STR2CON(CODE), 条件, 0); TDXDLL1(10, 股票代码, 条件)条件成立时让当前股票的止损止盈或条件单生效 参数
例子{当前股票价格在5日均线之上时让该股票的止损止盈或条件单生效} 条件:C > MA(C,5); 启用条件:= TDXDLL1(10, STR2CON(CODE), 条件, 0); TDXDLL1(11, 股票代码, 条件)条件成立时禁止当前股票的止损止盈或条件单执行 参数
例子{当前股票价格在5日均线之下时禁止当前股票的止损止盈或条件单执行} 条件:C < MA(C,5); 禁止条件:= TDXDLL1(11, STR2CON(CODE), 条件, 0); TDXDLL1(14, 股票代码, 条件)条件成立时刷新持仓数据 参数
例子条件:Cross(c, MA(c,5)); 刷新持仓:=TDXDLL1(14, STR2CON(CODE), 条件, 0); TDXDLL1(15, 股票代码, 类型, 价格)设置买入价格 参数
例子{设定卖5价买入} 设定买入价:=TDXDLL1(15, STR2CON(CODE) , 0, DYNAINFO(21)+0.04); TDXDLL1(15, 股票代码, 类型, 价格)设置卖出价格 参数
例子{设定买5价卖出} 设定卖出价:=TDXDLL1(15, STR2CON(CODE) , 1, DYNAINFO(20)-0.04); TDXDLL1(16, 股票代码, 数值)把数值写到当前日志文件里,方便调试 参数
例子{此例子把当前最新周期的收盘价写到日志文件,此文件位于大智慧或通达信等软件的助手日志下面} 写日志:=TDXDLL1(16, STR2CON(CODE), C, 0); TDXDLL1(17, 股票代码, 数值)把数值以消息框的形式弹出来显示,方便调试 参数
例子{此例子把当前最新周期的收盘价弹出消息框} 消息框:=TDXDLL1(17, STR2CON(CODE), C, 0); TDXDLL1(7, 助手编号, 账号编号)指定助手编号 参数
例子{指定(切换)助手编号,后面所有语句都是针对这个编号为1的助手起作用} 选择账户1:=TDXDLL1(7, 1, 0, 0);}
尊贵版选择账户例子{指定(切换)账号编号,后面所有语句都是针对这个编号为1的账号起作用,账号编号以助手条件单里的排序为准} 选择账户1:=TDXDLL1(7, 0, 1, 0);} TDXDLL1(18, 股票代码, 发送方式, 条件*消息类型)条件成立时发送邮件,QQ,微信信息 参数
例子{价格大于10元发送类型为5的邮件} 条件:C > 10; 发邮件:=TDXDLL1(18, STR2CON(CODE), 0, 条件*5); |
|