社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python技术】520实现5日线上穿20日线均线策略

子晓聊技术 • 4 周前 • 76 次点击  

大家看到这篇文章的时候,已经是521早上了。  在520的晚上,坐在电脑旁思考的时候,我心里在想,今天520应该写篇什么类型的技术文章呢?  
520,A股大盘大涨, 晚上大家应该比较忙,可能在产生强烈的 交叉信号, 那么这里就以 5日线上穿20日线均线为例,写一个金叉例子。

先来点股市技术小技巧 , 逗大家笑一笑。

首次约会信号(金叉验证)

当MA5线穿上MA20线,就像男生鼓起勇气表白:"今晚月色真美",此时需满足三大恋爱指标:

  • 20日均线仰角≥45°
    (证明对方是潜力股)
  • 成交量放大1.5倍
    (约会诚意度检测)
  • 收盘价站稳MA20
    (拒绝"海王式"假突破)


 二次约会禁忌

若MA5线第三次回踩MA20,堪比"复合三次的前任"——成功率暴跌80%!请默念股民三字经:不!要!贪!


【防绿指南】三招识别"股市海王"

  1. 假金叉陷阱
    :MA20向下时示好,妥妥的PUA套路


  2. 缩量暧昧
    :成交量不足5日均量,说明只是随便撩撩


  3. 三振出局
    :第三次回踩必拉黑,记住:事不过三!

来首打油诗
"你是我生命中的MA5,
穿越20日均线的洪荒,
在520的坐标点,
完成最完美的金叉..."

上面的段子,纯属娱乐。 相信大家都过了一个难忘的520,当天买的股票是贝因美, 而不是红墙股份。  毕竟大家喜欢的都是涨停,而不是跌停。 是不是这个理。

相关文章推荐:
【Python技术】编织爱的代码——520遇上小满,用Python送出一束玫瑰

最后附上源代码,需要的自取。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。


import akshare as akimport streamlit as stimport pandas as pdimport plotly.graph_objs as go# 数据加载与计算@st.cache_datadef load_data(stock_code):    df = ak.stock_zh_a_hist(        symbol=stock_code,        period="daily",        start_date="20241008",        adjust="hfq"    )    # 计算双均线    df['MA5'] = df['收盘'].rolling(5).mean()    df['MA20'] = df['收盘'].rolling(20).mean()    # 金叉检测    df['金叉信号'] = (df['MA5'] > df['MA20']) & (df['MA5'].shift(1) <= df['MA20'].shift(1))    return df# 可视化函数def plot_strategy(df):    fig = go.Figure()    # K线主图    fig.add_trace(go.Candlestick(        x=df['日期'], open=df['开盘'],        high=df['最高'], low=df['最低'],        close=df['收盘'], name='K线',        increasing_line_color='red',        decreasing_line_color='green',    ))    # 均线叠加    fig.add_trace(go.Scatter(        x=df['日期'], y=df['MA5'],        line=dict(color='#FF1493', width=2),        name='5日均线'    ))    fig.add_trace(go.Scatter(        x=df['日期'], y=df['MA20'],        line=dict(color='#4169E1', width=2),        name='20日均线'    ))    # 金叉标记    crosses = df[df['金叉信号']]    fig.add_trace(go.Scatter(        x=crosses['日期'], y=crosses['MA5'],        mode='markers', marker=dict(color='gold', size=10),        name='金叉信号'    ))


    
    st.plotly_chart(fig, use_container_width=True)def app():    code = stock_list[stock_list['name'] == selected_stock]['code'].values[0]    df = load_data(code)    with st.container():        col1, col2 = st.columns([13])        with col1:            st.metric("最新MA5"f"{df['MA5'].iloc[-1]:.2f}")            st.metric("最新MA20"f"{df['MA20'].iloc[-1]:.2f}")            if df['金叉信号'].iloc[-1]:                st.success("🌟 发现最新金叉信号!")        with col2:            plot_strategy(df)    # 策略条件验证    with st.expander("📊 高级策略验证"):        col3, col4 = st.columns(2)        with col3:            st.write("**成交量验证**:")            vol_ratio = df['成交量'].iloc[-1] / df['成交量'].iloc[-2]            st.metric("成交量变化"f"{vol_ratio:.1f}倍",                      delta="达标" if vol_ratio >= 1.5 else "不足")        with col4:            st.write("**均线斜率验证**:")            ma5_slope = (df['MA5'].iloc[-1] - df['MA5'].iloc[-5]) / 5            st.metric("5日线斜率"f"{ma5_slope:.2f}")    st.dataframe(df[['日期''收盘''MA5''MA20''金叉信号']].tail(10), height=300)if __name__ == "__main__":    # 界面设置    #st.set_page_config(page_title="金叉选股系统", page_icon="📈")    st.title("📈 5日/20日均线金叉策略系统")    # 获取股票列表    stock_list = ak.stock_info_a_code_name()    selected_stock = st.selectbox("选择股票", stock_list['name'])    app()



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182397
 
76 次点击