Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 特别移动平均线_Python_Pandas - Fatal编程技术网

Python 特别移动平均线

Python 特别移动平均线,python,pandas,Python,Pandas,我想预测价格变化的方向。 “价格”一词是指股票的中间价,它被定义为最佳出价和最低出价之间的平均值 t时的最佳要价: 这是价格的一个虚拟值,因为此时不可能发生订单 准确的价格,但预测其向上或向下的运动 提供对未来订单价格的良好估计。一套 离散选择必须从我们的数据中构造出来,以用作目标 对于我们的分类模型。简单地使用p(t)>p(t+k)来 确定中间价的方向将带来难以管理的后果 噪音量,因为最小的变化将被记录为 向上或向下运动 前k个中间价的平均值(用m_b表示)和下k个中间价的平均值(用m_a表

我想预测价格变化的方向。 “价格”一词是指股票的中间价,它被定义为最佳出价和最低出价之间的平均值 t时的最佳要价:

这是价格的一个虚拟值,因为此时不可能发生订单 准确的价格,但预测其向上或向下的运动 提供对未来订单价格的良好估计。一套 离散选择必须从我们的数据中构造出来,以用作目标 对于我们的分类模型。简单地使用p(t)>p(t+k)来 确定中间价的方向将带来难以管理的后果 噪音量,因为最小的变化将被记录为 向上或向下运动

前k个中间价的平均值(用m_b表示)和下k个中间价的平均值(用m_a表示)定义为:

以下是一个示例:

0        2015-03-31 09:30:00.233  2.4645
1        2015-03-31 09:30:00.233  2.4634
2        2015-03-31 09:34:44.116  2.5363
3        2015-03-31 09:34:44.116  2.5434
4        2015-03-31 09:36:38.535  2.5356
5        2015-03-31 09:36:38.535  2.5432
6        2015-03-31 09:36:38.537  2.5463
7        2015-03-31 09:36:38.537  2.5432
8        2015-03-31 09:45:10.512  2.5274
9        2015-03-31 09:45:10.512  2.5262
10       2015-03-31 09:45:10.523  2.5299
11       2015-03-31 09:45:10.529  2.5234
12       2015-03-31 09:45:10.531  2.5276
13       2015-03-31 09:45:10.568  2.5212
14       2015-03-31 09:45:10.569  2.5262
15       2015-03-31 09:45:10.635  2.5143
16       2015-03-31 09:45:10.684  2.5267
17       2015-03-31 09:45:10.686  2.5212
18       2015-03-31 10:00:02.111  2.5213
19       2015-03-31 10:00:02.111  2.5298
20       2015-03-31 10:00:02.112  2.5212
21       2015-03-31 10:00:02.381  2.5263
22       2015-03-31 10:00:02.472  2.5212
23       2015-03-31 10:00:02.486  2.5298
24       2015-03-31 10:00:02.524  2.5298
25       2015-03-31 10:00:04.026  2.5270
26       2015-03-31 10:06:54.546  2.5212
27       2015-03-31 10:06:54.558  2.5234
28       2015-03-31 10:06:54.558  2.5253
29       2015-03-31 10:06:54.566  2.5234
Aat在任何时候,我都想计算m_a和m_b,但我不知道如何用熊猫或numpy来计算。假设地平线k=5,我如何用python编写这两个特殊的移动平均线?因此,我需要两个函数,即
leftmovingaverage()
rightmovingaverage()
,并在价格列旁边显示两列,分别为
M_A
M_B

示例:

我们有1000个时间数据。设置k=600,那么你可以从k=590~600计算m_a,从k=601~610计算m_b。在下面的链接中,所有内容都得到了很好的解释:


对于两个求和,两个索引都从i=1开始,求和除以k+1,而不是k

我想确定一些事情。1.在
m_b(t)
的公式中,为什么k从0开始?除此之外,您还可以通过
k
潜水。因此,从技术上讲,您将添加
k+1
项并除以
k
。对吗?2.在您的示例中,如果k=600,如何从t=590计算
ma
?顺便说一下,在你的例子中,我认为应该是
t=590~600
,而不是
k=590~600
@ParagS.Chandakkar Loot,链接如下:。一切都好解释。
def moving_average(df, col_name='Price', k=3):
    ma_cols = []
    mb_cols = []
    temp_df = DataFrame()

    for i in range(0, k+1):
        ma_col = 'M_A_{}'.format(i)
        ma_cols.append(ma_col)
        mb_col = 'M_B_{}'.format(i)
        mb_cols.append(mb_col)
        temp_df[ma_col] = df[col_name].shift(i)
        temp_df[mb_col] = df[col_name].shift(-i)

    df['M_A'] = temp_df[ma_cols].mean(axis=1, skipna=True, numeric_only=True)
    df['M_B'] = temp_df[mb_cols].mean(axis=1, skipna=True)
    print (df)
    return df

moving_average(df)