我试着比较两个清单来产生买入/卖出信号。第一个列表是价格列表,而第二个列表是这些价格的简单移动平均值。你知道吗
result = [590.0, 600.0, 590.0, 580.0, 570.0, 560.0, 570.0]
avrg = [580.0, 590.0, 593.33, 590.0, 580.0, 570.0, 566.67]
signal = ''
for prices in range(len(result)):
for averages in range(len(avrg)):
if result[prices] > avrg[averages]:
signal = 'BUY'
elif result[prices] < avrg[averages]:
signal = 'SELL'
lst.append(signal)
输出为
['BUY', 'BUY', 'BUY', 'BUY', 'BUY', 'SELL', 'BUY']
输出应该是
['BUY', 'BUY', 'SELL', 'SELL', 'SELL', 'SELL', 'BUY']
给予
不是在
result
和avrg
的对应元素上循环,而是在每个组合上循环。例如,如果将print(result[prices], avrg[averages])
粘贴到循环中,您将看到所以附加的
signal
实际上是比较result[prices]
和avrg
的最后一个元素的结果。你知道吗我认为您真正想做的是比较相应的术语,我们可以使用
zip
来进行比较。此外,在Python中,我们可以直接循环列表,而不需要通过索引访问它们。例如:这样我们就可以写作了
(为了简单起见,忽略
price == average
案例)产生
在这里,我们甚至可以使用列表理解而不是循环:
但是,逻辑越复杂,只需编写一个clear for循环就越好。你知道吗
在任何情况下,我认为基本的问题是,你做了一个完整的所有价格对所有平均值的比较,并采取最后一个值时,你真的想比较相应的元素。你知道吗
[注:我刚注意到一些奇怪的事情。当价格高于平均水平时买东西不是不对吗?你不应该在低于平均水平时买进,在高于平均水平时卖出吗?]你知道吗
相关问题 更多 >
编程相关推荐