BlogTrader Platform相关内容专帖

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

  1. BlogTrader Platform相关内容专帖
    开个专用新帖方便些,慢慢将相关内容转贴归类在这里。 8)
    官方网址:
    http://blogtrader.org/
     
  2. 支持

    大伙不妨先谈谈BlogTrader Platform对国内股软的影响和意义怎样?能带来一些革命性的东西吗?
    凭感觉如果其旗下能聚集10,100,1000。。。个股软开放源代码的爱好者,狂热者,5年后基本上没有其它股软的生存空间了。
    因为其开发平台NETBEAN也是一股新势力,此PLATFORM能跟着它一块成长就已经不可想象了。
     
  3. 目前我看法不会有大影响
    骨软国内早就有很多成熟产品了,绝大多数都是免费
    开不开源码对绝大数人没什么影响

    但是对于一些要求高的人士会有很大帮助

    比如飞虎,分析家现在很多不能实现的功能需要自己写DLL,但是毕竟也只是个接口,很多东西没办法处理

    有这个平台的话,一些资深人士可以把自己的想法尽可能的实现
    比如自己可以把神经网络,遗传的功能搞进来
     
  4. 有些紧要的功能急需增加:
    国内交易数据的引入;
    交易系统测试平台的建立;
     
  5. 什么神经网络等等都可以在分析家,飞狐上实现的,但是这些东西有用么?

    java的东西是很难代替飞狐,分析家的,因为用户体验太差!

    以前看过几个用。net开发的,也是中国人做的,还可以。
     
  6. 公式的写法进一步简化了。离加入用Javascript来自写公式只差一步之遥。

    把任一指标开放为函数的功能好像还在优化,所以源码中这一段虽然有但注释掉了。

    周、月线数据是根据日线自动生成的,这也就为今后加入组合任意周期打下了基础。

    生成买入/卖出信号的机制其实与写指标差不多,看了Zigzag的源码就知道已经快了。

    贴一段最新的RSI指标的Java写法,我加了注释,可以学学怎样加自己的指标:
    Code:
    public class RSIIndicator extends AbstractContIndicator {
        {
            _sname = "RSI"; // 指标短名称
            _lname = "Relative Strength Index"; // 指标长名称
            _grids = new Float[] {20f, 80f}; // 刻度
        }
        
        //定义参数
        P periodS = new P("Period Short",   6.0 ); 
        P periodM = new P("Period Mediaum", 12.0);
        P periodL = new P("Period Long",    24.0);
    
        // 定义变量和曲线-直线
        Var<Float> rsi1 = new Var("RSI1", Chart.LINE); 
        Var<Float> rsi2 = new Var("RSI2", Chart.LINE);
        Var<Float> rsi3 = new Var("RSI3", Chart.LINE);
    
        //定义中间变量,不画线
        Var<Float> up = new Var(); 
        Var<Float> dn = new Var();
        
        // 可以从任一处开始计算,避免每次重头算,对动态更新的性能有很大帮助。
        protected void computeCont(int fromIdx) { 
            for (int i = fromIdx; i < _dataSize; i++) {
                
                float change = C.get(i) - C.get(i - 1);
                if (change > 0) {
                    up.set(i, change);
                    dn.set(i, 0f);
                } else {
                    up.set(i, 0f);
                    dn.set(i, -change);
                }
                
                float sum_u1 = sum(i, up, periodS.value());
                float sum_d1 = sum(i, dn, periodS.value());
                float sum_u2 = sum(i, up, periodM.value());
                float sum_d2 = sum(i, dn, periodM.value());
                float sum_u3 = sum(i, up, periodL.value());
                float sum_d3 = sum(i, dn, periodL.value());
                
                rsi1.set(i, (sum_u1 + sum_d1 == 0) ? 0 : sum_u1 / (sum_u1 + sum_d1) * 100f);
                rsi2.set(i, (sum_u2 + sum_d2 == 0) ? 0 : sum_u2 / (sum_u2 + sum_d2) * 100f);
                rsi3.set(i, (sum_u3 + sum_d3 == 0) ? 0 : sum_u3 / (sum_u3 + sum_d3) * 100f);
            }
        }
        
    }
    
     
  7. blogtrader.net搬了新家,原先放在一个公共网站上,国内访问不到。

    http://blogtrader.net

    去那里看看可以知道作者最新的想法,还可以直接和他交流。对了,那里有他的星象模块的截屏。
     
  8. Version 1.0.2 build 2052.

    这个版本修订了一些小bug。如果你遇到打开窗口时只看到日线。周线、月线图不出来的情况,可以去下载这个版本。这个bug跟JDK中的一个bug有关。
     
  9. 昨天作者在他的Blog上讲了一下他对BlogTrader Platform在选择自定义指标语言上的想法:
    http://blogtrader.net/page/dcaoyuan?entry=programming_language_for_custom_indicator

    他先用Javascript写MA指标:
    Code:
    this._sname = "MA";
    this._lname = "Moving Average";
    this._overlapping = true;
        
    var period1 = new P("Period 1", 5.0 );
    var period2 = new P("Period 2", 10.0);
    var period3 = new P("Period 3", 20.0);
        
    var ma1 = new Var("ma1", Chart.LINE);
    var ma2 = new Var("ma2", Chart.LINE);
    var ma3 = new Var("ma3", Chart.LINE);
        
    function computeCont(int fromIdx) {
        for (int i = fromIdx; i < this._dataSize; i++) {
                
            ma1.set(i, ma(i, C, period1.value()));
            ma2.set(i, ma(i, C, period2.value()));
            ma3.set(i, ma(i, C, period3.value()));
        }
    }
    
    然后比较一下Java的版本:
    Code:
    public class MAIndicator extends AbstractContIndicator {
        {   
            _sname = "MA";
            _lname = "Moving Average";
            _overlapping = true;
        }
        
        P period1 = new P("Period 1", 5.0 );
        P period2 = new P("Period 2", 10.0);
        P period3 = new P("Period 3", 20.0);
        
        Var ma1 = new Var("ma1", Chart.LINE);
        Var ma2 = new Var("ma2", Chart.LINE);
        Var ma3 = new Var("ma3", Chart.LINE);
        
        void computeCont(int fromIdx) {
            for (int i = fromIdx; i < _dataSize; i++) {
                
                ma1.set(i, ma(i, C, period1.value()));
                ma2.set(i, ma(i, C, period2.value()));
                ma3.set(i, ma(i, C, period3.value()));
            }
        }
        
    }
    
    可以看到两者的区别并不大。所以作者说:
    想想WLD的自定义功能是用Pascal,难度和Java差不多。如果BlogTrader下一个版本就提供上述功能,那么倚仗NetBeans平台(代码编辑和调试、重构等功能是现存的),BlogTrader有可能在短时期内就成为WLD的强大竞争对手。何况BlogTrader是免费和开源的。开源世界一旦联手就会产生这样的效果。

    当然,BlogTrader还任重道远,它还需要实现系统测试、系统交易等功能,但它已经有了不逊色于商业软件的图线功能,在性能上也是相当不错的。一个人单枪匹马写了半年多,就达到这样的地步,兄弟给上几分敬意和鼓励。
     
  10. 看来是我们自己没很好地理解作者的东西,用老思路去乱套真正想要但却已经有了的了。
     
  11. 追随开源的最初也是终极的目的就是自由的表达和描述交易思想,开发工具中强大的表达能力不正是公式编辑器难望其项的吗?
     
  12. 作者的blog上贴出了自定义指标功能的截屏,而且提到下个版本的时间大约是五月中。

    从截屏上可以看到写指标时的函数提示、代码自动完成等功能。
     
  13. 有关交易软件的一点感想

    本人重是编程工作5年,交易两年,现在的交易软件大多都大同小异,本人想结合
    专家系统,提供给用户个性化服务的软件,通过记录,分析用户的行为,给用户提供他最需要的东西,如果有愿意,在这个平台基础上进一步开发的,请联系我qq32167705,请注明证券软件开发
     
  14. JAVA与模式

    最近购得此书正不紧不慢读着希望3与5年后的一天能突然觉得明白了JAVA和此开源的交易平台
    此书认为
    模式理论是试图揭示 人类大脑与宇宙相互作用的永恒之道
    而此书的作者又是希望通过模式理论的讲解告诉读者JAVA API背后的设计原则
     
  15. 有一个印尼人也在这个平台的基础上加进了自动下单功能在印尼分发呢。
     
  16. 谢谢楼上诸位的介绍!