Flask發布一個及時止損(止盈)服務(二)

生成可視化的止盈止損結果(圖片)

媽的,還是得用 akshare,還需要指定python版本3.9以上

conda remove -n fonxsys --all
conda search pythonconda create -n fonxsys python=3.9
conda activate fonxsys
python.exe -m pip install --upgrade pip --userpip install --upgrade pip #失敗,網絡問題
pip install pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --user --upgrade #失敗python.exe -m pip install pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --user --upgradeconda config --show channels 

安裝AKShare?

使用阿里云安裝 akshare基于 Python 的代碼如下(不是本次重點)
pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --upgrade基于 Anaconda 的代碼如下,"pip install --user" 的意思是使用當前用戶的權限安裝 Python 包
pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --user --upgrade

?安裝spyder(不知道清華源的為啥又不行了)

conda install spyder

安裝基本的一些包

conda install numpy pandas pyquery

??安裝金融繪圖庫

pip install mplfinance --user

添加引用代碼

import mplfinance as mpf
import matplotlib.pyplot as plt

函數,獲取歷史數據

def getdata_his(code,date_buy):df = pd.DataFrame(columns=['日期','開盤','收盤','最高','最低','成交量'])    #print(code)#print(date_buy)if (code[0] == '0' or code[0] == '3' or code[0] == '6'):        df = ak.stock_zh_a_hist(symbol=code, period="daily", start_date=date_buy.replace("-", ""), adjust="qfq")df = df[['日期','開盤','收盤','最高','最低','成交量']] df.columns = ['date', 'open','close','high','low','volume']      df['date'] = pd.to_datetime(df['date'])df.set_index('date', inplace=True)elif (code[0] == '1' or code[0]=='5'):#ETF基金的處理比較特殊,要分,歷史行情,當前行情if code[0] == '1':symbol = "sz"+code        else:symbol = "sh"+code#歷史行情        df = ak.fund_etf_hist_sina(symbol)df['date'] = pd.to_datetime(df['date'])df.set_index('date', inplace=True)df = df[df.index>= pd.Timestamp(date_buy)]    #當日行情df_today = ak.fund_etf_spot_em()    #print(df_today)df_today = df_today.loc[df_today['代碼']==code] df_today = df_today[['名稱','開盤價','最新價','最高價','最低價','成交量']]df_today.columns = ['date', 'open','close','high','low','volume']df_today.loc[df_today.index[0],'date']=dt.datetime.now().strftime("%Y-%m-%d")                      df_today['date'] = pd.to_datetime(df_today['date'])df_today.set_index('date', inplace=True)        #合并行情if df.index[-1] != pd.to_datetime(dt.datetime.now().strftime("%Y-%m-%d")):df = pd.concat([df,df_today],ignore_index = False)#df['ma5'] = df['close'].rolling(5).mean()print(df)return df

函數,獲取當前信息(主要就是股票名稱了)

def getdata_online(code):if code[0] == '0':symbol = "sz"+codeelif code[0] == '1':symbol = "s_sz"+codeelif code[0] == '3':symbol = "sz"+codeelif code[0] == '5':symbol = "s_sh"+codeelif code[0] == '6':symbol = "sh"+codeurl = "http://hq.sinajs.cn/list="+symbolheaders={'Referer':'https://finance.sina.com.cn/'}page = requests.get(url,headers=headers)stock_info = page.text#print(stock_info)mt_info = stock_info.split(",")#爬取到數據信息name    = mt_info[0].split("\"")[1]return name

函數 生成數據

code="002962"
price_buy=14.682
date_buy="2024-03-05"
price_stop_loss=14.40def make_data(code,price_buy,date_buy):#具體計算開始df_his = getdata_his(code,date_buy)    if len(df_his) <= 0 : return Nonename = getdata_online(code)if name == "" : return Nonereturn name,df_his

函數 圖片繪制的一些初始化

