python选股策略,金叉,死叉,绿色云
取4个列表值,hongda,lvxiao,hongxiao,lvda。有两条线,a绿线MA20,b红线MA60。当线在a>b金叉到a< b死叉(绿色云)区间时,取a的最大值添加到(lvda)里,b的最小值添加到( hongxiao)里。当线在a< b死叉到a当a[-1]>lvda[-1] and b[-1]>hongda[-1]:print(有个提醒)当a[-1]print(有个提醒)...
·
取4个列表值,hongda,lvxiao,hongxiao,lvda。
有两条线,a绿线MA20,b红线MA60。
当线在a>b金叉到a< b死叉(绿色云)区间时,取a的最大值添加到(lvda)里,b的最小值添加到( hongxiao)里。
当线在a< b死叉到a
当a[-1]>lvda[-1] and b[-1]>hongda[-1]:
print(有个提醒)
当a[-1]
print(有个提醒)
# -*- coding: UTF-8 -*-
"""
@项目名称:python选股策略.py
@作 者:陆地起飞全靠浪
@创建日期:2022-08-04-15:42
"""
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from itertools import groupby
# plt.rcParams["font.sans-serif"] = ["/sdb1/数据/知识/字体/fzztk/4091_方正楷体_GBK.TTF"] # 设置字体
# plt.rcParams["axes.unicode_minus"] = False # 该语句解决图像中的“-”负号的乱码问题
def begin(kyg):
resp_json = ak.stock_zh_a_hist(symbol=kyg, period="daily", start_date="20190301", end_date='20220729', adjust="")
df = pd.DataFrame(resp_json)
ma = df['收盘']
a = ma.rolling(window=20).mean()
b = ma.rolling(window=60).mean()
a = list(a)
b = list(b)
# 画图并保存
w = np.linspace(1, len(a), len(a))
plt.plot(w, a, color='green')
plt.plot(w, b, color='red')
# 获取a大于等于b的区间
index_lst = np.where(np.array(a) - np.array(b) >= 0)[0]
continue_list_a大于b = []
fun = lambda x: x[1] - x[0]
for k, g in groupby(enumerate(index_lst), fun):
continue_index = [v for i, v in g]
continue_list_a大于b.append(continue_index)
# 获取a小于等于b的区间
index_lst = np.where(np.array(a) - np.array(b) <= 0)[0]
continue_list_a小于b = []
fun = lambda x: x[1] - x[0]
for k, g in groupby(enumerate(index_lst), fun):
continue_index = [v for i, v in g]
continue_list_a小于b.append(continue_index)
# 当线在a>b金叉到a< b死叉(绿色云)区间时,
# 取a的最大值添加到(lvda)里,b的最小值添加到( hongxiao)里。
lvda = []
hongxiao = []
for ab in continue_list_a大于b:
s, e = ab[0], ab[-1] + 1 # 区间起止点
# 取a的最大值添加到(lvda)里
tmp_a = a[s:e] # 区间值
a_max = max(tmp_a)
sw_a = s + np.argmax(tmp_a) # a最大位置横轴
lvda.append(a_max)
plt.plot(sw_a, a_max + 0.15, 'v', color='b')
plt.text(sw_a, a_max + 0.2, f"{a_max:.2f}", fontsize=12, color="b")
# b的最小值添加到( hongxiao)里
tmp_b = b[s:e]
b_min = min(tmp_b)
sw_b = s + np.argmin(tmp_b) # b最小位置横轴
hongxiao.append(b_min)
plt.plot(sw_b, b_min - 0.15, '^', color='y')
plt.text(sw_b, b_min - 0.2, f"{b_min:.2f}", fontsize=12, color="y")
# 当线在a< b死叉到a<b金叉(红色云)区间时,
# 取b的最大值添加到(hongda)里,a的最小值添加到(lvxiao)里。
hongda = []
lvxiao = []
for ab in continue_list_a小于b:
s, e = ab[0], ab[-1] + 1 # 区间起止点
# a的最小值添加到(lvxiao)里
tmp_a = a[s:e] # 区间值
a_min = min(tmp_a)
sw_a = s + np.argmin(tmp_a) # a最小位置横轴
lvxiao.append(a_min)
plt.plot(sw_a, a_min - 0.15, '^', color='g')
plt.text(sw_a, a_min - 0.2, f"{a_min:.2f}", fontsize=12, color="g")
# 取b的最大值添加到(hongda)里
tmp_b = b[s:e]
b_max = max(tmp_b)
sw_b = s + np.argmax(tmp_b) # b最小位置横轴
hongda.append(b_max)
plt.plot(sw_b, b_max + 0.15, 'v', color='r')
plt.text(sw_b, b_max + 0.2, f"{b_max:.2f}", fontsize=12, color="r")
plt.show()
if a[-1] > b[-1]:
"""
当a[-1]>lvda[-1] and b[-1]>hongda[-1]:
print(有个提醒)
当a[-1]
print(有个提醒)
"""
return True
gpc = []
gp = ['000001', '000002', '000004', '000005', '000006', '000007', '000008', '000009', '000010', '000011', '000012',
'000014', '000016', '000017', '000019']
for bb in gp:
try:
if begin(bb):
gpc.append(bb)
print(bb)
except:
print("cuowu" + bb)
print(gpc)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)