python股票分析系統_熬了一晚上,小白用Python寫了一個股票提醒系統

碼農小馬七夕節去相親了,見了一個不錯的姑娘,長的非常甜美!聊著聊著很投緣!通過介紹人了解到,對方也很滿意~~想著自己單身多年的生活就要結束啦,心里滿是歡喜,美美噠!但是突然想起年初還有幾萬塊在股市里面,一直被套著,心里難受!

為了以后能多一點娶老婆的本錢,日子過的好一點,怎么咬著牙也要把股票的錢撈回來,這些可都是辛苦加班賺來的呀!怎么辦呢,于是一咬牙,干脆用萬能的Python寫一個量化股票系統!

看一下小馬的迷你量化系統

這個小迷小量化系統,麻雀雖小但是五臟俱全,我們今天先從實時提醒這個模塊做起,提醒系統分下面幾個部分:實時獲取股票數據

連接郵件服務器

預警配置管理

監控數據并發送郵件

希望通過實時提醒,來提高交易的收益率,試試看,萬一有用呢,反正寫代碼對碼農來說,so easy!

01.

實時獲取股票價格

為了更準確的獲取股票的價格,我們這里用比較有名的金融庫tushare來獲取,里面封裝了大量的股票的數據Api,非常好用!

1).首先設計一個stock類,這個類第一件大事:

查詢股票的實時價格和k線數據比如(5min,15min),然后把數據返回出來,為了提高效率,我們肯定是用并發出來,所以start_run函數會成為一個線程函數

2).第二件大事:

我們獲取的實時的數據,需要傳遞給外邊的模塊調用,子線程和主線程間通信的話,最簡單的方法用queue來搞定,所以我們stock類會init里面傳入一個queue

3).控制線程:

這個stock我們希望外邊能控制它的運行和停止,在stock類的入口,我們加入了一個_terminal變量

4).神奇的tushare庫

利用tushare這個神奇的API,構造兩個類函數分布query_stock_real_price和get_kline_data獲取數據:defquery_stock_real_price(self): df = ts.get_realtime_quotes(self.stock_num) df=df[['price','time']] price=df['price'].values[0] time=df['time'].values[0] return price,time defget_kline_data(self, ktype='ma5'): today=datetime.now().strftime('%Y-%m-%d') df = ts.get_hist_data(self.stock_num, start='2018-08-08',end=today) return(df[[ktype]])

02.

郵件系統

簡單實時提醒系統,我們用郵件,比如你的qq郵箱,是可以實時的收到一些郵件提醒的信息,我們這里用Python自帶的 SMTP和EMAIL模塊處理:

1). 連接郵件服務器

為了方便擴展和復用,也用一個類來封裝郵件server!構造一些郵件服務器的地址和密碼,然后連接就可以了,非常簡單。

2).構造郵件內容

服務器連接好了,之后我們需要發送郵件,需要寫一個郵件標題和內容,比如 xx股票,現在價格多少之類的。

1).為了更好的封裝數據,用類裝飾器對titel和content進行封裝,這樣外邊無法直接訪問這兩塊內容。

2).mail類會初始化一些信息,比如要發送到郵件地址,而且要把前面構造好的SMTP服務器對象傳進來,方便發送郵件。

3).初始化一個MIMEText對象,填充一些郵件的內容比如from,to,subject等等。為了有時間性,我們在郵件的開頭加一個時間戳。

03.

預警系統

我們需要有一個配置文件,里面不停的修改我們對股票的價格的設置,比如到了你的止損或者止盈的位置,或者到了你的一些量化策略的地方,需要提醒你注意等等。這里我們只是簡單的說明,只寫最大和最小的股價預警,示例一下:

setting 文件:{ "high_price":15,"low_price":10}

1).死循環監控數據

我們啟動一個線程,用一個死循環來不停的從隊列里面獲取股票的數據,然后進行一些監聽的邏輯判斷,先看一下核心代碼:

因為股票有交易時間,我們這里簡單粗暴的讓程序只在交易時間運行,當然如果要把程序放在遠端服務器上的話,需要進一步優化,不然每一天都要啟動一下!

死循環里面會不停的讀區預警設置里面的股價的漲到多少最高價和最低價,一旦觸達這個價格,立刻發送郵件提醒!

寫了這么久,看一下效果吧:

好了,上面是一個簡單的股票實時提醒程序,利用了一些Python自帶的郵件庫和一個金融庫,算是一個綜合小練習!,完成一個量化系統,還有兩個重要的功能沒有完成,需要繼續加油,歡迎大家留言討論。也歡迎更多的高手投稿,切磋交流!

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

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

相關文章

有關eigen庫的一些基本使用方法

目錄 介紹安裝Demo矩陣、向量初始化C數組和矩陣轉換矩陣基礎操作點積和叉積轉置、伴隨、行列式、逆矩陣計算特征值和特征向量解線性方程最小二乘求解稀疏矩陣介紹 Eigen是一個輕量級的矩陣庫,除了稀疏矩陣不成熟(3.1有較大改進)以外,其他的矩陣和向量操作…

匯編程序:將字符串中所有大寫字符轉為小寫

【任務】 編寫程序,將數據區中定義的以0作為結束符的一個字符串中所有的大寫字符,全部轉換為小寫。 【參考解答】 assume cs:cseg, ds:dseg, ss:sseg sseg segment stackdw 100h dup (?) sseg ends dseg segmentdb YanTai123University, 0 d…

從零開始編寫自己的C#框架(1)——前言

記得十五年前自學編程時,拿著C語言厚厚的書,想要上機都不知道要用什么編譯器來執行書中的例子。十二年前在大學自學ASP時,由于身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館里拼命的啃書。而再后來也差不多&#xff0…

Bash內置命令

