hyjok 发表于 2009-9-10 15:19:53

(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:37

就在这把内容贴出来好了,还要人家跑那么远的路。。。:@

hyjok 发表于 2009-9-10 16:17:14

原帖由 ccms 于 2009-9-10 15:23 发表 http://www.tradeblazer.net/forum/images/common/back.gif
就在这把内容贴出来好了,还要人家跑那么远的路。。。:@
呵呵!不要急,跟着就贴:lol

hyjok 发表于 2009-9-10 16:19:02

一、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 编辑 ]

hyjok 发表于 2009-9-10 16:20:01

在“交易”页中将“默认显示交易师普通单确认页面”“默认显示交易师触发单确认页面” “默认显示预埋单之一键下单确认页面”“默认显示成交回报页面”四项前面的勾(√)去掉;然后点击“确定”


(以上设置目的是实现下次登录TB时自动打开交易图表)

hyjok 发表于 2009-9-10 16:20:35

2、TB交易帐户设置
打开“交易帐户”选择好自动交易的帐号,填写密码,在“保存密码”和“自动登录”处打勾,然后点击“登录”(设置目的是实行下次登录TB时自动登录交易帐户)

hyjok 发表于 2009-9-10 16:21:15

3、自动交易指令设置
建立需要交易的期货合约图表,插入交易指令,打开“交易指令设置”窗口
点击“启动自动策略交易系统”在弹出窗口中点击“同意”
选择交易帐户,并点击选中“下单不需要用户确认”,然后点击“确定”

hyjok 发表于 2009-9-10 16:21:48

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 发表于 2009-9-10 16:22:23

本帖最后由 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
;循环结束

hyjok 发表于 2009-9-10 16:23:01

5、
打开D:\AUTORUNTB文件夹,你看到有一个文件名为AUTORUNTB.exe的可执行文件,这就是我们需要的

五、将AUTORUNTB.exe设置为电脑开机自动登录后自动运行
打开“我的电脑”—“ 本地磁盘(C:)”—“Documents and Settings”—“Administrator”—“「开始」菜单”—“ 程序”—“启动”(即打开C:\Documents and Settings\Administrator\「开始」菜单\程序\启动文件夹)
在空白处按鼠标右键,点击“新建”—“快捷方式”,在创建快捷方式窗口中填入AUTORUNTB.exe的完整路径和文件名,本例中是D:\AUTORUNTB\ AUTORUNTB.exe,点击“下一步”—“完成”

至此,所有设置完毕,重新开机启动即可实现无人值守全自动交易
(如果是使用ADSL拨号上网的话,可以将电脑设置成开机自动拨号,具体设置请自己上网查)
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: (2015更新)用AUTOIT和TB打造国内期货无人值守全自动交易系统