用AUTOIT和TB打造国内期货无人值守全自动交易系统一、AUTOIT和TB简介AutoIt 可以做的事:∙运行Windows 及DOS 下的可执行文件∙模拟键击动作(支持大多数的键盘布局)∙模拟鼠标移动和点击动作。
∙对窗口进行移动、调整大小和其它操作。
∙直接与窗口的“控件“交互(设置/获取文字、移动、关闭,等等)∙配合剪贴板进行剪切/粘贴文本操作∙对注册表进行操作AUTOIT下载地址/autoit3/downloads.shtmlAUTOIT在线中文帮助文档/autoit/TB:指交易开拓者超强版,详见TB网站论坛/forum/index.php二、电脑系统设置用做自动交易的电脑系统必须设置成自动登录,否则无法实现无人值守自动交易,电脑系统自动登录设置方法如下:在Windows XP中单击“开始→运行”,输入“rundll32 netplwiz.dll,UsersRunDll”(不包括双引号,注意大小写及空格),按回车就会出现一个“用户账户”的操作窗口,取消对“要使用本机,用户必须输入用户名和密码”项的选择,点击“应用”。
在接下来弹出的对话框中输入你想让电脑每次自动登录的管理员用户名及其密码,下次启动时就可以实现XP的自动登录了。
或者用下面方法也可以:REGEDIT4[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentV ersion\Winlogon]"DefaultUserName"="Administrator""DefaultPassword"="***""AutoAdminLogon"="1"打开记事本(“开始”—“程序”—“附件”—“记事本”)复制上面的五行代码到记事本里,替换Administrator为你的电脑系统登录用户名(系统默认是Administrator,如果不是请修改),替换***为你的电脑登录密码(无密码则直接删除***,保留双引号),然后另存为“自动登录.reg”,双击“自动登录.reg”后选“是”,下次启动时就可以实现XP的自动登录了另外,如果是将运行TB的电脑服务器托管在计算机机房,则可以在本机通过远程桌面登录远程电脑系统进行操作,用远程桌面登录后,操作远程电脑系统就像操作本地机一样。
(“开始”—“程序”—“通讯”—“远程桌面连接”打开远程桌面登录功能)Windows 2003的设置方法与Windows XP相同。
(假设系统是设置成Administrator用户自动登录,后面设置自动启动交易时会用到自动登录用户Administrator的文件夹,见五)如果是使用ADSL拨号上网的话,可以将电脑设置成开机自动拨号,具体设置:1.进入控制面板~~~网络与Internet连接~~~网络连接,创建一个快捷方式;2.复制快捷方式,将其拷贝到启动组里面。
启动组地址(XP):C:\Documents and Settings\All Users\「开始」菜单\程序\启动图1 拷贝到启动组(注:All Users为所有用户,也可以选择自己的用户。
)3.选择“网络连接”-右击-属性,如图进行设置:图2 设置属性图3 去掉多于的选项OK,以后开机就能够自动联网了。
三、TB准备工作1、安装TB ,登录TB2、TB系统设置,打开“系统设置”,在“常规”页选中“打开最后保存的工作室(所有工作区)”;在“交易”页中将“默认显示交易师普通单确认页面”“默认显示交易师触发单确认页面”“默认显示预埋单之一键下单确认页面”“默认显示成交回报页面”四项前面的勾(√)去掉;然后点击“确定”(以上设置目的是实现下次登录TB时自动打开交易图表)点击右下角“交易助手”按钮弹出交易助手设置窗口根据你的交易策略要求设置交易助手,,设置好点“保存设置”,然后点右上角“X”关闭交易助手设置窗口(配合交易助手可以很好地处理交易策略的未成交撤单重新委托问题。
)2、TB交易帐户设置打开“交易帐户”选择好自动交易的帐号,填写密码,在“保存密码”和“自动登录”处打勾,然后点击“登录”(设置目的是实行下次登录TB时自动登录交易帐户)3、自动交易指令设置建立需要交易的期货合约图表,插入交易指令,打开“交易指令设置”窗口点击“启动自动策略交易系统”在弹出窗口中点击“同意”选择交易帐户,并点击选中“下单不需要用户确认”,然后点击“确定”4、点击菜单“文件”—“保存所有工作区”,关闭TB到此,TB设置完成,上面的设置是TB的常用设置,对TB熟悉的朋友来说是比较简单的四、AUTOIT脚本设置AUTOIT下载地址/autoit3/downloads.shtmlAUTOIT在线中文帮助文档/autoit/1、下载、安装AutoIt Full Installation2、在D盘根目录下建立AUTORUNTB文件夹(用于存放AUTOIT脚本文件,不一定放在D:\AUTORUNTB文件夹,你也可以存放在其它文件夹内,这里只为方便表述举例而已)3、在D:\AUTORUNTB文件夹内,按鼠标右键,点击“新建”-“AutoIt v3 Script”,输入文件名字为A UTORUNTB,文件默认为au3后缀4、右击刚才新建的AUTORUNTB.au3,点击“Edit Script”,打开脚本编辑窗口,将以下代码复制到脚本编辑窗口,根据代码中红色部分说明做相应修改,然后保存,按键盘F7键将脚本编译成EXE可执行文件;脚本代码*********************************开始********************************#Include <date.au3>Dim $result,$list[5][5],$pid1,$tmp1While 1 ;循环开始If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版") = 0 ThenSleep(3000)EndIfIf WinExists("交易开拓者(超强版") = 0 And ((@HOUR=8 And @MIN>=56) Or @HOUR>=9) And @HOUR <=16 And @WDAY>1 And @WDAY<7 Then;交易时间开启TB自动交易;TB自动登陆设置*****开始*****,这部分实行TB自动登陆功能,如果TB有自动登陆功能的话,就简单多了(目前TB不能自动登陆)If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版") = 0 Then$list=ProcessList("TradeBlazer.exe")If $list[0][0]=1 Then $pid1=$list[1][1]ElseIf $list[0][0]>1 Then$pid1=$list[1][1]for $i = 2 to $list[0][0]ProcessClose($list[$i][1])nextEndIfRun("C:\Program Files\TradeBlazer\TradeBlazer.exe","C:\Program Files\TradeBlazer\");TB默认安装路径,如非默认安装,这里有两处需要更改为你TB安装路径WinWaitActive("欢迎登录交易开拓者(超强版)","",10)$list=ProcessList("TradeBlazer.exe")If $list[0][0]>1 Thenfor $i = 1 to $list[0][0]If $list[$i][1]<>$pid1 Then ProcessClose($list[$i][1])nextEndIfIf $list[0][0]=1 Then ProcessClose("TradeBlazer.exe")Sleep(1000)Run("C:\Program Files\TradeBlazer\TradeBlazer.exe","C:\Program Files\TradeBlazer\");TB默认安装路径,如非默认安装,这里有两处需要更改为你TB安装路径WinWaitActive("欢迎登录交易开拓者(超强版)","",10)WinActivate("欢迎登录交易开拓者(超强版)")ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1","***");用你的TB登陆账号替换*** ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2","***");用你的TB登陆密码替换*** ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")ControlClick("欢迎登录交易开拓者(超强版)","","Button2")WinWaitActive("交易开拓者(超强版) - ","",10)If WinExists("系统消息") ThenWinActivate("系统消息")WinClose("系统消息")EndIfSleep(1000);TB自动登陆设置*****结束*****For $i=1 To 5;//这里的数字5代表你打开工作区数量,请根据你的实际情况做相应修改(另外请务必保留工作区默认名字,如“工作区1”、“工作区2”)$tmp1 = 40 + 60 * ($i - 1)WinActivate("交易开拓者(超强版) - ")ControlClick("交易开拓者(超强版) - ","","TabWnd:400000:8:10011:02","left",1,$tmp1,6)Sleep(1000)WinMenuSelectItem("交易开拓者(超强版) - ","","文件(&F)", "启动所有自动交易");启动工作区内所有自动交易Sleep(1000)Next$result=DllCall("user32.dll","int","LockWorkStation");开启TB自动交易后,锁定电脑系统ElseIf $result<1 Then$result=DllCall("user32.dll","int","LockWorkStation");非交易时间启动电脑后,立即锁定电脑系统EndIfIf WinExists("交易开拓者") And @HOUR>16 Then ;非交易时间关闭TBWinActivate("交易开拓者")Sleep(1000)WinClose("交易开拓者")EndIfSleep(1000)WEnd ;循环结束;脚本代码*********************************结束********************************5、打开D:\AUTORUNTB文件夹,你看到有一个文件名为AUTORUNTB.exe的可执行文件,这就是我们需要的五、将A UTORUNTB.exe设置为电脑开机自动登录后自动运行打开“我的电脑”—“本地磁盘(C:)”—“Documents and Settings”—“Administrator”—“「开始」菜单”—“程序”—“启动”(即打开C:\Documents and Settings\Administrator\「开始」菜单\程序\启动文件夹)在空白处按鼠标右键,点击“新建”—“快捷方式”,在创建快捷方式窗口中填入AUTORUNTB.exe 的完整路径和文件名,本例中是D:\AUTORUNTB\ A UTORUNTB.exe,点击“下一步”—“完成”至此,所有设置完毕,重新开机启动即可实现无人值守全自动交易了解更新请看:/forum/thread-5465-1-1.html。