Bash有很多內置命令,因為這些命令是內置的,因此bash不需要在磁盤上為它們定位,執行速度更快。 1)列出所有內置命令列表$enable 2)關閉內置命令test$enable -n test 3)打開內置命令test$enable test 4&…

postman調用webservice接口_接口對前后端和測試的意義

1.什么是接口?接口測試主要用于外部系統與系統之間以及內部各個子系統之間的交互點,定義特定的交互點,然后通過這些交互點來,通過一些特殊的規則也就是協議,來進行數據之間的交互。2.接口都有哪些類型?接口…

基于代數距離的橢圓擬合

問題 給定離散點集Xi(xi,yi),i1,2,...NX_i(x_i,y_i) ,i1,2,...NXi?(xi?,yi?),i1,2,...N,我們希望找到誤差最小的橢圓去擬合這些離散點。 方法 由于橢圓的形式可以給定, 自然我們將使用最小二乘法來求解橢圓。主要依據論文《Direct least squares f…

Java與C語言比較(Java參考書中摘錄)

C語言為面向過程的編程語言,Java為面向對象的編程語言。 在面向過程的編程語言(如C語言)中,編程一般面向操作,編程單位是函數(在Java中函數稱為方法)。 在Java中,編程單位是類。最終實例化(即創建)這些類而得到對象,屬…

Android調試技巧之Eclipse行號和Logcat

很多初入Android的開發者可能會發現經常遇到Force Close或ANR這樣的問題,一般我們通過Android系統的錯誤日志打印工具Logcat可以看到出錯的內容,今天一起來說下如何通過 Eclipse行號和Logcat捕捉出錯點,我們遇到錯誤可以首先在Eclipse的DDMS中…

第六章 產權市場

《市場經濟概論》(6)產權市場一 第六章 產權市場 產權是指人們對于某種資產所擁有的所有權、占有權、支配權、使用權。產權市場是指人們對于某種資產所擁有的所有權、占有權、支配權、使用權進行有償轉讓的場所領域及其有關各方面相互關系的總和。在過去…

js打開本地文件夾_vue + ArcGIS 地圖應用系列一:arcgis api本地部署(開發環境)

1. 下載 ArcGIS API for JavaScript 官網地址: https://developers.arcgis.com/javascript/3/ 下載地址:http://links.esri.com/javascript-api/latest-download需要穩定的網絡環境注冊賬號后才可以下載下載完成后解壓文件,文件比較大可能需要…

基于幾何距離的橢圓擬合

問題 給定離散點集Xi(xi,yi)X_i(x_i,y_i)Xi?(xi?,yi?),我們希望找到最好的橢圓去擬合這些離散點。 方法 通常我們使用最小二乘法求解如下的最優化問題: Min∑i1Nf(xi,E)2Min \sum_{i1}^N f(x_i,E)^2 Mini1∑N?f(xi?,E)2 這里f(xi,E)f(x_i,E)f(xi…

Generate Parentheses

題目 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "()()()" 方法…

ReportViewer 2010 打印預覽,用鼠標快速切換顯示比例時報錯:存儲空間不足,不能處理此命令...

CreateCompatibleDIB 存儲空間不足 無法處理此命令 安裝 ReportViewer 2010 sp1 即可。轉載于:https://www.cnblogs.com/runliuv/p/3640856.html

貪心/二分查找 BestCoder Round #43 1002 pog loves szh II

題目傳送門 1 /*2 貪心/二分查找:首先對ai%p,然后sort,這樣的話就有序能使用二分查找。貪心的思想是每次找到一個aj使得和為p-1(如果有的話)3 當然有可能兩個數和超過p,那么an的值最優,每次還要和…

nohup命令輸出日志_逼格高又實用的Linux高級命令,開發運維都要懂

在運維的坑里摸爬滾打好幾年了,我還記得我剛開始的時候,我只會使用一些簡單的命令,寫腳本的時候,也是要多簡單有多簡單,所以有時候寫出來的腳本又長又臭,像一些高級點的命令,比如說Xargs 命令、…

JavaScript中OOP——面向對象中的繼承/閉包

前 言 OOP JavaScript中OOP——>>>面向對象中的繼承/閉包 1.1面向對象的概念 使用一個子類繼承另一個父類,子類可以自動擁有父類的屬性和方法。>>> 繼承的兩方,發生在兩個類之間。1.2JS模擬實現繼承的三種方式: 首先&am…

js常用字符串函數

這些東西是以前整理的,放到這里,有需要的可以看看~挺全的~ /** * anchor()方法 * 在對象中的指定文本兩端放置一個有Name屬性的HTML錨點 * strVariable.anchor(anchorString) anchorString為錨點名稱 * 它本身不會檢查其他的ahchor錨點是否有name指…

c++11中的智能指針

在C11中有四種智能指針,auto_ptr,shared-ptr,unique_ptr和weak-ptr,其中auto_ptr有許多不足之處,在C11中已經建議廢棄使用。 1. shared_ptr std::shared_ptr智能指針可以通過共享指向對象的所有權,從而實現…

ubuntu14.04設置靜態IP

啊,最近懶惰了,好久沒有寫博客了。 一般機器啟動的時候會自動從DHCP服務器上面獲取動態IP地址,這是一件很方便的事情,可以不用手動設置網絡相關的蠶參數,但是有時候還是需要機器固定IP地址的。 第一步,編輯…

高中學歷python培訓靠譜嗎_高中學歷學完Python就能干人工智能?

最近Python大熱,主要是人工智能的熱度,昨天后院活動部介紹了一位女網友為男朋友選擇Java還是Python,大量的程序員熱議,也有人詢問如何學習Python,比如這位網友詢問高中學歷學習Python是不是就能干人工智能。兄弟&#…