如何移植行情软件的指标到千发股票自动交易软件?

可以把传统行情软件的指标移过来吗?
可以的,并且搬到这边来也是一件很容易的事情,我们的股票自动交易软件已经有提供了一些基础的函数。

到目前为止我们股票自动交易软件提供的函数有

  1. MA平均
  2. EMA滑动平均
  3. WMA加权平均
  4. SMA移动平均
  5. HHV某周期内最高价
  6. LLV某周期最低价
  7. CROSS穿越。

像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());
        }
    }
这样我们就完成了一个 macd的指标了,如果把这个指标变成可交易策略。在后续的帮助里会继续介绍到。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值