Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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_Dataframe_Matplotlib_Ta Lib - Fatal编程技术网

Python 其中,使用熊猫计算的价格指标应为';放置';?

Python 其中,使用熊猫计算的价格指标应为';放置';?,python,pandas,dataframe,matplotlib,ta-lib,Python,Pandas,Dataframe,Matplotlib,Ta Lib,首先,感谢你对像我这样的新人的爱 现在是代码 我有一个看似简单的代码,是有人写来计算移动平均价格的,但要理解它并遵循它,我有一个问题需要回答,关于where的定义 但说到3,我不明白。什么意思是把指示器放在哪里?我想计算数据,并使用这些数据。我不想把指标放在任何地方,只是想作为参考 这是我要用作数据的数据帧: open high low close hr

首先,感谢你对像我这样的新人的爱

现在是代码

我有一个看似简单的代码,是有人写来计算移动平均价格的,但要理解它并遵循它,我有一个问题需要回答,关于where的定义

但说到3,我不明白。什么意思是把指示器放在哪里?我想计算数据,并使用这些数据。我不想把指标放在任何地方,只是想作为参考

这是我要用作数据的数据帧:

                         open          high           low         close
hr                                                                      
2021-02-01 01:00  32835.839519  33438.836060  32835.839519  33389.974454
2021-02-01 02:00  33400.422170  33663.000232  33260.343246  33569.816646
2021-02-01 03:00  33581.206956  33633.454861  33437.081539  33466.178320
2021-02-01 04:00  33473.881292  33680.926267  33473.881292  33512.310031
2021-02-01 05:00  33496.550836  33692.662741  33442.771302  33692.295982
2021-02-01 06:00  33674.363254  33931.304243  33372.640454  33372.640454
2021-02-01 07:00  33466.277250  33718.499099  33410.173005  33543.580113
2021-02-01 08:00  33691.622420  34155.668712  33577.491467  34155.668712
2021-02-01 09:00  34541.989582  34541.989582  34246.591606  34255.313422
2021-02-01 10:00  34254.311054  34318.042807  34009.930110  34043.516502
2021-02-01 11:00  34102.209535  34181.236131  33960.033182  34181.236131
2021-02-01 12:00  34196.688991  34196.688991  33677.872302  33677.872302
2021-02-01 13:00  33658.073761  33831.043558  33616.263612  33616.263612
2021-02-01 14:00  33506.144521  33698.288934  33298.355558  33458.379708
2021-02-01 15:00  33449.472954  33540.119075  33137.424801  33137.424801
2021-02-01 16:00  33129.661923  33444.487621  33129.661923  33444.487621
2021-02-01 17:00  33427.510914  33966.758995  33328.452664  33966.758995
2021-02-01 18:00  33883.647812  33883.647812  33692.664177  33753.657270
2021-02-01 19:00  33568.840250  33904.003721  33568.840250  33817.161851
2021-02-01 20:00  33716.826906  33857.417730  33663.339958  33757.230256
2021-02-01 21:00  33608.964863  33692.950108  33508.713475  33553.086495
2021-02-01 22:00  33475.494546  33629.985564  33423.225607  33423.225607
2021-02-01 23:00  33396.069559  33614.188165  33361.882597  33405.990357
2021-02-02 00:00  33423.242711  33912.467287  33423.242711  33626.927090
2021-02-02 01:00  33578.032588  33578.032588  33470.631802  33470.631802

其中
指的是存储结果的列名。在pandas中,通常不从函数返回列表,而只是将列/序列添加到DataFrame,下游函数可以根据需要使用这些列/序列

在本例中,我将结果保存到
where='close-3-day-avg'
列。注:我对函数
ma
进行了一些修改,因为我无法使其以如下形式工作:

