(2015更新)用AUTOIT和TB打造国内期货无人值守全自动交易系统
本帖最后由 hyjok 于 2015-6-3 15:22 编辑2015.6.2更新:
;功能描述:
;TB自动登录并启动自动交易
;监视TB实盘运行状态
;自动发送TB登录事件、行情断开报警消息
;发送方式:电子邮件,qq电子邮件可以通过微信或QQ接收,即时可以收到消息
重要说明:本脚本程序目的是减轻人为重复劳动,并不能完全替代人的作用,收到报警信息后请及时登录服务器检查TB运行情况。
(不才非专业程序员,TB自动登陆脚本纯属一个小小的TB实盘用户个人兴趣捣鼓出来的小工具,专业程序员请勿喷)
脚本程序及使用说明见附件(链接:http://pan.baidu.com/s/1pXBqe 密码:oq2o)
适用于TB 4.5.2、TB 5.0.19、TB4.3.5.10版本的32位版本(暂不适用64位版TB)
就在这把内容贴出来好了,还要人家跑那么远的路。。。:@ 原帖由 ccms 于 2009-9-10 15:23 发表 http://www.tradeblazer.net/forum/images/common/back.gif
就在这把内容贴出来好了,还要人家跑那么远的路。。。:@
呵呵!不要急,跟着就贴:lol 一、AUTOIT和TB简介
AutoIt 可以做的事:
[*]
运行 Windows 及 DOS 下的可执行文件 [*]
模拟键击动作(支持大多数的键盘布局) [*]
模拟鼠标移动和点击动作。 [*]
对窗口进行移动、调整大小和其它操作。 [*]
直接与窗口的“控件“交互(设置/获取
文字、移动、关闭,等等) [*]
配合剪贴板进行剪切/粘贴文本操作 [*]
对注册表进行操作AUTOIT下载地址http://www.autoitscript.com/autoit3/files/archive/autoit/autoit-v3.3.0.0-setup.exe
AUTOIT在线中文帮助文档http://www.dreams8.com/autoit/
TB:指交易开拓者超强版,详见TB网站论坛http://www.tradeblazer.net/forum/index.php
二、电脑系统设置
用做自动交易的电脑系统必须设置成自动登录,否则无法实现无人值守自动交易,电脑系统自动登陆方面请自己到网上搜索,不管是WIN XP还WIN2003都可以
(假设系统是设置成Administrator用户自动登录,后面设置自动启动交易时会用到自动登录用户Administrator的文件夹,见五)
三、TB准备工作
1、安装TB ,登陆TB
2、TB系统设置,打开“系统设置”,在“常规”页选中“打开最后保存的工作室(所有工作区)”;
[ 本帖最后由 hyjok 于 2010-1-15 13:17 编辑 ] 在“交易”页中将“默认显示交易师普通单确认页面”“默认显示交易师触发单确认页面” “默认显示预埋单之一键下单确认页面”“默认显示成交回报页面”四项前面的勾(√)去掉;然后点击“确定”
(以上设置目的是实现下次登录TB时自动打开交易图表) 2、TB交易帐户设置
打开“交易帐户”选择好自动交易的帐号,填写密码,在“保存密码”和“自动登录”处打勾,然后点击“登录”(设置目的是实行下次登录TB时自动登录交易帐户)
3、自动交易指令设置
建立需要交易的期货合约图表,插入交易指令,打开“交易指令设置”窗口
点击“启动自动策略交易系统”在弹出窗口中点击“同意”
选择交易帐户,并点击选中“下单不需要用户确认”,然后点击“确定”
4、点击菜单“文件”—“保存所有工作区”,关闭TB
到此,TB设置完成,上面的设置是TB的常用设置,对TB熟悉的朋友来说是比较简单的
四、AUTOIT脚本设置
AUTOIT下载地址http://www.autoitscript.com/autoit3/downloads.shtml
AUTOIT在线中文帮助文档http://www.dreams8.com/autoit/
1、
下载、安装AutoIt Full Installation
2、
在D盘根目录下建立AUTORUNTB文件夹(用于存放AUTOIT脚本文件,不一定放在D:\AUTORUNTB文件夹,你也可以存放在其它文件夹内,这里只为方便表述举例而已)
3、
在D:\AUTORUNTB文件夹内,按鼠标右键,点击“新建”-“AutoIt v3 Script”,输入文件名字为AUTORUNTB,文件默认为au3后缀
4、
右击刚才新建的AUTORUNTB.au3,点击“Edit Script”,打开脚本编辑窗口,将以下代码复制到脚本编辑窗口,在代码中注明“用你的TB登陆账号(密码)替换***”处替换成你的TB登录帐号和密码,然后保存,按键盘F7键将脚本编译成EXE可执行文件 本帖最后由 hyjok 于 2011-9-25 21:13 编辑
2011-09-25请下载1楼代码
第一部分,2010-2-26日更新前的旧代码,适用于TB的3.2.6及之前版本#Include <date.au3>
Dim $result,$tmp1,$path,$TBloginname,$TBloginpassword,$WorkNum,$WorkTabID
$path="C:\Program Files\TradeBlazer\" ;TB默认安装路径,如非默认安装,这里需要更改为你TB安装路径
$TBloginname="***" ;用你的TB登陆账号替换***
$TBloginpassword="***" ;用你的TB登陆密码替换***
$WorkNum=2 ;这里的数字2代表你打开工作区数量,请根据你的实际情况做相应修改(另外请务必保留工作区默认名字,如“工作区1”、“工作区2”,或者保持七个半角字符宽度,切记,否则会影响打开自动交易功能)
$WorkTabID="TabWnd:400000:8:10003:02" ;这里"TabWnd:400000:8:10003:02"需要替换为你的工作名控件标识,查询方法见帖子46楼
;循环开始
While 1
If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版) - ") = 0 Then
ProcessClose("TradeBlazer.exe")
ProcessClose("TradeBlazerWindows.exe")
Sleep(3000)
EndIf
If WinExists("交易开拓者(超强版) - ") = 0 And ((@HOUR=8 And @MIN>=50) Or @HOUR>=9) And @HOUR <=22 Then
$result=0
Run($path&"TradeBlazer.exe",$path)
WinWaitActive("欢迎登录交易开拓者(超强版)","",10)
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1",$TBloginname)
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2",$TBloginpassword)
ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")
ControlClick("欢迎登录交易开拓者(超强版)","","Button2")
WinWaitActive("交易开拓者(超强版) - ","",30)
Sleep(2000)
WinActivate("交易开拓者(超强版) - ")
If WinExists("系统消息") Then
WinActivate("系统消息")
WinClose("系统消息")
Sleep(1000)
EndIf
;TB自动登陆设置*****结束*****
For $i=1 To $WorkNum
$tmp1 = 15 + 60 * ($i - 1)
WinActivate("交易开拓者(超强版) - ")
ControlClick("交易开拓者(超强版) - ","",$WorkTabID,"left",1,$tmp1,6)
Sleep(3000)
$result=WinMenuSelectItem("交易开拓者(超强版) - ","","文件(&F)", "启动所有自动交易");启动工作区内所有自动交易
Sleep(1000)
Next
If $result=1 Then DllCall("user32.dll","int","LockWorkStation");开启TB自动交易后,锁定电脑系统,用于服务器版系统如windows 2003
If $result=0 Then
WinActivate("交易开拓者")
WinClose("交易开拓者")
Sleep(2000)
EndIf
ElseIf ((@HOUR=8 And @MIN<50) Or @HOUR<8) And @HOUR>22 Then
DllCall("user32.dll","int","LockWorkStation");非交易时间启动电脑后,立即锁定电脑系统
EndIf
If WinExists("交易开拓者") And @HOUR>22 Then ;非交易时间关闭TB
ProcessClose("TradeBlazer.exe")
ProcessClose("TradeBlazerWindows.exe")
ProcessClose("TradeBlazerConnect.exe")
ProcessClose("TradeBlazerDatabase.exe")
ProcessClose("icegridregistry.exe")
EndIf
Sleep(1000)
WEnd
;循环结束第二部分,2010-2-26日更新后的新代码,适用于TB的3.2.7及其后续版本#Include <date.au3>
Dim $result,$tmp1,$path,$TBloginname,$TBloginpassword
$path="C:\Program Files\TradeBlazer\" ;TB默认安装路径,如非默认安装,这里需要更改为你TB安装路径
$TBloginname="***" ;用你的TB登陆账号替换***
$TBloginpassword="***" ;用你的TB登陆密码替换***
;循环开始
While 1
If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版) - ") = 0 Then
ProcessClose("TradeBlazer.exe")
ProcessClose("TBDataCenter.exe")
Sleep(3000)
EndIf
If WinExists("交易开拓者(超强版) - ") = 0 And ((@HOUR=8 And @MIN>=50) Or @HOUR>=9) And @HOUR <=22 Then
$result=0
Run($path&"TradeBlazer.exe",$path)
WinWaitActive("欢迎登录交易开拓者(超强版)","",20)
WinActivate("交易开拓者(超强版)")
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1",$TBloginname)
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2",$TBloginpassword)
ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")
ControlClick("欢迎登录交易开拓者(超强版)","","Button2")
WinWaitActive("交易开拓者(超强版) - ","",30)
Sleep(2000)
WinActivate("交易开拓者(超强版) - ")
If WinExists("系统消息") Then
WinActivate("系统消息")
WinClose("系统消息")
Sleep(1000)
EndIf
;TB自动登陆设置*****结束*****
WinActivate("交易开拓者(超强版) - ")
Sleep(2000)
$result=WinMenuSelectItem("交易开拓者(超强版) - ","","文件(&F)", "启动所有自动交易");启动工作区内所有自动交易
Sleep(2000)
If $result=1 Then DllCall("user32.dll","int","LockWorkStation");开启TB自动交易后,锁定电脑系统,用于服务器版系统如windows 2003
If $result=0 Then
WinActivate("交易开拓者")
WinClose("交易开拓者")
Sleep(2000)
EndIf
ElseIf ((@HOUR=8 And @MIN<50) Or @HOUR<8) And @HOUR>22 Then
DllCall("user32.dll","int","LockWorkStation");非交易时间启动电脑后,立即锁定电脑系统
EndIf
If WinExists("交易开拓者") And @HOUR>22 Then ;非交易时间关闭TB
ProcessClose("TradeBlazer.exe")
ProcessClose("TBDataCenter.exe")
EndIf
Sleep(1000)
WEnd
;循环结束[ 本帖最后由 hyjok 于 2010-3-2 14:30 编辑 ]
第三部分,应用到TB3.3.0版
#Include <date.au3>
Dim $result,$tmp1,$path,$TBloginname,$TBloginpassword
$path="C:\Program Files\TradeBlazer\" ;TB默认安装路径,如非默认安装,这里需要更改为你TB安装路径
$TBloginname="***" ;用你的TB登陆账号替换***
$TBloginpassword="***" ;用你的TB登陆密码替换***
;循环开始
While 1
If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版) - ") = 0 Then
ProcessClose("TradeBlazer.exe")
ProcessClose("TBDataCenter.exe")
Sleep(3000)
EndIf
If WinExists("交易开拓者(超强版) - ") = 0 And ((@HOUR=8 And @MIN>=50) Or @HOUR>=9) And @HOUR <=22 Then
$result=0
Run($path&"TradeBlazer.exe",$path)
WinWaitActive("欢迎登录交易开拓者(超强版)","",20)
WinActivate("交易开拓者(超强版)")
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1",$TBloginpassword)
ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")
ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2",$TBloginname)
ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")
ControlClick("欢迎登录交易开拓者(超强版)","","Button2")
WinWaitActive("交易开拓者(超强版) - ","",30)
Sleep(2000)
WinActivate("交易开拓者(超强版) - ")
If WinExists("系统消息") Then
WinActivate("系统消息")
WinClose("系统消息")
Sleep(1000)
EndIf
;TB自动登陆设置*****结束*****
WinActivate("交易开拓者(超强版) - ")
Sleep(2000)
$result=WinMenuSelectItem("交易开拓者(超强版) - ","","文件(&F)", "启动所有自动交易");启动工作区内所有自动交易
Sleep(2000)
If $result=1 Then DllCall("user32.dll","int","LockWorkStation");开启TB自动交易后,锁定电脑系统,用于服务器版系统如windows 2003
If $result=0 Then
WinActivate("交易开拓者")
WinClose("交易开拓者")
Sleep(2000)
EndIf
ElseIf ((@HOUR=8 And @MIN<50) Or @HOUR<8) And @HOUR>22 Then
DllCall("user32.dll","int","LockWorkStation");非交易时间启动电脑后,立即锁定电脑系统
EndIf
If WinExists("交易开拓者") And @HOUR>22 Then ;非交易时间关闭TB
ProcessClose("TradeBlazer.exe")
ProcessClose("TBDataCenter.exe")
EndIf
Sleep(1000)
WEnd
;循环结束
5、
打开D:\AUTORUNTB文件夹,你看到有一个文件名为AUTORUNTB.exe的可执行文件,这就是我们需要的
五、将AUTORUNTB.exe设置为电脑开机自动登录后自动运行
打开“我的电脑”—“ 本地磁盘(C:)”—“Documents and Settings”—“Administrator”—“「开始」菜单”—“ 程序”—“启动”(即打开C:\Documents and Settings\Administrator\「开始」菜单\程序\启动文件夹)
在空白处按鼠标右键,点击“新建”—“快捷方式”,在创建快捷方式窗口中填入AUTORUNTB.exe的完整路径和文件名,本例中是D:\AUTORUNTB\ AUTORUNTB.exe,点击“下一步”—“完成”
至此,所有设置完毕,重新开机启动即可实现无人值守全自动交易
(如果是使用ADSL拨号上网的话,可以将电脑设置成开机自动拨号,具体设置请自己上网查)