BlogTrader Platform相关内容专帖

Discussion in 'General Topics on Software and Data' started by wj2000, Mar 27, 2006.

  1. 真正的问题
    1 如何解决实时情况下的性能、速度有难度
    2 对每个可能被不同指标同时调用的函数则难度很大
    问题2是指公共函数如四价两量之类的吗
    因为没有涉及到细节所以不能更深切地体会
     
  2. 从公开的言论看 R兄是离BT最近的人了 恭喜
    如果这些大山是R兄必须要面对如同BT的创始人一样 请问R兄会如何解决它们呢
    R兄将思考的过程写出来不仅给了我们知识更能使我们今后可能象R兄一样实时地欣赏到BT的精妙所在
     
  3. 从此看似乎对

    如何解决实时情况下的性能、速度有难度

    已有可行方案只是何为最优的问题了
     
  4. 我对骨软领域比较熟,所以对BT一直很关注。其实刚开始BT注重的是快速开发出功能,从1.0版本才开始清理代码,做了大量重构。如果刚进入一个新的领域,这样的开发模式是挺好的:先熟悉情况,再深入。

    之乎兄曾担刚过数个大型软件项目的首席架构师,重构起来毫不留情,想到好的方案甚至可以将大量的代码全部重来。当然是在保证质量和效率的情况下。

    最新消息:
    已改为GPL许可方式。在Blog上他认为已经基本解决函数的计算效率问题(只计算更新的那部分)。俺这就去取最新的代码下来看看。
     
  5. 解决的办法是:

    就是说,每个函数的调用都要保存好中间状态。而调用它的指标知道该从哪个时间点重算,然后会调用相关的函数都从那一刻重算。

    在TA-LIB的论坛上讨论这个问题时,他们认为那样会让问题变得很复杂,所以想不出什么好的方案。初看了一下BT的方案,用OO解决的,性能不错。
    [/quote][/code]
     
  6. 这个解释不完整。GPL允许在此基础上改写、增加的代码不开放,前提是限于个人或组织内部使用。
     
  7. R兄能否向之乎兄进言让他将BT在系统交易方面的方案先公布出来
     
  8. 项目开发往往会出现这样的情况,项目越大失败的可能越大,而且往往会出现项目的总目标“失败”了,但项目下面的一些“子项目”却“意外”的“成功”!
    如果可能最好将项目分解成几个“子项目”来进行:
    1、基本控制操作平台:资金股票账户管理、各种指标和交易函数、Paper测试功能、完整的测试报告等都作为类似“插件”的形式被分别实现。
    2、核心数据库(本地的,也有可能可以和第3个实现通用):类似Global Server,可能以支持类似SQL为好,这样可以利用强大的SQL功能。也可以使用其他现在已有的产品来实现。
    3、数据源的接口和行情服务器:这个也可以考虑和第2个核心数据库统一
     
  9. W兄设想的交易平台大框架的部分功能有些已实现有些正在实现之中
    如第二点 在BT中已有
    [Apr 10, 2006] Bundled database engine was changed to Java DB (ie. Apache Derby DB).
    不知这个DB能满足W兄对交易平台数据库的需求吗
    也许此DB现在还不能与SQL相比美 相信SUN公司定会有满意的答卷
     
  10. WJ所言极是。BT的设计好就好在是插件式的。目前的版本中,是按以下模块划分的:
    1、核心模块(又分为:曲线包、曲线画板包、函数包、指标包等);
    2、基本指标模块;
    3、数据源模块。
    4、各种数据库支持(目前有JavaDB,HSQLDB)
     
  11. 目前已经拆出来的技术分析函数有:
    float ma(int idx, Var var, Opt period)
    float ema(int idx, Var var, Opt period)
    float stdDev(int idx, Var var, Opt period)
    float tr(int idx)
    float dmPlus(int idx)
    float dmMinus(int idx)
    float diPlus(int idx, Opt period)
    float diMinus(int idx, Opt period)
    float dx(int idx, Opt period)
    float adx(int idx, Opt periodDi, Opt periodAdx)
    float adxr(int idx, Opt periodDi, Opt periodAdx)
    float bollUpper(int idx, Var var, Opt period, Opt alpha)
    float bollLower(int idx, Var var, Opt period, Opt alpha)
    float cci(int idx, Opt period, Opt alpha)
    float mfi(int idx, Opt period)
    float obv(int idx)
    float sar(int idx, Opt initial, Opt step, Opt maximum)
    float stochK(int idx, Opt period, Opt periodK)
    float stochD(int idx, Opt period, Opt periodK, Opt periodD)
    float stochJ(int idx, Opt period, Opt periodK, Opt periodD)
    float[][] probMass(int idx, Var var, Opt period, Opt nInterval)
    float[][] probMass(int idx, Var var, Var weight, Opt period, Opt nInterval)
    相应的指标已经在这些函数基础上重写,而且这些函数可以重叠调用但巧妙的函数设计使得不会有冗余计算。
     
  12. 最好有些模块能独立使用,这样不会因为整个项目“挫折”而全部夭折
    我的概念好象和你的理解不一样,核心数据库并不是指对各种数据库支持,而是实现类似Global Server那样可以独立出来使用的通用部分,提供双向处理的接口的可以了,至于它用什么数据库技术实现无所谓的(只要能被数据库工具支持就行了)。现在大部分的软件(包括开源的)都是自己另开发一个“核心数据库”,“浪费”很严重啊 8)
     
  13. 这里要谈到“SAR”(float sar(int idx, Opt initial, Opt step, Opt maximum))指标函数问题了,几乎所有的软件中都只有这个“简单抛物线SAR”,而实际上“SAR”是一族指标,而“简单抛物线SAR”是最没有“价值”的一个(个人观点) :oops:
    我需要的“万能” 8) “SAR”是这样的一个指标函数:
    float sar(。。。,上行控制变量,上行变量比例,下行控制变量,下行变量比例,。。。);
    所以区分上行、下行是考虑到多(LONG、Upper)、空(SHORT、Lower)的非对称性的可能。其中上行、下行控制变量可以“引用”任何其他指数指标(函数),其反转点是指最近范围里的最高、最低价+-控制变量*比例的值不增加而被突破。
    和“简单抛物线SAR”的差别就是将控制变量*比例得到的值取代了由int idx, Opt initial, Opt step, Opt maximum产生控制值。
     
  14. 这样的讨论好!

    像WJ兄的这个例子,有两种解决方案:
    一种是自定义SAR指标;

    另一种是利用已有的指标,比如:
    float sarLong = sar(idx, initialLong, stepLong, maximumLong);
    float sarShort = sar(idx, initialShort, stepShort, maximumShort);

    其中的参数(Opt)可以通过类似:
    initialLong.setValue(function(idx, .....))来实现。

    不过,我会建议BT干脆实现四种sar函数:
    sar(int idx, Opt initial, Opt step, Opt maximum)
    sar(int idx, Opt initialLong, Opt stepLong, Opt maximumLong, opt initialShort, Opt stepShort, Opt maxumumShort)
    sarLong(int idx, Opt initial, Opt step, Opt maximum)
    sarShort(int idx, Opt initial, Opt step, Opt maximum)

    看WJ兄还有什么补充,待讨论充分,即提交给BT?
     
  15. W兄与R兄的讨论很热烈也很专业 令人羡摹 一时半会还插不进来 因此只好站在门外想一些关于BT的问题了

    1 BT定位于开源的交易平台 也即要象WINDOW一样提供所有的基础服务 大致应包括
    -----编程工具提供的服务功能
    -----通过编程工具再造的服务于交易特殊领域的API或类或插件
    2 BT是否需要接口的问题
    -----是否需要有类似DLL或COM的接口建立与其它流行股软的关系
    ------为BT上的某些专有插件提供连接
    3 W兄提出的万能SAR函数问题应是对BT开源项目的挑战也是BT的机遇
    由W兄对万能SAR的描述可知W兄已沉于此问题多时而且现有股软的公式编辑器甚至这些股软所带的DLL或COM接口因为使用上的不便都不能解决万能SAR在实现上的问题 BT能够解决而且由此也提出了今后BT成长的模式
    ---由开发工具开发出各类能形成算法的交易思想
    ---从开发的过程中尽量抽象出相对公共的东西形成BT的API或类或插件
    4 被D兄绑进BT的database engine 应具有W兄要求的核心数据库功能
     
  16. 关于SAR有2点补充:
    1、反转转折点的确认是以最高、最低价穿越而不是通常的收盘价穿越,因为收盘价穿越会产生信号反复的问题(有使用未来数据的嫌疑)!而使用最高、最低价穿越为条件将使信号一旦产生就不会“反复”,但使用“最高、最低价”穿越在写软件时可能会困难些。
    2、除了第1个“标准简单抛物线SAR”外,个人认为都不需要那个初试、步进和最大值(Opt initial, Opt step, Opt maximum)的,可能是没理解我的意思(我表达能力不行),可能举个例子容易理解些。
    举例:
    float sar(。。。,上行控制变量,上行变量比例,下行控制变量,下行变量比例,。。。);
    假定以布林线20日的带宽BW为上行、下行控制变量,上行、下行变量比例都设定为1,在上涨过程中,将新的最高价减去BW*1得到一个SAR控制点,这个SAR控制点会随着新的最高价及BW的变化而不断上移(在上升过程中SAR控制点的值只增加,如果新的SAR控制点值不增加就取前面的已有的最高SAR值),直到出现最低价穿越SAR控制点导致发生反转转折为止。
    反之,在下跌过程中,将新的最低价加上BW*1得到一个SAR控制点,这个SAR控制点会随着新的最低价及BW的变化而不断下移(在下降过程中SAR控制点的值只减少,如果新的SAR控制点值不减少就取前面的已有的最低SAR值),直到出现最高价穿越SAR控制点导致发生反转转折为止。

    从某种程度上说这个“万用”SAR也可以算一个“通用”(只要引用不同的控制变量)持续买卖信号系统!
     
  17. 在谈谈以前说道过的“频数图”问题,我简单看了BT上的实现,好象和分析家等的筹码分布图类似,不是我最初“设想”(要)的那种!需要的是真正的“频数图”,可以定义频数尺度间隔,同时可以标出具体的数值,而不是一个筹码图形,图形好看没实用价值的。我要的“频数图”是个通用的,单独一个界面窗口,可以对任何得到的指标值进行处理。
    举个例子容易理解些。
    举例:
    比如用今日的收盘价减去60日前的收盘价,循环下去就是一组持有期为60日的收益数值,对这组数据得到一个“频数图”就可以得到一个“收益分布”,这个也是经济学里那个用的很多的关于资产投资配置相关一个工具。

    其他的个人认为和“江恩”(江恩因为当时的计算条件的限制,还只是固定变量,而现在可以、可能实现统计、动态的变量了)有关的以后再谈
     
  18. 目前BT的频数函数可以定义:权重和间隔数,返回的是一个二维数组(第一维是各组间隔的起始值,第二维是相应的频数),可以应用到任何一个变量上,离WJ兄的设想还差一个单独的显示区。

    简单介绍一下BT的时间序列设计:
    首先,DefaultSeries是一个时间序列的实现,一个DefaultSeries包含一个时间戳数列phisicalTimes和若干个变量(DefaultVar)。
    同时还可以有一个主导时间序列DefaultMasterSeries,里面包含了自然日的时间戳。
    变量DefaultVar也可以单独看成一个值的List,可以用索引idx来读取。

    这样在函数的参数中见到Var时,都可以用一个DefaultVar(就是一个List)代入。

    详细的介绍待这个版本稳定后再结合例子来介绍
     
  19. 摆一个擂台

    W兄R兄两位的讨论非常地有意义 看着看着不由萌生一想法 两位看看行得通吗

    请W兄好好思索一翻重开一贴 提一个有相当难度复杂度且有趣味的问题 让各路股软和论坛的高手前来攻擂 看看谁最能用现有股软提供的手段将问题解决得最好

    请R兄代表海洋BT参赛 R兄的确是离海洋BT最近的人了 我们都会支持你的

    也请海洋的会员及来海洋看到此贴的朋友通过各自的渠道将W兄提的问题告示天下
     
  20. 请问W兄
    1 有关于万能SAR族指标的资料介绍吗
    2 这种万能SAR在现有股软如FXJ OR FH上能用现有的函数实现吗
    3 是否作过用FH的VbScript 进行实现的尝试
    4 是否作过用各股软提供的DLL或COM进行实现的尝试