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

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

  1. 代码中下面一句需要做修改才能保证脚本放在任意目录均可运行,否则这能运行于TB目录内
    Run("C:\TB\TradeBlazer.exe");这里需要更改为你的TB安装路径
    修改如下:
    Run("C:\TB\TradeBlazer.exe","C:\TB\");这里有两处需要更改为你的TB安装路径
     
  2. 学习了,谢谢分享!
     
  3. 何苦这么麻烦,现在远程控制很方便实现
    包括用sms这样的方式,有手机就能控制家里的PC
    不用调什么脚本~
     
  4. 微机远程控制的很很多啊,网上一搜一大把
     
  5. 这样干风险太高,不过感谢这位弟兄的共享,精神可嘉。
    买台服务器然后主机托管,自己买个最小的上网本外加3g上网,这样就可以满世界到处玩了,每天开盘前收盘前可以看下TB有没有挂掉,只要程序没死那么策略可以通过代码做到每天自己初始化
     
  6. "虽然模拟击键做无人值守可靠性不高 不过兰州把经验毫无保留地分享出来 可歌可泣啊 !o(∩_∩)o... ",模拟击键的可靠性很高,并非想象那样的低(如果代码没问题的话),这可是我实践了的
     
  7. 重要的是策略
     
  8. cimone说的没错,重要的是策略,没有能赚钱的策略,其他一切都是空谈,自动化交易只不过是一种执行工具而已
     
  9. AUTOIT代码更新

    Code:
    #Include <date.au3>
    Dim $result,$list[5][5],$pid1,$tmp1
    While 1 ;循环开始
    If ProcessExists("TradeBlazer.exe") And WinExists("交易开拓者(超强版") = 0 Then;系统中有TB进程,但没有TB窗口则先关闭TB进程;用于处理TB突然关闭马上重新运行TB时出现"交易开拓者(超强版)已经在运行..."错误提示的情况
      Sleep(3000)
    EndIf
    If 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])
    	    next
    	  EndIf
    [COLOR="Red"]  Run("C:\Program Files\TradeBlazer\TradeBlazer.exe","C:\Program Files\TradeBlazer\");TB默认安装路径,如非默认安装,这里有两处需要更改为你TB安装路径[/COLOR]
      WinWaitActive("欢迎登录交易开拓者(超强版)","",10)
      $list=ProcessList("TradeBlazer.exe")
      If $list[0][0]>1 Then
    	  for $i = 1 to $list[0][0]
    		 If $list[$i][1]<>$pid1 Then ProcessClose($list[$i][1])
    	  next
      EndIf
      If $list[0][0]=1 Then ProcessClose("TradeBlazer.exe")
      Sleep(1000)
      [COLOR="Red"]Run("C:\Program Files\TradeBlazer\TradeBlazer.exe","C:\Program Files\TradeBlazer\");TB默认安装路径,如非默认安装,这里有两处需要更改为你TB安装路径[/COLOR]
      WinWaitActive("欢迎登录交易开拓者(超强版)","",10)
      WinActivate("欢迎登录交易开拓者(超强版)")
      ControlFocus("欢迎登录交易开拓者(超强版)","","Edit1")
      ControlSetText("欢迎登录交易开拓者(超强版)","","Edit1","***");用你的TB登陆账号替换***
      ControlFocus("欢迎登录交易开拓者(超强版)","","Edit2")
      ControlSetText("欢迎登录交易开拓者(超强版)","","Edit2","***");用你的TB登陆密码替换***
      ControlFocus("欢迎登录交易开拓者(超强版)","","Button2")
      ControlClick("欢迎登录交易开拓者(超强版)","","Button2")
      WinWaitActive("交易开拓者(超强版) - ","",10)
      If WinExists("系统消息") Then
    	  WinActivate("系统消息")
    	  WinClose("系统消息")
      EndIf
      Sleep(1000)
      ;TB自动登陆设置*****结束*****
    [COLOR="red"]  For $i=1 To 5;//这里的数字5代表你打开工作区数量,请根据你的实际情况做相应修改(另外请务必保留工作区默认名字,如“工作区1”、“工作区2”)[/COLOR]
    	  $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");非交易时间启动电脑后,立即锁定电脑系统
    EndIf
    If WinExists("交易开拓者") And @HOUR>16 Then ;非交易时间关闭TB
    	WinActivate("交易开拓者")
    	Sleep(1000)
    	WinClose("交易开拓者")
    EndIf
    WEnd ;循环结束
    AUTOIT代码更新说明:
    1、解决因其他程序影响无法自动登陆TB的问题(前提是:电脑必须能自动登录并能自动上网)
    2、解决应用于远程服务器上,远程桌面登录时会关闭原已经登录的TB的问题
    3、解决电脑在锁定状态下无法自动登录TB的问题
    4、解决无法启动多工作区自动交易的问题
     
  10. 上述代码,请在最后一行“WEnd ;循环结束”前增加一行下面的代码,解决脚本运行时大量占用资源问题,增加代码如下
    Sleep(1000)
     
  11. 我真的搞不懂,就AUTOIT就能搞定期货无人值守全自动交易,还要啥TB呢?
     
  12. 无人值守不应该是严肃的交易者特意追求的交易方式。系统化全自动化的交易同样需要非常严格的实时监控
     
  13. 感谢楼主的分享,最近正准备搞这样一套系统,太有借鉴意义了
     
  14. 不可控风险必然会永远存在,大家能做的就是尽量规避,谢谢分享
     
  15. 自动化只是一种辅助手段,找到适合自己的稳定盈利交易方法才是根本,是否盈利的关键还是要有成熟可行的交易策略,请大家切记。