【问题标题】:Difficulty with index comparison logic索引比较逻辑的困难
【发布时间】:2014-02-18 22:34:44
【问题描述】:

我正在创建一个基于类的信号生成器,它给出一个价格列表和一个平均值列表,如果当天的价格高于平均值,它会在给定日期创建一个“买入”“卖出”信号,但前一天它没有更大,所以基本上当价格超过平均线时,它会发出卖出信号,当价格低于平均线时会发出买入信号(它低于一天的平均水平,但前一天它不是' 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

【问题讨论】:

  • 您遇到的错误很可能是 SyntaxError,与代码的实际用途无关。不管你应该发布你得到的实际回溯。
  • @Iguananaut 我修正了语法,但它没有返回正确的结果。

标签: python


【解决方案1】:

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:

即检查价格是否从低于或等于平均水平上升到高于平均水平。

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多