股票池怎么排序?

梅姓名梅姓名最佳答案最佳答案

在策略的编程中,我们通常需要使用数组来管理我们定义的交易信号,这些信号可能来自于不同的指标或者计算,我们需要将它们逐个输入到我们的策略当中,并排序他们出现的顺序,以此作为判断依据。 那么如何高效的维护一个信号的数组呢? 首先我们要知道,在一个合理的交易系统中,其组成部分是简单且可拆解的。

以趋势跟踪系统为例,通常由趋势判断、入场点和出场点构成,而入场点和出场点是又可由更细化的标准组成,如下: 当一个系统被拆解后,我们就可以对每个部分单独设计,从而做到方便可行。 以上图为例,我们将系统的构成分别标记为A、B和C,那么每个部分的信号就可以有一个对应的下标 i 来计算其数值(注意此时不进行加权处理),得到一组新的数字:

通过这样简单的拆解,我们可以把原本复杂的信号问题,转换成了简单的数字计算,然后我们按照这个新算法的计算结果排个序,即可完成我们对信号的评估工作。

然而,这里的问题在于,当我们的交易体系变得更为复杂时,比如加入了更多的参数,或者需要对信号做加权处理,原有的方法就变得不再适用了,这个问题该如何解决呢? 一个比较巧妙的方法是使用堆排序,这是一种选择算法,它允许我们对数据进行加权以及多关键词查询。

假设现在我们需要对一组数据做加权处理,那么加权的思路是可以直接引入到我们之前的计算公式中的,比如在求和之前先乘以相应的权重系数,具体的公式可以根据实际的参数设定而定。 接下来我们就要考虑关键词检索的问题了,对于股票交易而言,常用的关键词有涨和跌,那么我们只需构建两个字符串数组分别存储对应的股票代码和对应的键值就可以了。

有了上述的准备之后,现在我们可以开始输入我们的数据了,也就是将待排序的字符串逐个插入到对应的数组当中。

当全部的数据都插入完成后,我们就可以启动排序了,在这里我们可以使用堆排序的快速版本,原理上是将所有元素都构建成二叉搜索树,然后再从树中获取最大(小)的元素,时间复杂度是O(n*log(n)),比冒泡排序要快很多! 以上就是我对“如何高效地维护一个信号的数组”的回答。

杨建刚杨建刚优质答主

我们不可能事先知道所有的股票会涨,所以股票池的建立是一个动态的过程;其次,对于选股来说,“选股”和“选时”同样重要,甚至更重要(因为市场总是在变化的)——也就是说,我们在选择个股的时候同时要考虑买入的时间、时机问题(即买进的价格) 因此我的个人经验是,在构建自己的交易系统之初,可以不必把每个指标都列出来一一测试。应该先确立一个大概的交易原则,然后找几个合适的例子加以证明并验证一下,进而总结出一般性规律和结论来。

举个例子,假设你的目标是找到一只上涨空间大的股票,那么就要看看哪些股票符合这个条件(满足条件越多越好)然后再通过其他的一些方法进行验证就行了……. 事实上,我们的很多技术分析工具都是建立在这样“试错”的基础上形成的而不是凭空而来的!

我来回答
请发表正能量的言论,文明评论!