索引比较逻辑的难度

时间:2014-02-18 22:34:44

标签: python

我正在创建一个基于类的信号发生器,给出一个价格列表和一个平均值列表,如果当天的价格高于平均值,它会在给定的一天创建“买入”卖出信号。在它没有更大的前一天,所以基本上当价格超过平均值时,它会在价格低于平均价格时给出卖出信号和买入信号(它低于一天的平均价格,但是它的前一天不是' t)这是我的代码,但它只返回一个包含第三种情况的空字符串的列表。

class Simplemovingaverage_signals():
    def __init__(self, list_of_prices, list_of_averages):
        self.list_of_prices = list_of_prices
        self.list_of_averages = list_of_averages

    def calculate(self):
        signals = []
        for i, j in zip(self.list_of_prices, self.list_of_averages):
            if i > j and not i-1 > j-1:
            signals.append('Sell')
            elif i < j and not i-1 < j-1:
                signals.append('Buy')
            else:
                signals.append('')
        return signals

1 个答案:

答案 0 :(得分:2)

您在your earlier question中有完全相同的问题

if i > j and not i-1 > j-1:

这怎么可能True?如果i大于j,则i-1将大于j-1

我认为您一直在尝试使用列表中的项目作为索引,尝试将每个值与之前的值进行比较。因此你可能想要:

for i1, i2, j1, j2 in zip(prices, prices[1:], aves, aves[1:]):
    if i2 > j2 and i1 <= j1:

即。检查价格是否从低于或等于平均值​​高于平均值。