導航:首頁 > 數據行情 > python編寫股票監控app

python編寫股票監控app

發布時間:2022-04-21 21:01:07

A. 怎麼在我的電腦上監控伺服器上運行的一個用Python寫的股票自動化交易的文件運行的各種參數和運行情況

http://www.supervisord.org/

B. 如何在使用python開發app

用Python寫安卓APP肯定不是最好的選擇,但是肯定是一個很偷懶的選擇,而且實在不想學習Java,再者,就編程而言已經會的就Python與Golang(註:Python,Golang水平都一般),那麼久Google了一下Python寫安卓的APP的可能性,還真行。既然要寫個APP,那麼總得要有個想法吧。其實筆者想做兩個APP來著,一個是自己寫著好玩的,一個是關於運維的。關於運維的APP,設計應該如下如果覺得可行的話,評論留言一下你覺得應該寫進這個APP的運維常用命令吧^_^,筆者暫時想到的是top,free-m,df–h,uptime,iftop,iotop,如果有什麼好的想法就狠狠的砸過來吧,筆者到時應該也會把這個寫成一個項目放到github上,大家一起用嘛,開源才是王道,哈哈。好吧,進入正題。我們使用kivy開發安卓APP,Kivy是一套專門用於跨平台快速應用開發的開源框架,使用Python和Cython編寫,對於多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚艷的NUI框架。因為跨平台的,所以只寫一遍代碼,就可以同時生成安卓及IOS的APP,很酷吧。本文會帶大家寫一個Helloworld並瞧一瞧Python版的2048的代碼

C. 如何監控app是否在最上層 用python實現

你好,我覺得可以考慮通過獲取當前最上層活動窗口的名字來實現。
使用模塊win32gui
win32gui.GetForegroundWindow()可以獲取最上層活動窗口的句柄
判斷獲取的句柄是不是你需要監控的app就好了

D. 有python開發的監控工具嗎

在公司里做的一個介面系統,主要是對接第三方的系統介面,所以,這個系統里會和很多其他公司的項目交互。隨之而來一個很蛋疼的問題,這么多公司的介面,不同公司介面的穩定性差別很大,訪問量大的時候,有的不怎麼行的介面就各種出錯了。
這個介面系統剛剛開發不久,整個系統中,處於比較邊緣的位置,不像其他項目,有日誌庫,還有簡訊告警,一旦出問題,很多情況下都是用戶反饋回來,所以,我的想法是,拿起python,為這個項目寫一個監控。如果在調用某個第三方介面的過程中,大量出錯了,說明這個介面有有問題了,就可以更快的採取措施。
項目的也是有日誌庫的,所有的info,error日誌都是每隔一分鍾掃描入庫,日誌庫是用的mysql,表裡有幾個特別重要的欄位:
有日誌庫,就不用自己去線上環境掃日誌分析了,直接從日誌庫入手。由於日誌庫在線上時每隔1分鍾掃,那我就去日誌庫每隔2分鍾掃一次,如果掃到有一定數量的error日誌就報警,如果只有一兩條錯誤就可以無視了,也就是短時間爆發大量錯誤日誌,就可以斷定系統有問題了。報警方式就用發送郵件,所以,需要做下面幾件事情:
1. 操作MySql。
2. 發送郵件。
3. 定時任務。
4. 日誌。
5. 運行腳本。
明確了以上幾件事情,就可以動手了。
操作資料庫
使用MySQLdb這個驅動,直接操作資料庫,主要就是查詢操作。
獲取資料庫的連接:

def get_con():
host = "127.0.0.1"
port = 3306
logsdb = "logsdb"
user = "root"
password = "never tell you"
con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")
return con

從日誌庫里獲取數據,獲取當前時間之前2分鍾的數據,首先,根據當前時間進行計算一下時間。之前,計算有問題,現在已經修改。

def calculate_time():

now = time.mktime(datetime.now().timetuple())-60*2
result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
return result

然後,根據時間和日誌級別去日誌庫查詢數據

def get_data():
select_time = calculate_time()
logger.info("select time:"+select_time)
sql = "select file_name,message from logsdb.app_logs_record " \
"where log_time >"+"'"+select_time+"'" \
"and level="+"'ERROR'" \
"order by log_time desc"
conn = get_con()

cursor = conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()

cursor.close()
conn.close()

return results

