自动程序框架

Discussion in 'General Topics on Software and Data' started by redchina, Sep 15, 2008.

  1. 经过一段时间的研究,现在实现A股的自动交易,采用软件AUTOIT,EXCEL、大智慧2和飞狐两个行情软件的预警相配合。自动程序框架如下:

    第一部分:

    1、自动登录交易软件

    2、打开EXCEL文件,等待接收数据

    3、获取持仓数据送EXCEL文件

    4、逻辑判断是否触发基本止损条件

    5、标准化交易代码,自动下止损单

    第二部分:

    1、启动行情软件,启动预警

    2、获取持仓预警数据回传至EXCEL

    3、逻辑判断是否触发辅助止损条件

    4、形成交易指令,自动下单

    第三部分:

    1、利用交易系统以预警的形式对自选股板块进行监控,判断是否满足启动条件

    2、触发预警送EXCEL

    3、获取当前现金数额,形成交易数量

    4、自动下单买入

    5、进入持仓数据库进入第一部分流程
    程序现在已经完成第一部分,止损单下单正常,只一笔下单用时3S,我试验一下9笔单子程序用时19S,继续完善中。
    http://hexun.com/phby/default.html
     
  2. 恭喜!
    如果方便,请把海洋部落加入平衡博弈的友情链接。
     
  3. 在此也感谢论坛的fisher和其他的朋友 fisher曾给予了我很多的帮助,他的自动化程序是在C#中实现的。曾经最困扰我的问题是大智慧预警数据的调用,这个问题我也已经顺利解决了,其实最终就是一个SysListView控件的调用问题,AUTOIT是个功能非常强大软件,尤其是对控件的调用比其他的编程语言要简单的多。
     
  4. OK
     
  5. 我的自动下单也是用Autoit实现的,效果还不错。为了独立运行,有服务器建议使用一个远程桌面用户专门运行下单,如果一台电脑的话,建议用一个轻便的虚拟机,推荐使用开源虚拟机Virtual Box专门跑下单。
     
  6. 请教这样做的好处是什么?这样做的目的是为了安全?我的笔记本里倒是装了VMWare,不过那是为了工作上软件用的。我的程序还需要完善,还不能和以前的的交易系统完美结合。
     
  7. 因为我的方法中是要不断刷新下单程序的回应(如成交回报等),所以就会不断WinActive下单程序,如果一个桌面运行的话就会出问题。
    虚拟机也会相对安全。
    VBOX资源占用较VM少。
     
  8. 请教jevinlee:
    能简单说说你的买入指令形成前的流程吗,卖出可以机械式的监控,买入指令形成前的过程还是需要交易者的事先判断吗,在做到无人值守还遇到了那些问题?
     
  9. 还没大量运行,策略的和A股大环境的原因。
    我的流程是这样的:

    行情(数畅)
    策略用AmiBroker来执行
    下单指令到数据库
    下单守护程序不断读取指令,完成操作,并将成交情况及委托号等数据再更新回数据库。
    AB再通过数据库取得成交情况。


    无人值守的问题,应该还要加一些检测程序并将情况通知给本人(可以是发Socket消息,短信,IM等),这应该不是什么问题。
     
  10. 音乐很好听,意境好
     
  11. jevinlee说的流程现在是不是处于想像中?基本上要实现这个很难,代价很大。
     
  12. 请问一下redchina A股为什么需要自动化? 因为没有杠杆,不能t+0。
     
  13. 应该是没有问题,利用目前常用的几个软件,形成交易指令,是一种省心的方法,利用WLD作为平台,自动下单论坛里面有好几个人实现了。
     

  14. 是都实现了。也不算难。。有一定开发经验都可以完成,反而是交易经验的不足所导致的策略比较难产而只能处于试验阶段,这个只能靠自己学习和积累了。。
     
  15. AmiBroker 可以用数畅读取国内实时行情?如果这样,也可以在AB的下单接口上开发。

    autoit这类的工具也有好处,把它建立在几种流行的行情软件上,实时行情的问题就解决了,只是反馈成交和交易策略在这种情况下不好实现。
     
  16. AB的Plugin分为DataPlugin和FuncPlugin。
    当然可以直接从数畅中直接读,不过我做了一个中间的行情服务器用于存储数据,然后AB和WLD都可以接上去。
    下单函数我仿照AB对IB的几个函数,如Connect,PlaceOrder,Cancel,GetPositionsList,GetOrderStatus...等,实际上是对数据库进行操作,当然也可以实现别的功能。

    成交回报也可以,只不过需要些技巧,目前对于市价,限价及撤单命令都能较好处理。

    还是觉得开发程序比开发策略容易的多。
     
  17. 高手啊,大家要多交流。
    我说成交回报不好做,指的是autoit那种下单方式的。因为是模拟键盘鼠标,拿成交回报恐怕要想办法。

    如果用AB或者WLD接口做的,成交回报按着接口的函数做就可以了
     
  18. 请问为什么都要把数据转excel?
     
  19. redchina 看了你的博,严谨的态度,感觉很好,很亲切很难得!没有自动化的朋友我建议辛苦点做一套自己的软件是最好最彻底的方案了。会省许多的后续的麻烦。
     
  20. jevinlee:
    请问数据库有没有内置的“守护程序”功能(就是在数据库记录更新变化后自动去触发外部程序或操作)?是不是一定要下外部的检测程序来不断检测数据库是不是有更新?
    谢谢