行情指标

EMA它的定义是 Y=[2*X+(N-1)*Y‘]/(N+1) Y‘是上一个周期的计算值。这样的函数是一个递归函数,不断的调用前一个周期的值来参加计算的。我们为了加快计算的速度,没有采用递归的方式。

实现的EMA是这样的
public static List<float> EMA(this List<float> input,int n)
        {
            float[] list = new float[input.Count];
            list[0] = input[0];

float x;
            float y;
            float yLast;
            for (int i = 1;i < input.Count;i++)
            {
                yLast = list[i - 1];
                x = input[i];

y = (x * 2 + (n - 1) * yLast) / (n + 1);
                list[i] = y;
            }
            return list.ToList();
        }

我们直接根据原来的值返回一个有同样位数的返回值。这样软件同样可以非常方便的去判断。最后期的一个值是不是满足条件了。

现在来看一下如何写一个MACD的函数

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

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

上面的是Macd在大智慧中的函数。

先定义了一个MacdInfo的类

public class MacdInfo
    {
        public List<float> Diff
        { get; set; }

public List<float> DEA
        { get; set; }

public List<float> MACD
        { get; set; }
    }
Diff DEA MACD上面的三个我们都有定义了。

public class MACD
    {
        /// <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 s,int l,int m)
        {
            var closeList = list.Select(it => it.Close).ToList();//先得到所有的Close的值
            var shortList = closeList.EMA(s);//算出短期的滑动平均
            var longList = closeList.EMA(l);//算出长期的滑动平均
            List<float> diff = new List<float>();
            for (int i = 0;i < shortList.Count;i++)//使用循环的方法算出每一个周期的diff
            {
                diff.Add(shortList[i] - longList[i]);
            }
            var dea = diff.EMA(m);//跟据diff算出dea
            List<float> macd = new List<float>();
            for (int i = 0;i < diff.Count;i++)//算出macd
            {
                macd.Add(2 * (diff[i] - dea[i]));
            }
            MacdInfo info = new MacdInfo();
            info.DEA = dea;
            info.Diff = diff;
            info.MACD = macd;
            return info;
        }
    }
///StockLog是我们的股票K线记录类
 public class StockLog
    {
        public string StockCode
        { get; set; }
        public DateTime Date
        { get; set; }
        public float Open
        { get; set; }
        public float Low
        { get; set; }
        public float Close
        { get; set; }
        public float High
        { get; set; }
        ///新浪不支持啊
        //public decimal Amount
        //{ get; set; }
        public float Volume
        { get; set; }

        public StockLog Clone()
        {
            return this.MemberwiseClone() as StockLog;
        }
        public string ToChartTip()
        {
            return string.Format("高:{0}\r\n低:{1}\r\n开:{2}\r\n收:{3}\r\n日期:{4}", High.ToString("f3"), Low.ToString("f3"), Open.ToString("f3"), Close.ToString("f3"),Date.ToShortDateString());
        }
    }
时间: 2024-12-07 08:51:17

行情指标的相关文章

甘雅思:弱势无反抽,黄金沥青开空看回落(5.10)

行情回顾: 昨日(5.9)周一,黄金未能延续非农拉升行情,亚盘在给出1288高位后即展开弱势下跌.一路跌破1274多空分界点,奠定日内空头基调.欧美盘时段由于美元的反弹攀升,黄金一度弱势跌穿1270从而打开下行空间,最低给到了1261的位置后,行情受到支撑小幅整理,日线最终收在了1263.5的位置.目前来看短期内多头弱势,短线相对空一些.沥青方面,早盘高开却并未高走,冲击4450关口未果后承压回落,盘中一路下行,最低给到了2140的位置后,将上周五反弹空间近乎吐尽,尾盘回撤4179低点,日线收取

规模指数介绍,如何使用Python获取数据

接触投资的人,都会或多或少地听到:中证100.中证200.沪深300.中证500.中证700.中证800.中证1000这些金融简称--但其实,很多人并不知道这些都代表什么?对自己的交易有什么意义? 中证100也好,中证700也罢,其实这些都是中证指数编制反映市场的规模指数.那么,这些指数具体代表什么股票的市场表现呢? 首先,我们必须先明白中证100,沪深300(中证300),以及中证800这三个关键指标: 中证100,沪深市场市值前100大的股票(比如四大行.两桶油): 沪深300,沪深市场市值

MT4平台上mql4实现的基于macd指标的智能交易EA

