python 3 过滤股票

参考某个博客,代码不全,地址找不到了见谅,加了些自己弄的算法。

备忘

#-*- coding: utf-8 -*-
import os, re
import time

def filefilter(compiles =‘strs‘,road=‘str‘):
‘‘‘compiles为正则匹配字,road绝对路径‘‘‘
filesobj = os.walk(road)
for root,dirs,files in filesobj:
filess = files
test = re.compile(compiles,re.IGNORECASE)
filesout = list(filter(test.search,filess)) 
return filesout
def LLV(list1=‘list‘):
min1=min(list1[-1][4],list1[-2][4],list1[-3][4],list1[-4][4])
return float(min1)
def HHV(list1=‘list‘):
max1=max(list1[-1][5],list1[-2][5],list1[-3][5],list1[-4][5])
return float(max1)
def count1(list1=‘list‘):
cn =0
for i in list(range(-4,0)):
if float(list1[i][4])>float(list1[i][1]):
cn+=1
return float(cn)
def twinpost(li=‘list‘):
"""倍量柱"""
if len(li) == 5: 
#if float(li[-4][5]) >= float(li[-5][5])*1.9 and OHLC(li[-4]) >= OHLC(li[-5]): 
if float(li[-4][5]) >= float(li[-5][5])*1.9 and float(li[-4][4])>=float(li[-4][1]) and LLV(li)>float(li[-4][3]) and HHV(li)<=float(li[-4][5]) and count1(li)==4 : 
return 1
else:
return 0
else:
#print ‘twinpost data error‘
return 0

def goldpost(lis=‘list‘):
"""黄金柱"""
if float(lis[-4][4]) > float(lis[-4][1]):
#收盘价大于开盘价,正常阳线,喇叭口或者鹤嘴,经测试鹤嘴不好用
if ((closeavg3(lis)/float(lis[-4][4])) > 1.0 and (postavg3(lis) < float(lis[-4][5]))):
return 1
else:
return 0
else:#假阴真阳
if ((closeavg3(lis)/float(lis[-4][1])) > 1.0 and (postavg3(lis) < float(lis[-4][5]))):
return 1
else:
return 0
def postavg3(list1=‘list‘):
sum1=0
for l in list1:
sum1+=float(l[1])
return float(sum1/len(list1))
def closeavg3(list1=‘list‘):
sum2=0
for l in list1:
sum2+=float(l[4])
return float(sum2/len(list1))
class SingleMapping3:#使用CsvRead4类
‘‘‘N天内某个股票的黄金柱列表‘‘‘
def __init__(self,filename,nem=‘int‘):
self.name=filename
self.nemb=nem
self.csvfile=CsvRead4(self.name)
#self.mapping()
def goldPosts(self,nemb=0):
data = self.csvfile.reading(nemb) 
if data != []: 
data2 = [data[-4][1],data[-4][4],min(data[-3][3],data[-2][3],data[-1][3])]
data2.sort()
else:
return [1,[]]
if twinpost(data) and goldpost(data):
return [self.csvfile.DATE,data2]
else:
return [1,[]]
def mapping(self):
li=[]
for n in range(self.nemb):
li.append(self.goldPosts(n))
lis = []
for m in li:
if type(m[0]) == str:
lis.append(m)
return [self.name,lis]
class CsvRead4:
def __init__(self,filename=‘strs‘):
global DIRALL
DIRALL="C:\\Users\zyh\Desktop\demo\\gp\\data" 
self.filename=DIRALL + ‘\\‘ + filename
self.DATE=‘‘
self.data=[]
self.read()

def read(self):
csv = open(self.filename,‘r‘)
csvdata = csv.readlines()
csv.close()
data1=[]
for n in range(len(csvdata)):
data1.append(csvdata[n].split(‘\n‘))
data2=[]
for n in range(len(data1)):
data2.append(data1[n][0].split(‘\t‘))
data3=data2[:-1]
self.data=data3