def init_plt():'''# 設置mplfinance的蠟燭顏色,up為陽線顏色,down為陰線顏色my_color = plt.make_marketcolors(up='r',down='g',edge='inherit',wick='inherit',volume='inherit')# 設置圖表的背景色my_style = plt.make_mpf_style(marketcolors=my_color,figcolor='(0.82, 0.83, 0.85)',gridcolor='(0.82, 0.83, 0.85)')plt.plot(df_his,type='candle',style=my_style,ylabel='price(RMB)')sys.exit()'''plt.figure(figsize=(8,4),  # inchesdpi=200, # dot-per-inchfacecolor='#BBBBBB',frameon=True, # 畫布邊框) # X軸范圍#plt.xlim((2000,2010))  # X軸的起點和終點# Y軸范圍#plt.ylim(6e9,7e9) # Y軸的起點和終點# X軸刻度#plt.xticks(df_his.index,df_his.index.strftime("%m-%d"))# X軸刻度#plt.yticks(np.arange(6e9,7e9+1e8,1e8))'''df.plot(kind = "line",figsize = (6, 4),title = "title",legend = True,ylim = [-20, 20], yticks = list(range(-20, 20, 10)),grid = False,style = "--g", colormap = "cool", alpha = 0.8,rot = 45,use_index = True,subplots = True)'''plt.rcParams['font.sans-serif'] = 'SimHei'  # 設置字體為簡黑(SimHei)plt.rcParams['font.sans-serif'] = 'FangSong'  # 設置字體為仿宋(FangSong)plt.rcParams['axes.unicode_minus']=False

函數 生成可視化的圖片

def makepic(code,price_buy,date_buy,name,df_his):now = df_his.iloc[-1,1]            price_stop_loss = df_his.min()['low']      price_high = df_his.max()['high']df_his['price_buy'] = price_buydf_his['price_high'] = price_highdf_his['price_stop_loss'] = price_stop_lossprofit_base = 0.618price_stop_surplus = price_buy+(price_high-price_buy)*profit_base;df_his['price_stop_surplus'] = price_stop_surplusprint("{} {}\n當前日期 {}\n購入日期 {}\n購入價格 {}\n止損價格 {:.3f}\n區間高價 {:.3f}\n當前價格 {:.3f}\n止盈價格 {:.3f}".format(\code,\name,\dt.datetime.now().strftime("%Y-%m-%d"),\date_buy,\price_buy,\price_stop_loss,\float(price_high),\float(now),\price_stop_surplus))plt.title("{} {} {} 止損止盈動態圖".format(code,name,dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))plt.xlabel('日期')plt.ylabel('價格')plt.plot(df_his[['price_high']],linestyle='-',color='orange',label="最高(%.3f)" % (price_high))     plt.plot(df_his[['high']],linestyle='-',color='orange',label="每日最高")         plt.plot(df_his[['price_stop_surplus']],linestyle='--',color='red',label="止盈(%.3f)" % (price_stop_surplus))         plt.plot(df_his[['price_buy']],linestyle='-',color='blue',label="成本線(%.3f)" % (price_buy))#plt.plot(df_his[['close']],marker='o',color='blue',label="每日收盤" )              plt.scatter(df_his.index,df_his[['close']], marker='o',color='blue',label="每日收盤" )        plt.plot(df_his[['low']],linestyle='-',color='green',label="每日最低")plt.plot(df_his[['price_stop_loss']],linestyle='-',color='green',label="止損線(%.3f)" % (price_stop_loss)) legend = plt.legend(loc='best')

主函數

if __name__=='__main__':#三花智控code="002050"price_buy=24.222date_buy="2024-03-07"#長江電力code="600900"price_buy=24.83date_buy="2024-04-01"#五方光電code="002962"price_buy=14.682date_buy="2024-03-05"#天威視訊code="002238"price_buy=9.883date_buy="2024-04-18"#晉拓股份code="603211"price_buy=18.28date_buy="2024-03-13"#科力遠code="600478"price_buy=4.4date_buy="2024-05-06"#太平洋code="601099"price_buy=3.591date_buy="2024-05-15"#一心堂code="002727"price_buy=20.57date_buy="2024-04-16"#我愛我家code="000560"price_buy=3.156date_buy="2024-05-27"#祥源文旅code="600576"price_buy=5.570date_buy="2024-05-09"    #卡倍億code="300863"price_buy=48.905date_buy="2024-06-03"       #春秋電子code="603890"price_buy=11.39date_buy="2024-06-03"#藍帆醫療code="002382"price_buy=5.073date_buy="2024-05-30"   #皖能電力code="000543"price_buy=8.041date_buy="2024-06-03"#處理數據name,df_his= make_data(code,price_buy,date_buy)#初始化繪圖init_plt()makepic(code, price_buy, date_buy, name,df_his)# 新浪日K線圖#http://image.sinajs.cn/newchart/daily/n/sh000001.gif

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42321.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【粉絲福利 | 第8期】值得收藏!推薦10個好用的數據血緣工具

?? 寫在前面參與規則&#xff01;&#xff01;&#xff01; ?參與方式&#xff1a;關注博主、點贊、收藏、評論&#xff0c;任意評論&#xff08;每人最多評論三次&#xff09; ??本次送書1~4本【取決于閱讀量&#xff0c;閱讀量越多&#xff0c;送的越多】 目前市面上絕…

數據遷移探索

概念 數據遷移是指將數據從一個計算環境或存儲系統移動到另一個計算環境或存儲系統。 隨著公司業務的發展&#xff0c;出于成本優化、系統升級、分庫分表、整合數據等原因。數據遷移工作在日常工作中會陸續出現。 我們可以將數據遷移分成兩個部分&#xff0c;第一部分是數據…

springboot高職院校畢業生信息管理系統-計算機畢業設計源碼27889

摘 要 基于Java語言開發的高職院校畢業生信息管理系統旨在提供一個便捷、高效的方式來管理畢業生的相關信息。系統包括學生基本信息管理、成績管理、就業信息管理等模塊&#xff0c;通過界面友好、操作簡單的設計&#xff0c;方便管理員快速查詢和更新學生信息。系統還提供數據…

采用前后端分離技術架構+java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接

采用前后端分離技術架構java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接 什么是產科信息管理系統-建檔管理&#xff1f; 產科信息管理系統建檔管理通過信息技術實現了孕產婦健康信息的電子化、網絡化和智能化管理&#xff0c;提高了醫療服…

Riscv 架構的合規測試

為啥直接關注riscv-arch-test&#xff0c;是因為RISCOF 測試框架使用的是riscv-arch-test 1. The architectural test 架構測試是一個單一的測試&#xff0c;代表了可編譯和運行的最小測試代碼。它是用匯編代碼編寫的&#xff0c;其產品是test signature。一個架構測試可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整體還可以&#xff0c;這里推薦一下。 教程解析 1、微信平臺開通訂閱消息。 2、添加模板。 3、springboot后臺接口開發 微信平臺驗證地址接口開發&#xff0c;然后部署到公網服務器。 4、微信平臺驗…

基于FPGA的數字信號處理(15)--定點數的舍入模式(6)向0取整fix

前言 在之前的文章介紹了定點數為什么需要舍入和幾種常見的舍入模式。今天我們再來看看另外一種舍入模式&#xff1a;向上取整fix。 10進制數的fix fix&#xff1a;也叫 向0取整。它的舍入方式是數據往0的方向&#xff0c;舍入到最近的整數&#xff0c;比如1.75 fix到2&#xf…

Docker技術簡介

Docker是一種開源的容器化平臺&#xff0c;旨在簡化應用程序的創建、部署和運行過程。它通過將應用程序及其所有依賴項打包到一個稱為容器的可移植單元中來實現這一目標。以下是Docker技術的簡介&#xff1a; Docker的核心概念 1、容器&#xff08;Container&#xff09;&…

將WordPress的文章重新排序的3個方法

有效的調整文章顯示順序看開可以更好突出內容&#xff0c;還可以保持網站的新鮮感&#xff0c;今天我將帶您了解三種方法&#xff0c;通過重新排序文章顯著提升網站的吸引力。我們將逐步講解從調整設置到使用插件以及“置頂”文章的每一種方法&#xff0c;確保WordPress 新手也…

Linux將mysql導出

1、基礎導出 要在Linux系統中將MySQL數據庫導出&#xff0c;通常使用mysqldump命令行工具。以下是一個基本的命令示例&#xff0c;用于導出整個數據庫&#xff1a; mysqldump -u username -p database_name > export_filename.sql 其中&#xff1a; username 是你的MySQL用…

利用python進行數據分析 —— python正則表達式(持續更新中!)

文章目錄 利用python進行數據分析 —— python基礎知識進階重點筆記&#xff1a;正則表達式re.match 匹配開頭re.search 全文匹配re.sub 替換刪除re.compile 編譯正則findall 返回列表finditer 返回迭代器re.split 分割返回列表(?P...) 分組匹配正則表達符號、修飾符通配符1 ^…

谷歌上新!最強開源模型Gemma 2,27B媲美LLaMA3 70B,挑戰3140億Grok-1

文章目錄 LMSYS Chatbot Arena&#xff1a;開源模型性能第一Gemma為什么這么強&#xff1f;架構創新對AI安全性的提升 A領域競爭激烈&#xff0c;GPT-4o 和 Claude 3.5 Sonnet 持續發力&#xff0c;谷歌迅速跟進。 谷歌為應對AI競爭所采取的策略&#xff1a;依靠 Gemini 閉源模…

hdu物聯網硬件實驗3 按鍵和中斷

學院 班級 學號 姓名 日期 成績 實驗題目 按鍵和中斷 實驗目的 實現閃燈功能轉換 硬件原理 無 關鍵代碼及注釋 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

AI端側大模型未來發展趨勢

一、定義與優勢 端側AI大模型是指基于移動終端設備上的大型神經網絡模型&#xff0c;這些模型能夠在本地設備&#xff08;如智能手機、PC、汽車、XR以及物聯網設備等&#xff09;上直接運行和處理人工智能算法&#xff0c;實現如圖像識別、語音識別、自然語言處理等任務。端側…

解決WSL2報錯:當前電腦配置不支持WSL2,請啟用虛擬機平臺 Windows 功能并確保在 BIOS 中啟用虛擬化

事情要追溯到突發奇想下載了騰訊的手游模擬器開始。。。因為一直閃退&#xff0c;模擬器自檢就要求把虛擬化功能關閉了&#xff0c;結果還是一直閃退&#xff0c;WSL2也給我報錯了。。。大無語 主要通過以下兩個步驟解決&#xff0c;操作了之后需要把電腦重啟&#xff1a; 一、…

docker里日志分割的方法

在Docker中對日志進行按大小分割&#xff08;log rotation&#xff09;是一個常見的需求&#xff0c;因為長時間運行的容器可能會生成大量日志&#xff0c;導致磁盤空間不足。Docker提供了內置的日志管理功能&#xff0c;可以通過配置日志驅動來實現日志的自動分割。以下是具體…

安卓系統裁剪原生app

目錄 前言一、修改build目錄main.mk二、修改build目錄product.mk三、在.mk中使用PRODUCT_DEL_PACKAGES屬性 前言 安卓系統裁剪預置應用或服務基本步驟 一、修改build目錄main.mk ifdef FULL_BUILD# The base list of modules to build for this product is specified# by th…

小程序做自定義分享封面圖,Canvas base64圖片數據真機上不顯示?【已解決】

首選說一下需求&#xff0c;做一個小程序分享&#xff0c;但是封面圖要自定義&#xff0c;除了要有對應商品還有有背景圖&#xff0c;商品名。類似這種 實現邏輯&#xff0c;把商品圖和背景圖&#xff0c;再加上價格和商品名用canvas 渲染出來 這是弄好之后的效果圖&#xff0…

管理者要勇敢做“壞人”

有點正義感的人都對壞人深惡痛絕&#xff0c;但在團隊管理上&#xff0c;有一種觀念或許會讓你感到意外&#xff0c;那就是管理者要敢于做“壞人”。這并不是讓管理者去做惡&#xff0c;而是在某些關鍵時刻&#xff0c;要有勇氣打破常規的“好人”形象&#xff0c;做出不受歡迎…

執行數據庫語句時沒有報錯,并且提示執行成功,但在數據庫中沒有新增數據

這可能是因為你沒有提交事務。在執行 INSERT、UPDATE 或 DELETE 等修改數據的操作后&#xff0c;需要明確地提交事務才能將更改持久化到數據庫中。 以下是一個示例&#xff0c;展示python中如何在執行 INSERT 語句后提交事務&#xff1a; import pymysql# MySQL數據庫連接配置…