开源股软-aiotrade

Discussion in 'Python & Quantopian' started by mydreams, Jan 19, 2010.

  1. 不要折腾了,如果真的打算从“商用”前途方面考虑的,还是去研究下marketcetera的体系结构,它的体系结构的商用化前途比较大。
     
  2. 建议看看“宏汇”。
    http://www.hh.com.cn

    该软件一直侧重于技术分析。在自编指标方面,有2种实现。
    1. 易编公式。与分析家的条件选股,一样。
    2. 易编程。与mt4的mql,一样。

    “宏汇”给我的感觉,是分析家、mt4的混合体。2者的优点,它都有。
     
  3. 股票数据的问题,如何转换格式?

    钱龙软件的个股k线数据以文件方式存放,如果软件默认安装,上海的数据存放位置
    C:\Program Files\qianlong\qijian\QLDATA\history\SHASE\day,这个里面是日线数据,每家公司一个文件,请问如何将这个数据转换成csv格式呢?
     
  4. mydreams,

    很高兴也敬慕你能为此投入精力。

    我用Ubuntu做国内证券投资已4年多,一直是在Wine上运行Windows软件如大智慧、文华及TB。几年前曾花了几个月时间开发了一套基于Java软件,基本可以运行,可直接读入大智慧和文华的数据,但因为还有些需要的功能没有实现,再加上其它一些分心的事,所以就搁置下了。

    也下载过aiotrade,但没有很多时间去研究它。

    不管怎样,如果你还在继续此或类似项目,我会极力关注并愿付出自己的力所能及。

    谢谢你。
     

  5. 你这一步失败是因为你没有执行apt-get update就apt-get install了。
     
  6. with all due respect,
    我觉得你对开源软件的理解很肤浅啊~

    无论是开源也好,商业也好,任何人写任何软件之前都有他们的目的。
    商业软件的目的是赚钱,因此只要能赚到钱,软件本身只是一个赚钱的工具而已,根本不重要。
    开源软件的目的是设计一个完全符合作者心中所想的完美的艺术品,至于能否赚钱,也根本不重要。

    所以说,商业软件也许表面功夫能做的很好,给你很完善很健壮很易用的感觉。这非常正常,因为它们的目的是要从你这里赚走钱。至于内部实现的好还是不好,你也不会去,或者说没有足够的能力去关心。你不关心的事情,商业软件一般就没必要为你去做好。

    开源软件与之相反,有能力独自开发开源软件的人一般是高手,高手最看重的是工作的效率这些内在,而不是华丽的界面这类表象。所以好的开源软件,会追求内在细节的完美,并且这个完美,不达到一定层次的用户是不会发觉和认可的。

    我随便举个例子。就说IE和firefox好了。IE对页面滚动的渲染采用的是O(n)算法,而firefox采用的是O(1)算法。后者比前者实现要复杂的多。但是对于绝大多数情况而言,用户根本就感觉不出两者的区别。但是当你用浏览器打开一个5M、10M以上的页面时,两者的差别就会十分的明显。前者会很卡很卡,而后者跟打开一个普通页面一样,没有任何区别。IE和firefox的这个差异,我也是无意中偶然发现的。我曾在blog上发了一个我收藏的所有音乐列表,很长很长,结果许多人在我下面留言说打开这个页面之后,CPU占用率100%,IE死了近2分钟。但是我因为不用windows,所以根本就没发现有这个问题。

    但其实,绝大多数用户并不会在意firefox的这个好处。并且绝大多数网页也会做分页处理,避免直接在一个页面内显示大量内容。所以说firefox的这个实现是没有太大现实意义的。但是开源软件作者大都都是这样,当解决一个问题有许多方法,有些方法好但实现困难,有些方法效果略差但实现简单,他们会习惯性的倾向于用最好但实现最困难的方法,尽管用户在大多数情况下根本发现不了两者的差别。这是一种对完美追求的本能。

    当然,每个人因为知识面的不同,对完美的认识也不相同。开源软件设计者通常会选择追求高效率的工作。为了这个目标而彻底放弃易用性。举个例子吧:比如Linux下最强大的编辑器emacs。这个编辑器是有史以来最复杂的编辑器。这个编辑器的入门第一章,居然是教你怎么上下左右移动光标。因为它放弃了键盘上的上下左右按钮,而是用ctrl+p,ctrl+n,ctrl+b,ctrl+f这4个组合键来取代简单直接的上下左右按钮,并且彻底放弃了鼠标操作。(emacs可以用上下左右和鼠标移动光标,但是这不是官方推荐的,正确的使用方式)听起来复杂而且脑残的不可思议对吧。但是我用emacs写代码的速度,甚至可以10倍于用VC之类的IDE的速度。并且VC只能写C代码,我用emacs可以做任何涉及文本的编辑,写C也好,写python也好,写java也好,写paper也好,写文档也好,聊天关税也好,我都可以维持一致的使用习惯,并且达到比对应的专用工具的高很多的效率。为啥emacs要放弃上下左右按钮,等你真正用习惯了就会发现,上下左右按钮离键盘区域太远了,同样的,鼠标也太远了。因此,如果频繁需要进行上下左右的移动,以及鼠标操作,就会频繁打断工作思路,大大降低工作效率。

    无独有偶,另一个强大的编辑器vim也是基于类似的思路,放弃了上下左右按钮和鼠标操作。并且firefox还有一个叫vimperator的扩展,可以把firefox改成vim那样的文本界面的样子,所有的按钮全部消失,鼠标也没用,你只能用vim里面的键盘指令来浏览网页。如果又觉得这很不可思议,或者说很脑残,那就又一次的错了~~所有这些舍弃都能换来浏览效率的大幅度提升。

    当然对于大多数人来说,vim和emacs的学习曲线太陡峭了。两者有个称号:vim是编辑器之神,emacs是神的编辑器。emacs的功能之多之复杂,我估计正常人恐怕一辈子都学不完。这两个编辑器之所以能经久不衰(比如emacs已经有近20年历史了,开发emacs的语言LISP,更是快有40年历史了。谁能想像一个基于40年前诞生的语言,20年前诞生的编辑器,至今居然还能work的这么好?)就是因为这些编辑器虽然很难学,但是他们的潜力是无限的,他们可以跟随你一起成长,成为你众多能力的一部分。超越时代的思想永远会有人传承,演化,繁衍下去,这就是大师级的作品的水准。反观VC之类的,这类只是一个工具,无论vc6时代如何辉煌,无论你MFC学的多么深入,迟早会被更好的工具,更好的框架取代而淘汰,这就是商业软件的宿命,执眼于表象,只会风光一时。

    恩,不过在这里发这样的帖子有点偏题。开源软件的质量,是由作者的能力决定的。交易方面的开源软件我以前也没有研究过,但是开源方面的高手,我觉得一般都不屑于去做这个事情(这个很正常,任何行业到顶尖之后,大都大巧不工。大师级的人物都是超凡脱俗的,赚钱这种事情,最讨厌了~~),所以现有的交易方面的开源软件,我猜测质量可能不会太好~

    最后,绕了这么一大圈,我其实只是想说,如果你想从事交易方面的开源软件开发的话,请记住,开源软件首先是一个人的作品,然后由你这个作品的水准来决定,是否能形成一个开源社区,并最终借助社区的力量发扬光大。我想强调的是,决定一切的是这个作品的源头,也就是设计这个作品的作者。那种先弄个东西,然后丢给社区让社区帮助去完善的想法,是注定会失败的。社区并不是决定性力量,你自己才是。
     
  7. 想想LINUS的开初写了个核心。。
     
  8. Lvsoft,

    和你一样,我也非常支持开源软件的发展,我现在用的也几乎都是开源软件,但我觉得开源软件存在一个严重的弱点,很多人也许意识到这点但没有充分讨论。这就是很多开源软件在用户界面的人性化设计上存在比较大的不足,这个不足的根源可能恰恰是其开源性。虽然我没有亲身参与过有组织的开源软件的开发,但我可以想象它是在众多高手的自由参与下拼织起来的,我不怀疑每一个高手的贡献都很有价值,但这么一个过程或流程和很多商业软件的开发比起来就显得缺少了一个重要环节:产品管理环节,或者说至少开源软件的产品管理环节很薄弱。很多参与过商业软件开发管理的人应该很清楚:商业软件不是由工程师设计的,而是在工程师的配合下主要由产品经理设计的。产品经理的贡献在这里就表现在产品外在的形象和功能上,这种外在的形象和功能的好坏决定了它是否比较人性化。当然,我绝不是说商业软件都很好,因为还有其它很多方面的因素会影响到它最终的好坏。希望开源软件能想法弥补这一重要环节。
     
  9. 你说的问题,关于商业软件与开源软件的开发模式区别与两者的优劣,在开源三剑客之一的Redmond写的书《大教堂与大集市》中,有详细的阐述。开源模式并不是没有能力做出贴近普通用户的、易用的产品,只是很多时候这样的产品是违背开源开发人员追求完美的精神的。

    举个例子:wine是个著名的在linux下能运行windows程序的模拟器。它有整整15年时间都处于alpha release状态,模拟效果一直时好时坏。为啥会如此呢?因为为了模拟windows,就需要模拟windows的API。而windows的API有许多bug,并且大量的windows软件为了适应这些BUG,作出了许多workaround(这种事情现在都是常有的,随便去找个做网页开发的同学问问,看看他们是否对IE6恨之入骨)。久而久之,BUG就变成了feature。而wine的开发人员,在自己做的模拟windows API中,拒绝做出与windows API一样的BUG实现。所以很长时间wine就是跑不好。类似的事情还有很多,比如mp3中文乱码问题,在linux中也是很常见的(在ipod中也有,在ps3中也一样),这一样是BUG最后变成了feature的结果。

    做开源软件开发的人不是受虐狂,也不是傻瓜笨蛋。大家都懂得道理,他们并不是不懂。只是对他们来说易用的方式,对普通人来说并不易用。相反对普通人易用的方式,对他们来说也并不易用。所以这个事情本来就不是他们应该做的,也不是他们能做好的。

    开源软件是个包罗万象的大箩筐,有高质量的也有很烂的,自然也有界面上设计的很好的。
    比如KDE,为了决定ok/cancal这个对话框,到底是ok这个按钮放在左边还是放在右边更人性化,组织了4000多人参与投票。比如ubuntu,为了推广linux,也在界面,易用性上下了很大的功夫。其实我个人是不太喜欢ubuntu的,但是我不否认它为推进linux做出的努力。

    最后,还想说点什么,但忽然意识到这里也不是技术论坛,所以这个问题多说也没用~~
    已经跑题了~~
     
  10. 我自己懂一点ruby,希望用ruby gtk+来实现,预计我将是这个软件的维护者,我可以支付一定的报酬,作为补偿您的时间成本,可以多给我邮件myocean135@yahoo.cn
     
  11. 我现在很希望有个开源的ruby语言的股票绘图程序,仅仅完成绘图功能,不知各位有何兴趣?
     
  12. 为何我不提用于交易的开源股软?
    1.我的投资理念
    我倾向于价值投资,价值投资理念的核心思想是:价值不是交易出来的,投资收益是基于估值之后的低买高卖行为。我厌恶频繁的买入卖出
    2.数据质量
    包括ib在内,经常有数据错误,因此,用软件进行自动交易的做法是风险大的投资行为。
     
  13. 我不怎么懂ruby,如果有时间的话倒是可以参与进来借这个机会用用ruby。但是偶现在没啥空闲时间,偶自己的平台开发工作都处于缓慢进行的状态~~
     
  14. 我觉得,做任何事情前首先要想清楚做这个事情的目的和意义。

    我不是很明白你做这个事情的目的和意义。你是准备做了自己用?还是纯贡献个半成品?还是想借助别人的力量帮你做一些你不擅长,或者不喜欢做的外围事情?

    所以我十分的不明白你所说的“仅仅完成绘图功能”是啥意思,因为单单考虑绘图的话,并没啥工作量。工作量大的部分是行情数据的接入,数据的组织,还有最重要的策略部分。

    比如我自己的目标,是基于python,用html5绘制,做期货的自动交易平台。我的平台是不开源的,最起码成功之前不会考虑开源,假如狗屎运好,能成功,那倒是会考虑有限的开源。彻底失败了有可能会考虑彻底的开源,但是一个失败的作品开源其实也没啥意思,与其拿出来丢人还不如扔掉算了...

    我目前就实现到数据绘制为止。最核心的交易策略问题要再等2、3个月之后,积攒了足够的tick数据才会开展。

    对于策略部分,我现在只是做好各种准备工作,比如HMM,最大熵,贝叶斯,SVM的算法实现,我都已经自己理解一遍之后重头写了一遍自己的版本。这样未来如果有需要,我可以很快拿出CUDA和并行计算的算法实现,来应对超大规模的计算量。

    然后就是各种潜水,试图从各路大仙透露的只言片语中去领悟大家的辛酸苦辣~然后就是扩大阅读面,了解各相关衍生行业,比如最近看到量子概率,我就觉得这个也很有意思,有一定的潜力运用在交易算法中,所以目前在啃...

    总之,我从一开始看这个thread,就隐隐感觉到一种矛盾。说的不好听一点,开源所提倡的共享精神跟做交易这一行是抵触的。这一行靠的就是武功秘籍,还是一旦广为人知就要失效的武功秘籍。因此想干这一行,要么有一个关系很密切,能力又互补的小利益团体,要么就是样样自己来。想借助开源解决一部分问题,又不能把问题彻底的说清楚,我认为这个出发点就错了。
     
  15. 我对投资理念没啥认知。但是,作为一个追求纯理性的人,我觉得在我眼里是不应该有喜恶的。万事万物,背后皆有其理。基于价值投资也好,基于波动投机也好,都是可能的方式。而且,价值也未必一定会得到体现,投机也未必就没有意义。水无常形,兵无常势,没有什么东西是一定说的准的。当然了,这么说也比较的无聊,说的都是对的,但是说的都是废话...

    至于数据质量,我认为差不多就可以了,没有必要去追求完美的数据。我希望我的系统能有很强的适应性,而不是一遇到错误的数据就措手不及。适应性和准确性两个互相对立的因素里面,我更看重适应能力,为此我宁可降低准确性。
    更何况,如同我相信万事万物都有其理一样,数据错误本身的背后也是有原因的,一样是可以用来挖掘的现象之一。比如我现在收集的数据,对每笔数据都会记录其延迟。这个延迟的现象,我认为一样有用来触发趋势的判断价值。