将二维list某列组成新的list
# encoding: utf-8
import decimal import requests
import logging
import logging.config
import random
import os
import yaml
import time
import threading
import re
import datetime
import json
from collections import deque class TianShu(object): def __init__(self):
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36', 'Connection': 'close'}
self.gx12358 = [] def get_stock_code(self,a_type):
"""
获取两市股票代码
:param a_type: sh or sz
:return: stock_code
"""
#url = 'http://stock.gtimg.cn/data/index.php?appn=rank&t=rankash/chr&p=1&o=0&l=40&v=list_data'
url = 'http://stock.gtimg.cn/data/index.php'
params = {
'appn': 'rank',
't': 'ranka{}/chr'.format(a_type),
'p': 1,
'o': 0,
'l': 3000,
'v': 'list_data'
}
logging.info('url:%s \t params:%s', url, params)
res = requests.get(url, params=params, headers=self.headers)
res_str = res.content.decode('unicode_escape').rstrip()
#logging.info('response:%s:',res_str)
res_str_list = res_str[res_str.index("data:'") + 6:res_str.index("'}")].split(',')
logging.info(res_str_list)
return res_str_list def get_stock_daily_data(self,stock_code):
"""
获取日线数据
:param stock_code: 代码
:return: k线数据
"""
#url = 'http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_dayqfq¶m=sh601857,day,,,320,qfq&r=0.44412021827221704'
url = 'http://web.ifzq.gtimg.cn/appstock/app/fqkline/get'
params = {
'_var':'kline_dayqfq',
'param': '{},day,,,320,qfq'.format(stock_code),
'r': '0.1700474{}'.format("".join(random.choice("") for i in range(10)))
}
#logging.info('url:%s \t params:%s',url,params)
res = requests.get(url,params=params,headers=self.headers)
res_str = res.content.decode('utf-8')
#logging.info('response:%s:',res_str)
res_dict = eval(res_str.split('=')[1])
#logging.info('res_dict:%s:', res_dict)
daily_data = []
if 'qfqday' in res_dict['data'][stock_code]:
daily_data = list(res_dict['data'][stock_code]['qfqday'])
elif 'day' in res_dict['data'][stock_code]:
daily_data = list(res_dict['data'][stock_code]['day'])
else :
pass
#logging.info(daily_data)
# if self.is_tianshu(daily_data):
# self.gx12358.append(stock_code)
return daily_data def is_tianshu(self,stock_code,daily_data,days=39,zhenghu=26,mdays=180):
if len(daily_data) <= 180:
logging.info('%s数据太少,跳过。。。'%stock_code)
return
#320天收盘价列表
ls = [decimal.Decimal(x[2]) for x in daily_data]
#days天内收盘价列表,默认39日
lns = ls[-days:]
#mdays天内收盘价列表,默认180日
lms = ls[-mdays:]
#days天内最低收盘价,默认39日最低收盘价
min_n_s = min(lns)
#days天内最高收盘价,默认39日最高收盘价
max_n_s = max(lns)
#days天内 最高收-最低收
a1 = max_n_s - min_n_s
#days天内 (最高收-最低收)/ 最低收 * 100
a2= a1/min_n_s * decimal.Decimal(100)
#mdays收盘价均线,默认180日均线
mam = sum(lms)/len(lms)
#默认 (最高收-最低收)/ 最低收 * 100 < 26 , 39日内最低收盘价 > 180日收盘价平均值 ,收盘价>4 ,当前价格在39日内最低收盘价+-1%
if a2 < decimal.Decimal(zhenghu) and min_n_s > mam > 4 and min_n_s * decimal.Decimal(0.99) < ls[-1] <min_n_s * decimal.Decimal(1.01):
logging.info('%s符合天枢结构'%stock_code)
self.gx12358.append(stock_code) if __name__ == '__main__':
path = 'logging.yaml'
value = os.getenv('LOG_CFG', None)
if value:
path = value
if os.path.exists(path):
with open(path, "r") as f:
config = yaml.load(f)
logging.config.dictConfig(config)
else:
print('log config file not found!') ts = TianShu()
for i in ts.get_stock_code('sh') + ts.get_stock_code('sz'):
ts.is_tianshu(i,ts.get_stock_daily_data(i))
logging.info(ts.gx12358)
将二维list某列组成新的list的更多相关文章
- C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why?
C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why? 简单粗暴的答案:存在Cache机制! 稍微啰嗦一点:CPU访问内存(读/写,遍历数组的话主要是读) ...
- C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件
阅读本文可首先参考: C++学习笔记之输入.输出和文件 测试数据: /*读取txt文件到二维数组*/ #include <iostream> #include <fstream> ...
- python 二维list取列
b = [i[0] for i in a] # 从a中的每一行取第一个元素.
- 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。
//编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...
- java学习-zxing生成二维码矩阵的简单例子
这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...
- js二维数组与字符串
1. 二维数组:数组中的元素,又引用了另一个数组对象 何时使用:只要保存横行竖列的数据, 具有上下级包含关系的数据, 创建二维数组: 1. var arr=[]; col arr[0]=[" ...
- 动态创建二维vector数组 C和C++ 及指针与引用的区别
二维vectorvector<vector <int> > ivec(m ,vector<int>(n)); //m*n的二维vector 动态创建m*n的二 ...
- Java二维码登录流程实现(包含短地址生成,含部分代码)
近年来,二维码的使用越来越风生水起,笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活,所以研究了一下这一套机制,并用代码实现了整个流程,接下来就和大家聊聊二维码登录及的那些事儿. 二维码原理 二 ...
- C语言动态生成二维数组
# 动态创建二维数组示例 #include "stdlib.h" #include "stdio.h" #include <malloc.h> in ...
随机推荐
- Java拦截器
拦截器,主要用于拦截前端请求,常用于登录检查. 下面是演示使用拦截器拦截未登录的用户访问需要登录的模块情景,使用配置方式实现和注解方式实现代码: 配置方式: 1.web.xml中配置监听器,对于所有的 ...
- linux硬件数据
Linux 文件详解 lrwxrwxrwx root root 8月 bin -> usr/bin //二进制目录 存放了许多GNU用户极工具 dr-xr-xr-x. root root 8月 ...
- Bash 5.0 发布及其新功能
导读 邮件列表证实最近发布了 Bash-5.0.而且,令人兴奋的是它还有新的功能和变量.如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 Bash 的第五个主要版本. 第五个版本侧重于新的 ...
- win10系统同时安装python2.7和python3.6
我是先在本机上安装的python3.6.5,因为要学习一个框架,但是这个框架只支持python2,所以我又安装了python2.7.15,并且配置到系统环境变量 环境变量配置了python3.6.5的 ...
- 使用tree命令导出文件夹/文件的目录树
前提:己安装扩展: 介绍: TREE [drive:][path] [/F] [/A] /F 显示每个文件夹中文件的名称.(带扩展名) /A 使用 ASCII 字符,而不使用扩展字符. t ...
- 二叉搜索树(BST)详解
前言:平衡树的前置知识吧 二叉搜索树的定义: 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根节点的值: (2)若右子树不空,则右子 ...
- 【CF446C】DZY Loves Fibonacci Numbers (线段树 + 斐波那契数列)
Description 看题戳我 给你一个序列,要求支持区间加斐波那契数列和区间求和.\(~n \leq 3 \times 10 ^ 5, ~fib_1 = fib_2 = 1~\). Solut ...
- python3 特性
切片: 就是可以取到对象中任意位置的元素,[start:end:interval]:字符串.列表.元组可切片,字典.set()不可: L[:] #复制原L L[:10] #前十个 L[-10:] #后 ...
- 【BZOJ4891】[TJOI2017]龙舟(Pollard_rho)
[BZOJ4891][TJOI2017]龙舟(Pollard_rho) 题面 BZOJ 洛谷 题解 看了半天题....就是让你求\(\frac{b}{a}\)在模\(M\)意义下的值... 首先把\( ...
- 【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)
[BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; ...