def reading(self,nem=0):
if nem==0:
if len(self.data) >= 7:
self.DATE = self.data[-4][0]
return self.data[-5:]
else:
return []
else:
data4=self.data[:-nem]
if len(data4) >= 7:
self.DATE = data4[-4][0]
return data4[-5:]
else:
return []

def main():
"main function"
print(‘begin time ‘+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
FilterFile="C:\\Users\zyh\Desktop\demo\\gp\\data" 
fi=filefilter(‘.csv‘,FilterFile)
for ll in fi:
a=SingleMapping3(ll,150)
codenem,lis=a.mapping()
if len(lis)>0:
print(codenem)
print (‘共‘+str(len(lis))+‘个黄金柱‘)
for l in lis: 
if l[0]>‘06/10/2015‘:
print(l)
print(‘end time ‘+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
if __name__ == ‘__main__‘:
main()

时间: 2024-10-29 18:32:42

python 3 过滤股票的相关文章

简单的python协同过滤程序

1.使用Visual Studio 2012 2.下载 ModernUI.Templates 安装 给大家一个下载连接http://pan.baidu.com/s/1jGfxDlk 3.选择Modetrn UI WPF Appliction 4.打开MainWindow.xaml 考虑到平时菜单都是动态的从数据库读取出来的所以要由后台生成菜单 先把界面上的菜单删除掉 将整个<mui:ModernWindow.MenuLinkGroups>...</mui:ModernWindow.Men

Python+Selenium实现股票板块数据模拟抓取

selenium 是一个web的自动化测试工具,支持多平台:windows.linux.MAC ,支持多浏览器:ie.ff.safari.opera.chrome,支持多语言:例如C.JAVA.Python等,支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能. 虽然Selenium本来是应用于自动化测试领域,但是因为Selenium可以实现Web交互操作,所以可以利用Selenium模拟Web抓取一些常规方式不能抓取的数据,例如一些页面生成后才会动态加载的数

Python爬虫筛选股票

最近开了个炒股账户,所以用Python写了个脚本筛选出2015年1季度(开盘价与收盘价平均值)到现在有盈利但盈利少于20%的低价股(价格可定制).详见代码.Python为3.4版本. <span style="font-size:14px;">import http.cookiejar import urllib.request import json import re from bs4 import BeautifulSoup def getOpener(head):

python实时过滤日志脚本

大神指导作品: #!/usr/bin/python#coding:utf8 from functools import wrapsfrom time import sleepimport os RESTART='pm2 restart ios-push' # coroutine 先要用 next 语句调用一次def coroutine(fn):    @wraps(fn)    def wrapper(*args,**kwargs):        ret=fn(*args,**kwargs) 

python编写过滤指定字符的文本

#!/usr/bin/python #coding:utf-8 import os  import string import sys, getopt def Grep_start_char(Mpath, char):     if os.path.exists(Mpath):         GrepFile = file(Mpath)     else:         return "No such file or directory"     try:         for 

python 获取yahoo股票数据

import pandas as pd from pandas_datareader import data import datetime start = datetime.datetime(2016,1,1) end = datetime.date.today() apple = data.DataReader("AAPL", "yahoo", start, end) #type(apple) apple.head() Date         Open    

Python脚本:过滤取指定链接标题是否含有指定文字,并将其输出

#coding=utf-8import requestsimport threadingimport timeimport os def check(i,total): global eu #os.system("title Spider,Current threads: %d,URLs left: %d,URLs exists:%d" %(threading.active_count(),total,eu)) try: r = requests.get(i+'/',timeout=1

Python: 序列: 过滤序列元素

问题: 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 answer: eg1:列表推导 最简单的过滤序列元素的方法就是使用列表推导.比如:>>> mylist = [1, 4, -5, 10, -7, 2, 3, -1]>>> [n for n in mylist if n > 0][1, 4, 10, 2, 3]>>> [n for n in mylist if n < 0][-5, -7, -1] eg2:生成器表达

Python 字符串过滤

需求: str1 = " """<div class="m_wrap clearfix"><ul class="clearfix"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><b