• C#,数据类型扩展 z


    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;
            }
    复制代码

        }

  • 相关阅读:
    graphite custom functions
    falcon适配ldap密码同步
    dell 远程管理卡的使用racadm
    mac 入门
    使用 kafkat 在线扩缩容 kafka replicas
    python收集jvm数据
    kafka java.rmi.server.ExportException: Port already in use
    centos6安装最新syslog-ng推送hdfs
    从 falcon api 中获取数据
    fluentd 推送 mariadb audit log
  • 原文地址:https://www.cnblogs.com/zeroone/p/6539635.html
Copyright © 2020-2023  润新知