海洋BT交易平台的自动下单系统

Discussion in 'General Topics on Software and Data' started by 思迷思, May 12, 2006.

  1. 自动下单系统是程序交易的最后一个环节也是一个强大的交易平台应有的构成环节
    海洋论坛的gzpony兄对此有兴趣也有研究

    http://www.hylt.net/club/viewtopic.php?t=6724&highlight=

    恳请gzpony兄来此给大家进行一系列关于下单系统的启蒙 为最终开发出海洋BT自已的下单系统做好知识和人才的准备
     
  2. 国内目前几个公开的自动下单软件都未能实现实时反馈成交状况功能。也就是说,一张单打出去,是否成交,成交的价和量都不知道。这样就没办法实现无人化的机械交易。
    如果要实现这个功能,需要有柜台系统的接口支持。不过国内这些券商及其所采用的柜台系统的软件商们是轻易不会开放这个接口的,一来胆子小,二来小气。期货经纪商们更为如此。
    好象本坛所列的MetaTrader有此功能。
     
  3. 能够得到柜台系统的接口支持那是最好。
    与其等待国内柜台系统的接口支持,不如自己模拟实现这个功能。
    自动下单功能,之前好像是tom_sh兄已经实现出来了,或者通用点的话,控制用鼠标键盘来自动输入自动下单。
    至于反馈回来的消息,卷商不提供接口,可是它们的交易软件会反馈回来成交与否和价格等信息。想办法把这些数据读取出来,就有了反馈。

    这是我的一些想法,都没有实现出来 :) 兄弟们也想些更好主意,更好的构想海洋BT交易平台。

    MetaTrader有此功能,不过据说用MetaTrader的公司规模都不大,让人不放心。
     
  4. 回顾一下曾经有过的风波

    曾几何时各数据库大战未分胜负 微软出了个ODBC将各个数据库包了起来 最后用户记住了微软

    也是微软在操作系统中做了许多虚拟的设备将各个实际的外部设备封了起来 用户直接面对的是这些虚拟的东西 最后人们记住了微软

    因此 G兄想一下 我们是否也能最终在海洋BT中做一个虚拟的下单系统 等海洋BT壮大了 各柜台以此虚拟的系统为标准时 我们就胜利了

    可能这样的路会很长很长 但只要有一个奇迹出现它就会实现的 而此奇迹就在用户的选择权上
     
  5. 我认为这个思路方向很有意义!
     
  6. 呵呵,当年MS的ODBC成为标准,靠的主要还是windows平台的垄断性: 每个windows上面都有ODBC的驱动,只要做的不是很烂,能不流行起来吗。

    如果我们在海洋BT中做下单系统,希望标准能自己定义,并最终让各券商都按这个标准来部署,想法是不错,可是难度也很不少。最难的莫过于找到第一个使用的券商。

    如果再用类似上面数据库的做例子。我们先定义标准再推广,就相当于我们在数据库自己定义了一个标准,做了一个产品,要求MS跟从我们这个标准,修改他们原本有关的一些部分;可以想象,这样是很难做到的。

    而我们依照目前能想到的办法,不必券商配合就做出来,就相当于我们直接在MS的规范写出来数据库,可以不必MS修改配合,做好了直接可以用可以分发。当然这种方法会受到MS目前情况的限制,可是不需要MS配合,应该是最容易应用起来的方法。
     
  7. G兄 在GT文档的第60项有关于BROKER的函数 不知能否做参考
     

  8. GT文档是啥?
     
  9. 探讨一种可行的方案

    本人对自动交易蛮有兴趣,海洋论坛给了我许多启发,俺也说两句
    关于自动下单的问题,与券商合作,做出无缝的接口是固然是最好的方法,但是难度也最大。
    偶然的机会在海洋论坛上看到一款软件 autoit,说是可以模拟键盘什么的,装一看,的确是好东西,功能非常强大,比模拟精灵强多了(模拟精灵没有怎么用过)比用vb的sendkey做出来得东西稳定不知道多少倍!!
    原来有一个想法,在飞狐交易师中写一个下单的东西,因为飞狐中可以调用vbscript,可以建立autoit对象,可是飞狐总让人不放心,直到用wealth lab....现在本人在弄wealthlab的下单接口。。用vb.net+autoit开发,券商的下单程序是银河的xiadan.exe.
    下面是在飞狐中的一个下单的函数,



    Code:
    <%
    p=FFL.VarData("p")
    'msgbox(p)
    function buy(ZQDM,SL)
    	dim oAutoIt	
    	dim sTitle 
    	sTitle ="网上股票交易系统 - z浙江湖州营业部"
    	Set oAutoIt =CreateObject("AutoItX3.Control")
    	if oAutoIt.WinExists(sTitle) then
          '发送f1功能键
    	   oAutoIt.ControlSend sTitle, "", "SysTreeView322", "{f1}" 
          '等待卖入界面出现,等待5秒钟
    	   oAutoIt.WinWait sTitle, "买入价格", 5 
          '设置代码
          aa=oAutoIt.ControlSetText( sTitle, "",1032, ZQDM)
          '这里需要检测一下是否为正确的代码,有没有数据显示。
    
          '设置购买数量
          aa=oAutoIt.ControlSetText( sTitle, "",1034, SL)
          do while oAutoIt.ControlGetText( sTitle, "",1034)="" or oAutoIt.ControlGetText( sTitle, "",1033)="" 
    	   loop 
    
         '提交购买
    
         oAutoIt.ControlClick sTitle, "", 1006
         oAutoIt.WinWaitActive "网上股票交易系统", "是(&Y)", 5
       '确定  
    	'oAutoIt.ControlClick "网上股票交易系统", "", 6
    
    
       else
    	   buy=false
       end if	
    end function
    '测试
    aa=buy ("600608",7)
    
    %>
     
  10. Re: 探讨一种可行的方案



    呵呵,这位兄弟想法和我上面提到的类似。

    最开始看见说用模拟键盘鼠标自动下单的,就是在海洋这里。开头我也不喜欢这种方法,觉得不够直接,但后来比较过几个下单的方法,觉得用这个方法还是最通用最不受限制的。

    autoit比vb的sendkey更稳定吗? 为什么呢?
    autoit有com编程的方式,你用vbscript也是用这种方式调用吗?
     
  11. autoit比vb的sendkey更稳定吗?

    我想答案是:是的.
    因为它不仅可以sendkey,它还通过发送消息的方式直接发送消息给窗口,或者发送消息给控件!!

    看几个函数:Sets text of a control. 设置控件的文本
    ControlSetText( "title", "text", "controlID", "new text")
    Parameters
    title : The title of the window to access.
    text :The text of the window to access.
    controlID :The control to interact with. See Controls.
    new text: The new text to be set into the control

    发送控件命令
    Sends a command to a control
    ControlCommand "title", "text", "controlID", "command", "option"
    总之一句话,功能强!

    autoit有com编程的方式,你用vbscript也是用这种方式调用吗?
    有com方式,它提供了控件。请看介绍:
    Code:
    AutoItX is a DLL version of AutoIt v3 that provides a subset of the features of AutoIt via an ActiveX/COM and DLL interface. This means that you can add AutoIt-like features to your favourite scripting and programming languages, e.g. VB, VBScript, Delphi, C, C++, Kixtart, and most other languages that support the use of DLLs. 
    我现在正在写wealthlab的下单接口,用vb.net+autoit
    自用的,还不能通用吧。:)
     

  12. 我以为要做成脚本txt方式来运行,或者以com方式调用autoit来操作。
     
  13. 来自市场交易专家的希望

    A兄语
    系统交易中最现实的问题是执行,首先要假定的就是我们的意志力量还不能坚决执行系统的指令,任何对自己的意志过于自信都是令人怀疑的,所以应该将系统交易定位为自动化系统交易,自动化交易系统要比交易系统高几个层次。

    H兄语
    趋势型的交易系统一般成功的关键是资金管理,特别是加减仓,而加减仓在实际操作中对时间要求很高,所以自动下单很重要。我认为是这样子的。
     
  14. Re: 探讨一种可行的方案

    我昨天看了这个也开始用autoit做,思路跟你差不多,昨天刚实现自动登陆,但是发现不能实现下单,还有一个问题,我的思路是一旦自己的系统发出买卖信号的时候 就把这个股票代码和当时的价格带出,激发下单程序自动下单,本来的想法是把下单程序做成一个函数(或者function模块),需要两个输入(股票代码和价格,当然能实现这两个功能,那买卖数量自然也没问题了),我一直用的是FXJ,不知道这个软件能不能引用外部函数一样来调用下单模块,不行的话,就只能学另外一个 系统了,WLB可以?
     
  15. 代码在飞狐下调试不能通过,不知是如何原因
     
  16. 再次顶