用python來自動生成word版投資報告

      網友投稿 1088 2025-04-01

      從4月1日起,我開始把跟蹤的幾個股市策略的每日成果與下一日買賣計劃發到微信公眾號(比如今日投資總結與明日買賣計劃)。作為一個Python工程師,盡管不太純正,在這個RPA大火的時代,當然不會傻傻地每天手寫《今日投資總結與明日買賣計劃》,而是用Python生成txt文件,然后通過markdown轉成微信公眾號文檔。但現在的發布很不直觀,最好能把每個策略的趨勢圖加上去,這就不是txt能實現的了,有必要直接寫到word文檔里去,直接用Python來生成word版的投資報告。


      1. 原來的代碼

      2. 安裝并導入包

      python寫word文檔可以用python-docx包來實現,首先安裝包。

      pip install python-docx

      然后導入python-docx包下需要的操作,注意這個包的名字是python-docx,但導入的卻是docx。

      from docx import Document from docx.shared import Inches

      3. 創建word文檔并寫入各個段落

      首先創建word文檔。

      doc = Document()

      然后寫入各個段落,只需要將原來每一段的開頭改寫成add_paragraph,并把第一段的繼續改寫成add_run即可。

      比如把

      text = "今日上證指數"

      改寫成

      par = doc.add_paragraph("今日上證指數")

      用python來自動生成word版投資報告

      text += ("上漲" + str(round(SSEC['close'][0]-SSEC['close'][1],2)) + "點,漲幅" + str(round(SSEC['close'][0]/SSEC['close'][1]*100-100,2)) + '%')

      改寫成

      par.add_run("上漲" + str(round(SSEC['close'][0]-SSEC['close'][1],2)) + "點,漲幅" + str(round(SSEC['close'][0]/SSEC['close'][1]*100-100,2)) + '%')

      最后,把word文檔進行保存。

      doc.save(f'offical_account.doc')

      如此,一個簡單的word文檔就生成了。

      4. 調整段落格式

      可以看到上述生成的word文檔很奇怪,最突出的是有很多空行,這是原來為適應markdown格式而留下的,只需要去掉原來生成文檔里特地加上去的"\n"、"

      "和"#"等就行了。

      調整后結果如下:

      5. 調整字體和字號

      盡管段落間的多余空行已經去掉,但字體和字號都是一樣的,看起來很不美觀。

      簡單的做法是將原來的部分段落改成標題。

      比如把

      doc.add_paragraph(str(xh) + '. ' + str(strategies['id'][i]) + '號策略')

      改成

      doc.add_heading(str(xh) + '. ' + str(strategies['id'][i]) + '號策略', 0)

      后面的數字表示幾號標題,有0-9共10個等級的標題供選擇。

      6. 插入表格

      可以看到格式已經基本可以了,但原來的表格還沒有插入。

      首先插入表格并寫入表頭。

      table = doc.add_table(1, 6) table_title = ['序號', '年化收益率', '夏普比率', '累計收益', '今日浮盈', '今日漲幅'] for i in range(len(table_title)): table.cell(0, i).text = table_title[i]

      然后在每個策略下加上

      table.add_row() table.cell(row, 0).text = str(strategies['id'][i]) table.cell(row, 1).text = str(strategies['annual_return'][i]) table.cell(row, 2).text = str(strategies['sharpe'][i]) table.cell(row, 3).text = str(strategies['accumulated_return'][i]) table.cell(row, 4).text = str(today_get) table.cell(row, 5).text = str(today_increase) row += 1

      7. 插入圖片

      首先準備大盤數據

      SSEC = pd.read_sql("select trade_date, close from SSEC order by trade_date", engine)

      然后與各策略數據做交集

      amount = pd.read_sql("select trade_date, amount from strategy_data where strategy=%d order by trade_date" % strategies['id'][i], engine) amount = pd.merge(amount, SSEC, on='trade_date') amount['amount'] = amount['amount'] / list(amount['amount'])[0] amount['close'] = amount['close'] / list(amount['close'])[0]

      再然后調用matplotlib畫拆線圖

      import matplotlib.pyplot as plt fig = plt.figure(0) plt.plot(amount['trade_date'].to_list(), amount['amount'].to_list(), label=str(strategies['id'][i])+'號策略') plt.plot(amount['trade_date'].to_list(), amount['close'].to_list(), label='上證指數') plt.legend() plt.savefig('趨勢圖.png') plt.close(0) doc.add_picture('趨勢圖.png')

      如此,圖已經畫成了,但X軸的時間出現了重疊。我們可以把X軸的日期斜過來。

      plt.xticks(rotation=15)

      如此,圖片插入完成。

      8. 后記

      我們的word文檔生成完成了,但word無法直接復制到公眾號,復制過去格式就會丟失。

      所以,從自動發公眾號的視角來說,這一次的嘗試并不是很成功,但從python生成word報告來說已經基本完成了,還是值得記錄的。

      Python 金融專區

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS表格辦公—自定義合并單元格方式(wps電子表格合并單元格)
      下一篇:醫療門診系統管理軟件有哪些?哪個醫療門診系統管理軟件比較好用?
      相關文章
      最新亚洲人成无码网站| 亚洲日韩国产二区无码| 亚洲国产成人精品无码区花野真一| 97se亚洲综合在线| 亚洲日本一区二区| 亚洲AV日韩精品久久久久| 国产aⅴ无码专区亚洲av麻豆| 国产L精品国产亚洲区久久| 国产AV日韩A∨亚洲AV电影| 色婷婷亚洲一区二区三区| 综合偷自拍亚洲乱中文字幕| 亚洲一区二区三区高清视频| 亚洲综合国产精品| 亚洲国产精品无码专区影院| 红杏亚洲影院一区二区三区| 精品国产亚洲一区二区在线观看 | 在线aⅴ亚洲中文字幕| 亚洲最大的黄色网| 亚洲自偷自偷在线成人网站传媒 | 亚洲熟妇AV一区二区三区宅男| 中文有码亚洲制服av片| 91在线亚洲综合在线| 亚洲精品宾馆在线精品酒店| 337P日本欧洲亚洲大胆精品| 国产成人不卡亚洲精品91| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲中文字幕在线第六区| 国产亚洲综合成人91精品| 亚洲第一中文字幕| 亚洲国产亚洲片在线观看播放| 亚洲精品伊人久久久久| 亚洲精品动漫免费二区| 四虎亚洲国产成人久久精品| 国产亚洲情侣一区二区无| 亚洲AV日韩AV永久无码下载| 亚洲欧洲日产国码二区首页| 久久亚洲精品专区蓝色区| 亚洲成av人无码亚洲成av人| 亚洲JIZZJIZZ中国少妇中文| 亚洲人成网亚洲欧洲无码久久 | 亚洲精品理论电影在线观看|