用AUTOIT和TB打造国内期货无人值守全自动交易系统

Discussion in '开拓者期货自动交易平台' started by yonkim, Sep 10, 2009.

  1. 一、AUTOIT和TB简介
    AutoIt 可以做的事:
    • 运行 Windows 及 DOS 下的可执行文件
    • 模拟键击动作(支持大多数的键盘布局)
    • 模拟鼠标移动和点击动作。
    • 对窗口进行移动、调整大小和其它操作。
    • 直接与窗口的“控件“交互(设置/获取 文字、移动、关闭,等等)
    • 配合剪贴板进行剪切/粘贴文本操作
    • 对注册表进行操作
    AUTOIT下载地址http://www.autoitscript.com/autoit3/downloads.shtml
    AUTOIT在线中文帮助文档http://www.dreams8.com/autoit/
    TB:指交易开拓者超强版,详见TB网站论坛http://www.tradeblazer.net/forum/index.php

    二、电脑系统设置
    用做自动交易的电脑系统必须设置成自动登录,否则无法实现无人值守自动交易,电脑系统自动登陆方面请自己到网上搜索,不管是WIN XP还WIN2003都可以
    (假设系统是设置成Administrator用户自动登录,后面设置自动启动交易时会用到自动登录用户Administrator的文件夹,见五)
    (未完,待续)
     
  2. 三、TB准备工作
    1、安装TB ,登陆TB
    2、TB系统设置,打开“系统设置”,在“常规”页选中“打开最后保存的工作室(所有工作区)”;
     
  3. 在“交易”页中将“默认显示交易师普通单确认页面”“默认显示交易师触发单确认页面” “默认显示预埋单之一键下单确认页面”“默认显示成交回报页面”四项前面的勾(√)去掉;然后点击“确定”
     
  4. (以上设置目的是实现下次登录TB时自动打开交易图表)
     
  5. 2、TB交易帐户设置
    打开“交易帐户”选择好自动交易的帐号,填写密码,在“保存密码”和“自动登录”处打勾,然后点击“登录”(设置目的是实行下次登录TB时自动登录交易帐户)
     
  6. 3、自动交易指令设置
    建立需要交易的期货合约图表,插入交易指令,打开“交易指令设置”窗口
    点击“启动自动策略交易系统”在弹出窗口中点击“同意”
    选择交易帐户,并点击选中“下单不需要用户确认”,然后点击“确定”
     
  7. 4、点击菜单“文件”—“保存所有工作区”,关闭TB
    到此,TB设置完成,上面的设置是TB的常用设置,对TB熟悉的朋友来说是比较简单的
     
  8. 四、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可执行文件
     
  9. ;脚本代码*********************************开始********************************
    #Include <date.au3>
    Dim $result
    While 1 ;循环开始
    If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版") = 0 Then;系统中有TB进程,但没有TB窗口则先关闭TB进程;用于处理TB突然关闭马上重新运行TB时出现"交易开拓者(超强版)已经在运行..."错误提示的情况
    ProcessClose("TradeBlazer.exe")
    Sleep(1000)
    EndIf
    If ProcessExists("TradeBlazer.exe")=0 And ((@HOUR=8 And @MIN>=50) Or @HOUR>=9) And @HOUR <=15 And @WDAY>1 And @WDAY<7 Then;交易时间开启TB自动交易
    ;TB自动登陆设置*****开始*****,这部分实行TB自动登陆功能,如果TB有自动登陆功能的话,就简单多了(目前TB不能自动登陆)
    Run("C:\TB\TradeBlazer.exe");这里需要更改为你的TB安装路径
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1","***");用你的TB登陆账号替换***
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2","***");用你的TB登陆密码替换***
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")
    WinWaitActive("欢迎登录交易开拓者(超强版)")
    ControlClick("欢迎登录交易开拓者(超强版)","","Button2")
    WinWaitActive("交易开拓者(超强版) - ")
    Send("{enter}")
    WinWaitActive("交易开拓者(超强版) - ")
    Sleep(1000)
    ;TB自动登陆设置*****结束*****
    WinMenuSelectItem("交易开拓者(超强版) - ","","文件(&F)", "启动所有自动交易");启动所有自动交易
    Sleep(1000)
    WinSetState("交易开拓者(超强版) - ","",@SW_MINIMIZE);TB窗口最小化
    Sleep(1000)
    $result=DllCall("user32.dll","int","LockWorkStation");开启TB自动交易后,锁定电脑系统
    ElseIf $result<1 Then
    $result=DllCall("user32.dll","int","LockWorkStation");非交易时间启动电脑后,立即锁定电脑系统
    EndIf
    If WinExists("交易开拓者(超强版") And @HOUR>15 Then ;非交易时间关闭TB
    WinActivate("交易开拓者(超强版")
    Sleep(1000)
    WinClose("交易开拓者(超强版")
    EndIf
    if @HOUR=8 And @MIN=49 Then Shutdown(6);8:49重启动电脑,重起的原因:在电脑系统锁定的情况无法实现TB自动登陆(当然,如果TB可以自动登陆的话就不需要了,目前TB不能自动登陆)
    WEnd ;循环结束
    ;脚本代码*********************************结束********************************
     
  10. 5、 打开D:\AUTORUNTB文件夹,你看到有一个文件名为AUTORUNTB.exe的可执行文件,这就是我们需要的
     
  11. 五、将AUTORUNTB.exe设置为电脑开机自动登录后自动运行
    打开“我的电脑”—“ 本地磁盘(C:)”—“Documents and Settings”—“Administrator”—“「开始」菜单”—“ 程序”—“启动”(即打开C:\Documents and Settings\Administrator\「开始」菜单\程序\启动文件夹)
    在空白处按鼠标右键,点击“新建”—“快捷方式”,在创建快捷方式窗口中填入AUTORUNTB.exe的完整路径和文件名,本例中是D:\AUTORUNTB\ AUTORUNTB.exe,点击“下一步”—“完成”

    至此,所有设置完毕,重新开机启动即可实现无人值守全自动交易
    (如果是使用ADSL拨号上网的话,可以将电脑设置成开机自动拨号,具体设置请自己上网查)

    (完成)
     
  12. 学习
     
  13. 以上设置仅是实现接近于无人值守,需要交易的期货合约还必须人工预先设置好交易图表,大家一般都是交易主力合约,主力合约换月时还得人工设置
     
  14. 已经很厉害了。
     
  15. 如果可能,还是有人值守比较好。不可测因素很多。
     
  16. 搞得太复杂了
     
  17. 虽然模拟击键做无人值守可靠性不高 不过兰州把经验毫无保留地分享出来 可歌可泣啊 !o(∩_∩)o...
     
  18. 关于无人值守交易可靠度方面,必须要考虑几个方面:
    1、你的交易系统是否可靠,也就是说你必须得先有一个你完全信任的交易系统,在不考滤网络连接影响等非正常因素的前提下,让交易系统自动交易,能够做到在正常情况下不人工干预交易
    (不管是有人值守还是无人值守,有一个可盈利的交易系统以及坚定不移地执行交易信号这两方面是一切的前提,不能做到这两点,一切都是白费功夫)
    2、自动交易信号执行方面,TB已经做得很好,配合TB的交易助手功能,可以很好的处理未成交单撤单和重新委托
    3、其他非正常因素的影响,比如网络环境、电源供应的影响
    做自动交易的电脑最好放在计算机机房,可以尽可能大的避免网络环境和电源供应的影响
    在家交易的朋友可以考虑双网络连接,增加UPS不间断电源,以保证网络畅通和电源供应
    4、还有其他不可控制的影响因素,比如交易所系统故障、全国网络堵塞网络等,当然这些不可避免因素出现的可能性比较低,万一发生,任何人都逃不过,这就不是有人值守还是无人值守的问题了
     
  19. 我是一个菜鸟。

    不知道为什么,编译生成的AUTORUNTB.exe必须放在TB目录下才能正常运行,否则运行时窗口闪一下就没了。而指向其他诸如行情软件的主程序而编译的exe文件则没有这个问题。

    当然,这不影响影响使用的,倒是让我折腾了好一会。
     
  20. 楼主做成一个视频教程就方便多了。