MT4平台上mql4实现的基于macd指标的智能交易EA 屌丝命苦,拼爹拼不过,拼后台没有,技术宅一枚,情商有问题,不会见人说人话见鬼说鬼话,所以在国庆熬着混着,工作也没啥大起色,想想就郁闷,难不成一辈子就只能这样了? 苦思冥想,想得一条路,那就是程序化交易--现在程序化交易正有越来越火的趋势,国外已经程序化了很久,国内各大交易所也正在半掩半遮的开展,卷商.私人公司陆陆续续都在开展,心水啊,想着先研究研究,熟了之后也是碗饭啊,不行就靠着给人写策略也能吃口饭不至于饿死吧,想想还有点小鸡冻啊. 说干

短线技术MACD指标图解

1.通常DIF上穿0轴线的当天是中长线难得第一次买入的好时机,会引起场外资金的关注,如果上穿后MACD没有调头的迹象,则股价回调到5日均线附近为买入的好时机,必要时参考其他指标追涨.在0轴线以上形成2次金叉一般说明当前行情已经有段时间的上涨,股价不是太低,此时出现金叉要注意卖出因为金叉后上涨维持时间不会太长,很短时间内可能被死叉替补了. 2.在低位0轴线以下形成2次金叉一般是股价上涨的开始.普通金叉一次只能带来短期反弹行情,这是因为低位第一次金叉后由于空头反扑,会出现在此死叉,只有第二次三次金叉

MACD指标

MACD(Moving Average Convergence)平滑异同移动平均线 MACD指标有双移动平均线发展而来,由快速移动平均线减去慢速移动平均线,当MACD从负数转向证书,是买入信号,从正数转向负数,是卖出信号.当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的距离非常迅速的来开,这代表一个市场的大趋势. 一般来说,快速移动平均线选择12日,慢速移动平均线选择26日, 12日EMA=前一日EMA12*11/13+今日收盘*2/13 26日EMA=前一日EMA26*25/27+

股票 W&amp;R威廉指标形态图解

一.用途 该指标表示的涵义是当天的收盘价在过去一段日子的全部价格范围内所处的相对位置,是一种兼具超买超卖和强弱分界的指标.它主要的作用在于辅助其他指标确认讯号. 二.使用方法 1. 从WR的绝对取值方面考虑. A.当WR 高于80,即处于超卖状态,行情即将见底,应当考虑买进. B.当WR 低于20,即处于超买状态,行情即将见顶,应当考虑卖出. C.WMS%R=50是多空平衡线,上穿或跌破此线,是稳健投资者的买卖信号. 2. 从WR的曲线形状考虑. A.在WR进入高位后,一般要回头,如果这时股价还

股票各指标简介

原文地址:股票各指标简介作者:桃乐丝 1.  BDZX波段之星指令的操作明确. PAV   筹码引力 1.PAV上轨(GV)和下轨(CV)分别在0至100和-100至0区间内震动: 2.PAV-DIFF在高位大幅震荡表明主力建仓吸筹: 3.PAV-DIFF在低位持恒表明主力震仓洗盘: 4.PAV-DIFF由低位启动表明大行情发动的开始: 5.PAV-DIFF带量回落表明行情结束. NVI 负成交量 1.观察NVI 时,必须先设定一条平均线才能研判: 2.NVI 主要是追踪大户资金流向的指标: 3

股市最有价值的指标是-----地量

但凡走入股市的投资者,都或多或少地研究过各种技术指标.然而,在实战之中,常常是一些指标刚发出买入信号,另一些指标却又提示你卖出.凡此种种,常常令人困惑不解,有人甚至提出了“技术指标无用论”的观点.那么,在众多技术指标中,有没有一种绝无欺骗性的.最有价值的指标呢? 答案是肯定的,那就是:地量! 什么叫地量呢?依据笔者的看法,地量就是成交极度清淡,日换手率小于1%的成交量.那么地量在什么时候出现,地量出现意味着什么,又有什么价值呢? 一.地量在大盘行情清淡时出现得最多 此时人气涣散,交投不活跃,股价

股票 KDJ指标形态图解

KDJ指标又叫随机指标 原理:就是用目前股价在近阶段股价分布中的相对位置来预测可能发生的趋势反转.它主要是利用价格波动的真实波幅来反映价格走势的强弱和超买超卖现象,在价格尚未上升或下降之前发出买卖信号的一种技术工具.它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 第一:低位金叉.高位死叉 老生常谈,但却不得不谈.作为一个超买超卖指标,当然研讨的就是股价的高低位,因而高位与低位的金叉死叉才更有价值.研究一个指标,一定要从以下几个方面来看:高位.