發送郵件
使用python發送郵件比較簡單,使用標准庫smtplib就可以
這里使用163郵箱進行發送,你可以使用其他郵箱或者企業郵箱都行,不過host和port要設置正確。

def send_email(content):

sender = "[email protected]"
receiver = ["[email protected]", "[email protected]"]
host = 'smtp.163.com'
port = 465
msg = MIMEText(content)
msg['From'] = "[email protected]"
msg['To'] = "[email protected],[email protected]"
msg['Subject'] = "system error warning"

try:
smtp = smtplib.SMTP_SSL(host, port)
smtp.login(sender, '123456')
smtp.sendmail(sender, receiver, msg.as_string())
logger.info("send email success")
except Exception, e:
logger.error(e)

定時任務
使用一個單獨的線程,每2分鍾掃描一次,如果ERROR級別的日誌條數超過5條,就發郵件通知。

def task():
while True:
logger.info("monitor running")

results = get_data()
if results is not None and len(results) > 5:
content = "recharge error:"
logger.info("a lot of error,so send mail")
for r in results:
content += r[1]+'\n'
send_email(content)
sleep(2*60)

日誌
為這個小小的腳本配置一下日誌log.py,讓日誌可以輸出到文件和控制台中。
# coding=utf-8
import logging

logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)

fh = logging.FileHandler('monitor.log')
fh.setLevel(logging.INFO)

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)

logger.addHandler(fh)
logger.addHandler(ch)

所以,最後,這個監控小程序就是這樣的app_monitor.py
# coding=utf-8
import threading
import MySQLdb
from datetime import datetime
import time
import smtplib
from email.mime.text import MIMEText
from log import logger

def get_con():
host = "127.0.0.1"
port = 3306
logsdb = "logsdb"
user = "root"
password = "never tell you"
con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")
return con

def calculate_time():

now = time.mktime(datetime.now().timetuple())-60*2
result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
return result

def get_data():
select_time = calculate_time()
logger.info("select time:"+select_time)
sql = "select file_name,message from logsdb.app_logs_record " \
"where log_time >"+"'"+select_time+"'" \
"and level="+"'ERROR'" \
"order by log_time desc"
conn = get_con()

cursor = conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()

cursor.close()
conn.close()

return results

def send_email(content):

sender = "[email protected]"
receiver = ["[email protected]", "[email protected]"]
host = 'smtp.163.com'
port = 465
msg = MIMEText(content)
msg['From'] = "[email protected]"
msg['To'] = "[email protected],[email protected]"
msg['Subject'] = "system error warning"

try:
smtp = smtplib.SMTP_SSL(host, port)
smtp.login(sender, '123456')
smtp.sendmail(sender, receiver, msg.as_string())
logger.info("send email success")
except Exception, e:
logger.error(e)

def task():
while True:
logger.info("monitor running")
results = get_data()
if results is not None and len(results) > 5:
content = "recharge error:"
logger.info("a lot of error,so send mail")
for r in results:
content += r[1]+'\n'
send_email(content)
time.sleep(2*60)

def run_monitor():
monitor = threading.Thread(target=task)
monitor.start()

if __name__ == "__main__":
run_monitor()

運行腳本
腳本在伺服器上運行,使用supervisor進行管理。
在伺服器(centos6)上安裝supervisor,然後在/etc/supervisor.conf中加入一下配置:

復制代碼代碼如下:
[program:app-monitor]
command = python /root/monitor/app_monitor.py
directory = /root/monitor
user = root

然後在終端中運行supervisord啟動supervisor。
在終端中運行supervisorctl,進入shell,運行status查看腳本的運行狀態。
總結
這個小監控思路很清晰,還可以繼續修改,比如:監控特定的介面,發送簡訊通知等等。
因為有日誌庫,就少了去線上正式環境掃描日誌的麻煩,所以,如果沒有日誌庫,就要自己上線上環境掃描,在正式線上環境一定要小心哇~

E. python編程這門科目是用來編寫股票指標和選股器的嗎

python是一門語言補丁,最大的優勢在於擁有眾多的包,很多事情都可以做。而在數據分析領域提供了pandas,numpy,matplotlib等進行數據可視化,用於股票,自然也是可以的

F. 怎樣用 Python 寫一個股票自動交易的程序

股票自動交易助手提供了一個 Python 自動下單介面,參考代碼

