如何在C#当中实现同花顺,大智慧哪种相同的公式写法

下面的是一个MACD的公式 

DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA  : EMA(DIFF,M);

MACD : 2*(DIFF-DEA), COLORSTICK;

 

它的变量是可以直接进行加减*除的,但是我们要知道,它里面的Close这个东西实际上也是一个数组类型的。同过总结分析我们可以知道。我们在C#当中可以使用操作符重载来实现数组的相加相减,或者运算。但是数组这个东西是系统自带的类型,我们是没有办法对它再进行操作符的重载,所以我们自己需要构造成一个类型出来。

在千发股票自动交易软件里面,我创造了一个类型是 FloatList类型,

  public  class FloatList : List< float
    {
         public FloatList()
        { }

         public FloatList( int length): base(length)
        {}

         public FloatList(IEnumerable< float> input)
            :  base(input)
        { }

         public  static FloatList  operator +(FloatList input, float m)
        {
            FloatList list =  new FloatList();
             for( int i= 0;i<input.Count;i++)
            {
                list.Add(input[i] + m);
            }
             return list;
        }


      ...其它的省略
    }

因为股票里面的数据实际上就是Float类型了。

 

这样你就可以对它进行操作符的重载了。 

再接下来你要实现的是一个种全局函数,实现的方式是通过父类来实现的。如果在是脚本语言的话,还可以用其它的方式。

这样的话你只要让你的类去继承BaseFunctions类就可以实现了。

看我们的一个例子

public  class MACDHelper:BaseFunctions
    {
         ///   <summary>
        
///  DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
        
///  DEA  : EMA(DIFF,M);
        
///  MACD : 2*(DIFF-DEA), COLORSTICK;
        
///   </summary>
        
///   <param name="list"></param>
        
///   <param name="?"></param>
        
///   <returns></returns>
         public  MacdInfo Calculate(List<StockLog> list, int l, int s, int m)
        {
             this.StockLogs = list;
             var diff = EMA(CLOSE,s) - EMA(CLOSE,l);
             var dea = EMA(diff,m);
             var macd =  (diff - dea) * 2;

          
            MacdInfo info =  new MacdInfo();
            info.DEA = dea;
            info.Diff = diff;
            info.MACD = macd;

             return info;
        }

    }

 

如果这个东西有启发到你,充话费的时候到我们店来充一下 http://lanhaifeng.taobao.com/ 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值