第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

熊貓移動(dòng)平均交叉回測錯(cuò)誤

熊貓移動(dòng)平均交叉回測錯(cuò)誤

慕尼黑8549860 2021-06-11 14:44:00
我正在嘗試用熊貓回測移動(dòng)平均線交叉策略。首先,我定義了一個(gè)類 (Book),其中包含股票數(shù)量、現(xiàn)金金額和資產(chǎn)總額。在這個(gè)類中有 3 個(gè)函數(shù)可以在生成買入或賣出信號(hào)時(shí)計(jì)算賬面狀態(tài)。這是我的代碼,但是當(dāng)我測試時(shí),我可以發(fā)現(xiàn)股票和總資產(chǎn)的錯(cuò)誤計(jì)算。有什么問題?import pandas as pdfrom pandas_datareader import data as pdr# download dataframetest = pdr.get_data_yahoo("SPY", start="2000-01-01")class Book:    def __init__(self, stocks = 0, money = 100, asset = 0):        self.stocks = stocks        self.money = money        self.asset = asset    def buy(self, price):        if self.money == 0:            return        self.stocks += self.money/price        self.money -= (price * self.stocks)        self.asset = self.stocks * price + self.money    def sell(self, price):        if self.stocks == 0:            return        self.money += (price * self.stocks)        self.stocks = 0        self.asset = self.stocks * price + self.money    def assetEvaluate(self,price):        self.asset = self.stocks * price + self.moneytest['ma20'] = test.Close.rolling(20).mean()def macrossover(df, book):    result = []    for i, r in df.iterrows():        if df.Close[i] > df.ma20[i]:            book.buy(df.Close[i])        elif df.Close[i] < df.ma20[i]:            book.sell(df.Close[i])        else:                                    book.assetEvaluate(df.Close[i])        result.append([i,df.Close[i], book.stocks, book.money, book.asset])    df = pd.DataFrame(result, columns=['date','close','stocks','money','asset'])    df.set_index('date', inplace=True)    print(df)a = Book()macrossover(test,a)結(jié)果                 close    stocks         money       assetdate                                                      1999-12-31  146.875000  0.000000  1.000000e+02  100.0000002000-01-03  145.437500  0.000000  1.000000e+02  100.0000002000-01-04  139.750000  0.000000  1.000000e+02  100.0000002000-01-05  140.000000  0.000000  1.000000e+02  100.0000002000-01-06  137.750000  0.000000  1.000000e+02  100.0000002000-01-07  145.750000  0.000000  1.000000e+02  100.0000002000-01-10  146.250000  0.000000  1.000000e+02  100.000000
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)