我編寫了一個函數,該函數根據日期和價格列表計算股票的移動平均線。但輸出不正確。我只需要第二組代碼。這是我的代碼。計算移動平均線的輸出問題
def calculate(self, stock_date_price_list, min_days=2):
'''Calculates the moving average and generates a signal strategy for buy or sell
strategy given a list of stock date and price. '''
stock_averages = []
stock_signals = []
price_list = [float(n) for n in stock_date_price_list[1::2]]
days_window = collections.deque(maxlen=min_days)
rounding_point = 0.01
for price in price_list:
days_window.append(price)
stock_averages.append(0)
stock_signals.append("")
if len(days_window) == min_days:
moving_avg = sum(days_window)/min_days
stock_averages[-1] = moving_avg
if price < moving_avg:
stock_signals[-1] = "SELL"
elif price > moving_avg:
if price_list[-2] < stock_averages[-2]:
stock_signals[-1] = "BUY"
stock_averages[:] = ("%.2f" % avg if abs(avg)>=rounding_point else ' ' for avg in stock_averages)
return stock_averages, stock_signals
輸入是股票價格和日期的格式如下列表:
[2012-10-10,52.30,2012-10-09,51.60]
我得到的輸出是:
2012-10-01 659.39
2012-10-02 661.31
2012-10-03 671.45
2012-10-04 666.80
2012-10-05 652.59
2012-10-08 638.17
2012-10-09 635.85
2012-10-10 640.91
2012-10-11 628.10
2012-10-12 629.71 648.43 SELL
2012-10-15 634.76 645.97 SELL
2012-10-16 649.79 644.81 BUY
2012-10-17 644.61 642.13 BUY
2012-10-18 632.64 638.71 SELL
2012-10-19 609.84 634.44 SELL
2012-10-22 634.03 634.02 BUY
2012-10-23 613.36 631.77 SELL
2012-10-24 616.83 629.37 SELL
而應該是:
2012-10-01 659.39
2012-10-02 661.31
2012-10-03 671.45
2012-10-04 666.80
2012-10-05 652.59
2012-10-08 638.17
2012-10-09 635.85
2012-10-10 640.91
2012-10-11 628.10
2012-10-12 629.71 648.43
2012-10-15 634.76 645.97
2012-10-16 649.79 644.81 BUY
2012-10-17 644.61 642.13
2012-10-18 632.64 638.71 SELL
2012-10-19 609.84 634.44
2012-10-22 634.03 634.02 BUY
2012-10-23 613.36 631.77 SELL
2012-10-24 616.83 629.37
buyi的參數ng/selling:
如果特定日期的收盤價高於簡單移動平均線(即當日收盤價高於當天的簡單移動平均值,而前一收盤價不高於先前收盤價簡單移動均線),產生買入信號。
如果特定日期的收盤價低於簡單移動平均線,則產生賣出信號。
否則,不生成信號。
什麼是你打印有值是多少?有些代碼可以工作嗎?如果將買入/賣出信號的計算分解爲一個函數,將單個價格的所有相關值分開,則可能會更容易,因此您可以單獨對其進行測試。 – jonrsharpe
@jonrsharpe打印的價值是日期,收盤價格,移動平均線,買/賣決定..代碼似乎沒有問題,除了輸出。我一直在試圖把它分成兩個功能,但是因爲我對這個新手並沒有太多的運氣。 – user3233949