#股票自動交易助手Python自動下單使用例子
#把此腳本和StockOrderApi.pyOrder.dll放到你自己編寫的腳本同一目錄

fromStockOrderApiimport*

#買入測試
#Buy(u"600000",100,0,1,0)

#賣出測試,是持倉股才會有動作
#Sell(u"000100",100,0,1,0)

#賬戶信息
print("股票自動交易介面測試")
print("賬戶信息")
print("--------------------------------")

arrAccountInfo=["總資產","可用資金","持倉總市值","總盈利金額","持倉數量"];
foriinrange(0,len(arrAccountInfo)):
value=GetAccountInfo(u"",i,0)
print("%s%f"%(arrAccountInfo[i],value))

print("--------------------------------")
print("")

print("股票持倉")
print("--------------------------------")
#取出所有的持倉股票代碼,結果以','隔開的
allStockCode=GetAllPositionCode(0)
allStockCodeArray=allStockCode.split(',')
foriinrange(0,len(allStockCodeArray)):
vol=GetPosInfo(allStockCodeArray[i],0,0)
changeP=GetPosInfo(allStockCodeArray[i],4,0)
print("%s%d%.2f%%"%(allStockCodeArray[i],vol,changeP))

print("--------------------------------")

G. python可以開發app嗎

python可以開發app嗎?
python是可以開發app的,例如我們可以使用kivy開發安卓APP,Kivy是一套專門用於跨平台快速應用開發的開源框架,使用Python和Cython編寫,對於多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚艷的NUI框架。
Kivy的主要架構由Kivy組織開發,並有Python用於Android,Kivy iOS和其它許多函式庫被使用在所有平台。在2012年,Kivy從Python軟體基金會獲得$5000美元補助,用於移植Kivy到Python 3.3。Kivy也支援由Bountysource贊助的樹莓派。
其架構包括所有建造應用程序的元素,例如:
支援許多種輸入,例如滑鼠,鍵盤、觸控式使用者界面(TUIO)和特定操作系統的多重觸控事件,只採用OpenGL ES 2的圖形函式庫,且根基於向量緩沖物件(Vertex Buffer Object)和著色器,支援多點觸控的龐大控制項,一個中間語言(Kv)用來簡化客制控制項的設計。
Kivy改良了PyMT專案,並且推薦給新的專案採用。
相關推薦:《Python教程》以上就是小編分享的關於python可以開發app嗎的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

H. 怎樣用 Python 寫一個股票自動交易的程序

I. 怎樣用 Python 寫一個股票自動買賣的程序

J. 怎樣用Python寫一個簡單的監控系統

首先資料庫建表
建立一個資料庫「falcon」,建表語句如下:
CREATE TABLE `stat` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`host` varchar(256) DEFAULT NULL,
`mem_free` int(11) DEFAULT NULL,
`mem_usage` int(11) DEFAULT NULL,
`mem_total` int(11) DEFAULT NULL,
`load_avg` varchar(128) DEFAULT NULL,
`time` bigint(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `host` (`host`(255))
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
首先我們設計一個web服務,實現如下功能:
1. 完成監控頁面展示
2. 接受POST提交上來的數據
3. 提供json數據GET介面
目錄結構如下:
web
├── flask_web.py
└── templates
└── mon.html

flask_web.py

import MySQLdb as mysql
import json
from flask import Flask, request, render_template
app = Flask(__name__)
db = mysql.connect(user="reboot", passwd="reboot123", \
db="falcon", charset="utf8")
db.autocommit(True)
c = db.cursor()

@app.route("/", methods=["GET", "POST"])
def hello():
sql = ""
if request.method == "POST":
data = request.json
try:
sql
= "INSERT INTO `stat`
(`host`,`mem_free`,`mem_usage`,`mem_total`,`load_avg`,`time`)
VALUES('%s', '%d', '%d', '%d', '%s', '%d')" % (data['Host'],
data['MemFree'], data['MemUsage'], data['MemTotal'], data['LoadAvg'],
int(data['Time']))
ret = c.execute(sql)
except mysql.IntegrityError:
pass
return "OK"
else:
return render_template("mon.html")

@app.route("/data", methods=["GET"])
def getdata():
c.execute("SELECT `time`,`mem_usage` FROM `stat`")
ones = [[i[0]*1000, i[1]] for i in c.fetchall()]
return "%s(%s);" % (request.args.get('callback'), json.mps(ones))