将熊猫作为pd导入
pd.set\u选项('display.max\u columns',无)
pd.set_选项('display.width',2000)
def ma(数据、回望、内容、位置):
数据[其中]=0.0
对于范围内的i(len(数据)):
Data[where].loc[i]=Data[what].loc[i-回望+1:i].mean()
返回数据
数据=“高开低关”
人力资源
2021-02-01 01:00  32835.839519  33438.836060  32835.839519  33389.974454
2021-02-01 02:00  33400.422170  33663.000232  33260.343246  33569.816646
2021-02-01 03:00  33581.206956  33633.454861  33437.081539  33466.178320
2021-02-01 04:00  33473.881292  33680.926267  33473.881292  33512.310031
2021-02-01 05:00  33496.550836  33692.662741  33442.771302  33692.295982
2021-02-01 06:00  33674.363254  33931.304243  33372.640454  33372.640454
2021-02-01 07:00  33466.277250  33718.499099  33410.173005  33543.580113
2021-02-01 08:00  33691.622420  34155.668712  33577.491467  34155.668712
2021-02-01 09:00  34541.989582  34541.989582  34246.591606  34255.313422
2021-02-01 10:00  34254.311054  34318.042807  34009.930110  34043.516502
2021-02-01 11:00  34102.209535  34181.236131  33960.033182  34181.236131
2021-02-01 12:00  34196.688991  34196.688991  33677.872302  33677.872302
2021-02-01 13:00  33658.073761  33831.043558  33616.263612  33616.263612
2021-02-01 14:00  33506.144521  33698.288934  33298.355558  33458.379708
2021-02-01 15:00  33449.472954  33540.119075  33137.424801  33137.424801
2021-02-01 16:00  33129.661923  33444.487621  33129.661923  33444.487621
2021-02-01 17:00  33427.510914  33966.758995  33328.452664  33966.758995
2021-02-01 18:00  33883.647812  33883.647812  33692.664177  33753.657270
2021-02-01 19:00  33568.840250  33904.003721  33568.840250  33817.161851
2021-02-01 20:00  33716.826906  33857.417730  33663.339958  33757.230256
2021-02-01 21:00  33608.964863  33692.950108  33508.713475  33553.086495
2021-02-01 22:00  33475.494546  33629.985564  33423.225607  33423.225607
2021-02-01 23:00  33396.069559  33614.188165  33361.882597  33405.990357
2021-02-02 00:00  33423.242711  33912.467287  33423.242711  33626.927090
2021-02-02 01:00  33578.032588  33578.032588  33470.631802  33470.631802"""
行=[line.split(“”)用于数据中的行。split('\n')[2:]
df=pd.DataFrame(行、列=['hr'、'open'、'high'、'low'、'close'])#。设置索引('hr'))
df[['open'、'high'、'low'、'close']]=df[['open'、'high'、'low'、'close']]。应用(pd.到数值)
打印(ma(df,lookback=3,what='close',where='close-3-day-avg'))
结果(注意,结果在新列中):


谢谢,你解释得很好。另一个问题——“回顾”。为什么要定义一个时间段?函数不应该已经使用给定数据的时间段吗?通常您会使用时间戳作为索引(我在注释中这样做了),但是您的代码似乎只使用整数索引(0到24),所以我也使用了它们。使用时间戳有点棘手,因为你必须减去小时而不是数字。
                         open          high           low         close
hr                                                                      
2021-02-01 01:00  32835.839519  33438.836060  32835.839519  33389.974454
2021-02-01 02:00  33400.422170  33663.000232  33260.343246  33569.816646
2021-02-01 03:00  33581.206956  33633.454861  33437.081539  33466.178320
2021-02-01 04:00  33473.881292  33680.926267  33473.881292  33512.310031
2021-02-01 05:00  33496.550836  33692.662741  33442.771302  33692.295982
2021-02-01 06:00  33674.363254  33931.304243  33372.640454  33372.640454
2021-02-01 07:00  33466.277250  33718.499099  33410.173005  33543.580113
2021-02-01 08:00  33691.622420  34155.668712  33577.491467  34155.668712
2021-02-01 09:00  34541.989582  34541.989582  34246.591606  34255.313422
2021-02-01 10:00  34254.311054  34318.042807  34009.930110  34043.516502
2021-02-01 11:00  34102.209535  34181.236131  33960.033182  34181.236131
2021-02-01 12:00  34196.688991  34196.688991  33677.872302  33677.872302
2021-02-01 13:00  33658.073761  33831.043558  33616.263612  33616.263612
2021-02-01 14:00  33506.144521  33698.288934  33298.355558  33458.379708
2021-02-01 15:00  33449.472954  33540.119075  33137.424801  33137.424801
2021-02-01 16:00  33129.661923  33444.487621  33129.661923  33444.487621
2021-02-01 17:00  33427.510914  33966.758995  33328.452664  33966.758995
2021-02-01 18:00  33883.647812  33883.647812  33692.664177  33753.657270
2021-02-01 19:00  33568.840250  33904.003721  33568.840250  33817.161851
2021-02-01 20:00  33716.826906  33857.417730  33663.339958  33757.230256
2021-02-01 21:00  33608.964863  33692.950108  33508.713475  33553.086495
2021-02-01 22:00  33475.494546  33629.985564  33423.225607  33423.225607
2021-02-01 23:00  33396.069559  33614.188165  33361.882597  33405.990357
2021-02-02 00:00  33423.242711  33912.467287  33423.242711  33626.927090
2021-02-02 01:00  33578.032588  33578.032588  33470.631802  33470.631802
                  hr          open          high           low         close  close-3-day-avg
0   2021-02-01 01:00  32835.839519  33438.836060  32835.839519  33389.974454     33389.974454
1   2021-02-01 02:00  33400.422170  33663.000232  33260.343246  33569.816646     33479.895550
2   2021-02-01 03:00  33581.206956  33633.454861  33437.081539  33466.178320     33475.323140
3   2021-02-01 04:00  33473.881292  33680.926267  33473.881292  33512.310031     33516.101666
4   2021-02-01 05:00  33496.550836  33692.662741  33442.771302  33692.295982     33556.928111
5   2021-02-01 06:00  33674.363254  33931.304243  33372.640454  33372.640454     33525.748822
6   2021-02-01 07:00  33466.277250  33718.499099  33410.173005  33543.580113     33536.172183
7   2021-02-01 08:00  33691.622420  34155.668712  33577.491467  34155.668712     33690.629760
8   2021-02-01 09:00  34541.989582  34541.989582  34246.591606  34255.313422     33984.854082
9   2021-02-01 10:00  34254.311054  34318.042807  34009.930110  34043.516502     34151.499545
10  2021-02-01 11:00  34102.209535  34181.236131  33960.033182  34181.236131     34160.022018
11  2021-02-01 12:00  34196.688991  34196.688991  33677.872302  33677.872302     33967.541645
12  2021-02-01 13:00  33658.073761  33831.043558  33616.263612  33616.263612     33825.124015
13  2021-02-01 14:00  33506.144521  33698.288934  33298.355558  33458.379708     33584.171874
14  2021-02-01 15:00  33449.472954  33540.119075  33137.424801  33137.424801     33404.022707
15  2021-02-01 16:00  33129.661923  33444.487621  33129.661923  33444.487621     33346.764043
16  2021-02-01 17:00  33427.510914  33966.758995  33328.452664  33966.758995     33516.223806
17  2021-02-01 18:00  33883.647812  33883.647812  33692.664177  33753.657270     33721.634629
18  2021-02-01 19:00  33568.840250  33904.003721  33568.840250  33817.161851     33845.859372
19  2021-02-01 20:00  33716.826906  33857.417730  33663.339958  33757.230256     33776.016459
20  2021-02-01 21:00  33608.964863  33692.950108  33508.713475  33553.086495     33709.159534
21  2021-02-01 22:00  33475.494546  33629.985564  33423.225607  33423.225607     33577.847453
22  2021-02-01 23:00  33396.069559  33614.188165  33361.882597  33405.990357     33460.767486
23  2021-02-02 00:00  33423.242711  33912.467287  33423.242711  33626.927090     33485.381018
24  2021-02-02 01:00  33578.032588  33578.032588  33470.631802  33470.631802     33501.183083