请教实时自动交易系统的开发测试环境

Discussion in 'General Topics on Software and Data' started by code46, Dec 24, 2007.

  1. Hi,

    我是学计算机的,没有什么交易方面的经验,也没有什么通过交易来获利的兴趣和企图。最近偶然的机会接触到自动交易系统的概念,觉得这是一个非常有趣的应用领域,很多计算机的理论和技术可以在这里发挥作用和得到检验。

    而后我读了一些相关的文章和书籍,觉得可以开始尝试写一个小系统,并希望侧重实时性方面。我有一个问题,就是如何搭建一个实际的开发测试环境。在我想来,这意味着必须能够获得实时的数据和能够进行实时的模拟交易,这需要有服务商提供paper trading的帐号和API接口。我不知道网络上有没有这样的专门给开发者提供的服务?或者有什么其他的方案可以搭建实时交易系统的测试环境?希望能够得到大家的指点。

    据说IB的paper trading和API接口不错,我也愿意缴纳每月的服务费用,但IB的paper trading帐户似乎不能单独申请,必须要先开一个主帐户,也就意味着要有一堆手续和钱的问题,这对于我这样的以开发研究为目的的人实在是觉得很麻烦。总之,我的目的就是玩、学习、开发、研究、测试而不是获利,大家有任何这方面的建议的话,一定多多指点我,谢谢。
     
  2. 欢迎!!你可以联系我的。
     
  3. 在TradeBlazer开个测试帐户,利用TB也可以达到这个目的
     
  4. 测试帐号看来是唯一的办法?昨天在一个老外的论坛上看到有人问类似的问题,回复也是说用demo account,而且据说有一些服务商在你帐号过期以后不会被立即禁掉——因为你用测试帐号,对它没什么损失,而保留你的帐号却是它唯一可能吸引到你在未来注册的可能性。
     
  5. 接着灌水,想问问API,请做过相关开发的大虾指点。在我外行的理解里,有三类接口可以用来做开发和扩展:

    最简单的应该是各个软件平台自带的脚本语言吧 (EasyLanguage, MQL etc.)。大概看过几个程序,印象里这些语言的优点是易学(对于非专业程序员),但相对于通用的程序设计语言而言过于简单和笨拙,开发环境简陋,扩展性、复用性存疑,FFI存疑,只能定义交易策略、更深入的开发做不了什么,局限于所用软件平台。

    最复杂灵活的因该是直接曝露data feed和order指令API的这些系统吧。基于这些原始指令,我们应该可以开发任何自己设计的交易客户端,从数据读取、储存、显示到分析、策略、下单,从语言到算饭到框架等等都可以自己掌握,大量开源的科学计算库也可以作为非常有用的扩展。缺点大概是自己要做的工作比较多,此外就是不同的服务商的接口不同,需要为不同服务商写接口模块 (个人用户客户端应该不是用FIX协议的吧)。

    然后就是最近看到的openquant这一类的,它似乎是介乎于前两者之间的。粗略地浏览了一下它所提供的API,好像它封装了不同服务商的数据接口为公共接口并提供一系列辅助的基础模块,你可以用通用编程语言和这些API来开发,既为开发者省去了很多琐碎的工作也不失灵活性。它提供了一个集成开发环境,一方面我觉得这是很好的便利,但另一方面我还不清楚这样的集成开发环境是否会带来什么限制——比如系统的工作流程,是它已经定义好了且必须用规定的,还是可以完全自己开发或者替换——这我还没有时间去看清楚。我知道这个论坛上有人在学习这个系统,希望多多指教。

    希望有大虾能够多多指点,毕竟我就是个感兴趣的门外汉。
     
    Last edited by a moderator: Dec 26, 2007
  6. code46
    你了解行业软件的速度还是蛮快的,我给你一点建议:刚进入这个行业要操心的事情太多了,数据、接口、语言、DLL、系统。
    我觉得你需要明确你想要的是什么。
    从你最初的帖子看,你要进行某个系统的测试,而且是实时测试,对于这个目标,我认为tradestation是个不错的选择。
    首先我要声明,不开户的话没有办法使用tradstation进行测试,因为他不提供免费试用,也不提供模拟交易。之所以在这种情况下我还是推荐tradestation,原因有三:
    1,我用他用的最久,有个人感情因素
    2,系统测试中,利用历史数据测试(backtesing)是必不可少的步骤,TS在这方面做得很好,如果你不做backtesting而只做实时测试,那么每次系统的改动,你都要花上数个星期甚至数年才能在实时测试中得到足够的样本,恐怕你没有考虑这个因素吧。
    3,完成backtesting之后,花点钱做实盘测试是值得的。

    我正在做这样的事情,详情请见http://hylt.net/vb/showthread.php?p=66589#post66589
     
  7. Hi,neo_cn

    我觉得你这个问题是讲到了关键的地方。正如前面所说的,我学的是CS ,对交易完全是个门外汉。我的兴趣,是实现更强大的系统来进行statistical arbitrage和algorithmic trading。我既不是交易专家也不是统计学高手,我的兴趣在于这样的automated trading system本身——语言、并行化和机器学习等等都是逐渐开始应用并迟早会广泛使用在这一领域的技术。华尔街的一些公司在这个方面已经积累了很多,我非常希望可以学习一些相关的知识。

    如果你和我一样常去amazon瞎逛就会发现,这个方向的书其实不多(自动交易策略的多,但讲系统的少),少数的几本也大都只是讲讲概念和一些toy example,所以我现在的做法就是通过实践来学习 (以后大概会找相关的工作以获得更多的学习机会)。当然,尽管我自己的兴趣是系统方面,如果不学一些行业知识,那也是无的放矢,做原型系统也是无处下手。我觉得海洋论坛是个不错的请教问题的地方。

    实时性在algorithmic trading里很重要,尽管现在我可能没有这样的实验条件,但这在实现系统的时候是最重要的几个考虑的因素之一。

    谢谢你的建议,尽管我们的兴趣不完全一致,但会有很多交集。比如backtesting,你可能更关心哪个系统的backtesting更有助于测试你的自动交易策略,但从我的角度我可能更感兴趣的是TS的backtesting是怎么设计实现的和为什么用户觉得它比别家的好用。所以你的信息对我同样很有用处,谢谢 :)
     
  8. Hi 黄兄,

    谢谢你的建议。参见我对neo_cn兄的回复,我个人的兴趣主要在于交易系统本身的开发和实现。某种交易策略的定义和算法实现——尽管我也需要了解,却不是我关心的重点。WLD所提供的似乎也是一种script language,属于我前述所说的第一类(如果说错了请更正),而我希望使用的是更底层的API来自己实现一个系统。不知道这里有没有人对openquant比较熟,我想请教:openquant的开发环境在提供了一些高阶API方便开发的同时,是否也有某些限制——换言之,我是否可以只用它的部分API(data feed, place order之类)而自己实现一个完全独立的系统?

    关于历史数据,有人用过opentick吗,可否评论一二?此外,我昨天看到美国某校一门课程实验(可惜讲的很不详细)是使用Bloomberg和Reuters的market data进行处理,但从这两家的网站上我倒没看到什么免费的数据源服务——无论是实时的还是历史的,请教这是为什么?
     
  9. 看来code兄是位牛人,起点很高,而且不想赚钱。
    论坛管理员tom_sh是Quant Developer(Open Quant的老爸)的正版客户,也许他能帮到你。
    美国金融市场数据服务很少免费的。
    一个成熟的交易系统平台,如Wealth-Lab Developer,已经内含了大量的市场规则和机制、交易者行为流程和习惯;对于它的开发者来说,理解并在软件(特别是Back-testing功能模块)中实现这些东西要花费的时间和成本可能远远多于软件本身的开发。
     
  10. 你一发帖,我就完全知道了你要的是什么,但你就是不理我,呵呵,有什么办法,缘分啊。
    你要的东西,我一直在为此工作,automated 、algorithmic trading,至于algorithmic trading,那也不算什么高深的东西,我目前已经完成和思考的东西中完全包括了你希望的东西,我上网招聘过程序员,最后也非常失望,至少他们没什么野心,他们只是想赚点点心钱。

    IT方面我基本是白痴,没办法。
     
  11. Hi amkr兄,

    实在很抱歉,因为你前面的回帖里只有一句话,让我不知从何回复起。

    我目前只是刚刚开始,自己看了些书,但正如我前面帖子里提到的,书上大都讲的是概念,要确定自己是真搞明白了还是需要动手去在实践中解决问题,在工作的过程中学习,不过这也需要一定的过程和时间。遇到问题的时候我会来这里问,希望你们能够不吝指教。

    目前还是打算从openquant入手,通过它来慢慢了解和学习,毕竟它也算是对程序员最友好的平台之一了。即使是以后它的可编程性不能满足我的需求、需要重新开发自己的系统,前面的工作也不算是浪费,因为它总归是一个不错的入门途径和参考对象。
     
  12. zwz

    zwz

    oq好象不行,但黄老大提到的Open Quant的老爸Quant Developer可以,QD允许你调用它的所有API而自己实现一个完全独立的系统。如果你只需要data feed ,place order之类的API,可直接到数据提供商/纪纪商的网站找找,象IB,opentick就提供有这类API。
     
  13. 算是开始交流了。
    就我现在的认识而言,我绝对支持你一开始就研究OPENquant,或者Quant Developer,非常符合你目前的要求,但这个仅仅是起点,是一个正确的起点。(没时间说客气话了,请原谅我说话的口气)
    先别考虑如何创建一个战胜市场的交易系统,先熟悉软件的功能。接下来就是要熟悉交易,尤其是期货方面,股票就现在而言,是浪费时间,如果不懂交易和市场,再好的IT天才也不会有好软件的蓝图的,开始的时候,是先有飞机设计师,后来就变成先有飞行员了。
    你以后要的东西,我有什么就给你什么,我喜欢支持有野心的人。
     
  14. zwz兄和amkr兄,

    非常感谢你们的建议,让我这样的新手少走不少弯路。下面我会去研究OpenQuant(QuantDeveloper)。有了问题或是心得,我会贴到这里或是QuantDeveloper版面,请大家知无不言。我的进展速度不一定很快,但一定不会半途而废,因为选择这个方向我并不是心血来潮,而是考虑过相当一些时候的。谈不上有什么野心,但有兴趣做点东西出来。
     
  15. 选择QuantDeveloper 吧,openquant只是QD的简化版,有些功能只可以在QD上实现. 数据源方面QD提供了好多接口,只要有这些券商或经纪商的用户名和密码就能直接用了.
     
  16. 愿意花点小钱(固定月费)的话,用IB还是很不错的,IB的API完全够用了,学计算机的通过了解IB的产品来了解可被交易的品种,是很不错的方式,非常期待IB能在国内开展业务啊,或者是国内出现一家像IB这样提供API的公司。

    自动交易系统,完全可以自己写,自动测试环境也可以自己搭建,不需要任何的其它软件,你有一定的软件设计水平和数学建模水平就可以很快实现一个自动交易系统,问题是,想要持续稳定赚钱的话,就难了

    自动交易系统的核心是交易决策系统,它是基于市场的技术分析的,学软件的其实最难过的就是市场这一关,需要先全面学习技术分析。

    推荐一本很好的入门书"期货市场技术分析",先打好基础,全面了解后,在你的自动交易系统里面去尝试各种指标吧。
     
  17. IB的paper trading也做得不错,感觉和实际交易没什么区别
     
  18. 如果连在IB开户都嫌麻烦的话,那么后面你遇到的麻烦将比在IB开户大几千万倍,你有心去做的话,IB开户只是小case,那些月费,也是小case
     
  19. 我的观点恰恰相反,你必须让你脑子保持纯净,别让一切历史上的“伟大技术方法”占领任何一个角落,别看太多的书,前人的东西在他们那里是精华,在你这里一般来说都是糟粕,切记啊!!!!
    市场是个角斗场,人被一个一个地抬了出去,其中许多人曾经都是IT英雄。除非你有本领、有野心、有一个超人的心胸,否则别来这个血腥残酷的地方。