if __name__ == "__main__":
app.run(host="0.0.0.0", port=8888, debug=True)

這個template頁面是我抄的highstock的示例,mon.html
簡單起見我們只展示mem_usage信息到頁面上
<title>51reboot.com</title>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highstock Example</title>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<style type="text/css">
${demo.css}
</style>
<script type="text/javascript">
$(function () {
$.getJSON('/data?callback=?', function (data) {

// Create the chart
$('#container').highcharts('StockChart', {

rangeSelector: {
inputEnabled: $('#container').width() > 480,
selected: 1
},

title: {
text: '51Reboot.com'
},

series: [{
name: '51Reboot.com',
data: data,
type: 'spline',
tooltip: {
valueDecimals: 2
}
}]
});
});
});
</script>
</head>
<body>
<script src="http://cdnjs.cloudflare.com/ajax/libs/highstock/2.0.4/highstock.js"></script>
<script src="http://code.highcharts.com/moles/exporting.js"></script>

<div id="container" style="height: 400px"></div>
</body>
</html>

web展示頁面完成了,運行起來:
Python flask_web.py 監聽在8888埠上
我們需要做一個Agent來採集數據,並上傳資料庫
moniItems.py
#!/usr/bin/env python
import inspect
import time
import urllib, urllib2
import json
import socket

class mon:
def __init__(self):
self.data = {}

def getTime(self):
return str(int(time.time()) + 8 * 3600)

def getHost(self):
return socket.gethostname()

def getLoadAvg(self):
with open('/proc/loadavg') as load_open:
a = load_open.read().split()[:3]
return ','.join(a)

def getMemTotal(self):
with open('/proc/meminfo') as mem_open:
a = int(mem_open.readline().split()[1])
return a / 1024

def getMemUsage(self, noBufferCache=True):
if noBufferCache:
with open('/proc/meminfo') as mem_open:
T = int(mem_open.readline().split()[1])
F = int(mem_open.readline().split()[1])
B = int(mem_open.readline().split()[1])
C = int(mem_open.readline().split()[1])
return (T-F-B-C)/1024
else:
with open('/proc/meminfo') as mem_open:
a = int(mem_open.readline().split()[1]) - int(mem_open.readline().split()[1])
return a / 1024

def getMemFree(self, noBufferCache=True):
if noBufferCache:
with open('/proc/meminfo') as mem_open:
T = int(mem_open.readline().split()[1])
F = int(mem_open.readline().split()[1])
B = int(mem_open.readline().split()[1])
C = int(mem_open.readline().split()[1])
return (F+B+C)/1024
else:
with open('/proc/meminfo') as mem_open:
mem_open.readline()
a = int(mem_open.readline().split()[1])
return a / 1024

def runAllGet(self):
#自動獲取mon類里的所有getXXX方法,用XXX作為key,getXXX()的返回值作為value,構造字典
for fun in inspect.getmembers(self, predicate=inspect.ismethod):
if fun[0][:3] == 'get':
self.data[fun[0][3:]] = fun[1]()
return self.data

if __name__ == "__main__":
while True:
m = mon()
data = m.runAllGet()
print data
req = urllib2.Request("http://51reboot.com:8888", json.mps(data), {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
print response
f.close()
time.sleep(60)

nohup python moniItems.py >/dev/null 2>&1 & 運行起來

閱讀全文

與python編寫股票監控app相關的資料

熱點內容
股票基金數據分析軟體 瀏覽:710
股票質押資金不得用於買入股票 瀏覽:293
中國電信股票增值權方案 瀏覽:74
深度分析股票數據 瀏覽:805
中國智能健康股票代碼 瀏覽:779
2021中國石化股票 瀏覽:139
維科技術股票的歷史行情 瀏覽:665
股票交易當天資金能轉出嗎 瀏覽:711
通信達軟體怎麼刪除股票 瀏覽:852
2817年4月股票交易時間 瀏覽:961
五糧液股票10年走勢分析 瀏覽:109
股票怎麼看主力資金出逃 瀏覽:630
股票銀禧科技股價 瀏覽:960
股票重組大漲的股票 瀏覽:488
300392股票歷史交易數據 瀏覽:896
股票主力是怎麼賺錢 瀏覽:152
深交所股票買賣時間 瀏覽:170
香港股票做空的操作 瀏覽:934
香港股票拉升 瀏覽:282
創業板股票會漲停么 瀏覽:697