我正在尝试实现我在网上找到的股票分析的示例函数[1]。
def normalizer(Data, lookback, onwhat, where):
for i in range(len(Data)):
try:
Data[i, where] = (Data[i, onwhat] - min(Data[i - lookback + 1:i + 1, onwhat])) /
(max(Data[i - lookback + 1:i + 1, onwhat]) - min(Data[i - lookback + 1:i + 1,onwhat]))
except ValueError:
pass
Data[:, where] = Data[:, where] * 100
return Data
Data
变量是如何被引用的?对于给定的股票,Data
是一定天数的时间序列OHLC(Open,High,Low,Close(
- 我认为它应该是一个列表列表,但引用带有
data[x,y]
的列表是无效的。(我想(。我对列表列表的唯一经验是需要使用符号
,如data[x][y]
这让我认为data
变量不是列表列表 - 有人认识二维数组的这种表示法吗
我使用的是Python 3.7。
[1] :记入Sofien Kaabar
这是旧的,但这里有一个工作示例。原始注释在numpy数组中是正确的。我用pandas来获取数组,它是一个包含OHLC数据的列表列表,但也需要一个空列来放入结果。
文章来源于原作者:https://towardsdatascience.com/a-simple-indicator-to-be-added-to-your-trading-system-ac65e70bbdd
熊猫数据:
open high low close newcolumn
Date
2002-05-23 16.19 17.40 16.04 16.75
2002-05-24 17.00 17.15 16.76 16.94
2002-05-28 16.99 17.25 16.20 16.20
2002-05-29 16.30 16.30 15.20 15.45
2002-05-30 15.51 15.51 15.00 15.00
... ... ... ... ... ...
2002-10-08 5.75 5.99 5.47 5.67
2002-10-09 5.74 5.75 4.86 5.22
2002-10-10 5.29 7.35 4.85 7.09
2002-10-11 7.12 7.40 6.25 6.59
2002-10-14 6.50 7.49 6.49 7.48
Numpy数组(不是完整的数组-列表列表(:
array([[16.19, 17.4, 16.04, 16.75, ''],
[17.0, 17.15, 16.76, 16.94, ''],
[16.99, 17.25, 16.2, 16.2, ''],
[16.3, 16.3, 15.2, 15.45, ''],
[15.51, 15.51, 15.0, 15.0, ''],
[15.1, 15.1, 15.0, 15.07, ''],
[15.12, 16.09, 15.07, 15.8, ''],
[15.9, 15.96, 15.55, 15.65, ''],
[15.55, 16.23, 15.5, 16.06, ''],
函数参数是索引位置3-闭合柱4-写入新列50-回顾
normalizer(df.values, 50, 3, 4)
一旦你到达第50个位置,你就会看到中的新列计算
[13.3, 13.44, 12.29, 12.48, ''],
[12.41, 12.43, 9.89, 10.89, 0.0],
[10.9, 11.38, 10.65, 10.85, 0.0],
[11.14, 11.25, 10.4, 10.65, 0.0],
[10.65, 11.11, 10.4, 11.11, 6.371191135734058],
[11.15, 11.25, 10.51, 11.15, 6.925207756232686],
[11.18, 11.5, 10.9, 11.02, 5.124653739612177],
[11.24, 11.3, 10.55, 10.6, 0.0],
[10.75, 11.27, 10.56, 10.82, 3.0261348005502144],