【问题标题】:Special Moving Average特殊移动平均线
【发布时间】:2018-04-24 14:47:24
【问题描述】:

我想预测价格变化的方向。 价格一词用于指股票的中间价,其定义为最佳买入价与最佳买入价之间的平均值。 时间 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

A 在任何时候,我都想计算 m_a 和 m_b,但我不知道如何用 pandas 或 numpy 来计算。假设地平线 k=5,我如何用 python 编写这两个特殊的移动平均线?所以我需要两个函数,即leftmovingaverage()rightmovingaverage(),并在价格列旁边显示两列名称为M_AM_B

示例:

图像我们有 1000 个时间数据。并设置 k = 600,然后您可以从 k=590~600 计算 m_a,从 k = 601~610 计算 m_b。一切都在以下链接中得到了很好的解释:http://poseidon.csd.auth.gr/papers/PUBLISHED/CONFERENCE/pdf/2017/2017_CBI_CNNLOB.pdf

【问题讨论】:

  • 我想确认一些事情。 1、m_b(t)的公式中,为什么k是从0开始的?最重要的是,您正在通过k 潜水。因此,从技术上讲,您将添加 k+1 术语并除以 k。那是对的吗? 2. 在您的示例中,如果 k = 600,您如何从 t = 590 计算 m_a?顺便说一句,在您的示例中,我认为应该是 t = 590 ~ 600 而不是 k = 590 ~ 600
  • @ParagS.Chandakkar Loot 在以下链接:l.facebook.com/…。一切都很好解释。

标签: python pandas


【解决方案1】:
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)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2013-12-22
    • 1970-01-01
    • 2022-01-26
    • 2011-06-29
    • 2019-04-24
    • 2012-05-24
    • 2021-01-18
    相关资源
    最近更新 更多