返回列表 发布新帖

量化研究:涨停板赚钱效应,提供源代码

1505 0
发表于 2024-10-20 10:10:01 | 显示全部楼层 阅读模式

今天参考开盘啦,把涨停板市场赚钱效应计算出来了,同时也加入很多自己的算法

字典词语介绍

打板成功比例:剔除了一字板,第二天继续涨停的比例

赚钱效应:剔除了一字板,第二天涨跌幅大于0的比例

赚钱比例:剔除了一字板,第二天所以股票的平均收益

1板赚钱效应:打一板第二天的进板比例,其他的也一样

1板赚钱比例:打一板第二天的平均收益,其他的也一样

源代码

来自小果量化网页框架的源代码

<pre class="public-DraftStyleDefault-pre" data-offset-key="21d8v-0-0"><pre class="Editable-styled" data-block="true" data-editor="cbhoe" data-offset-key="21d8v-0-0"><div data-offset-key="21d8v-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="21d8v-0-0"><span data-text="true">def get_maker_money_ratio(self): ''' 涨停板市场赚钱效应 ''' trader_time_list=self.stock_data.get_trader_date_list() import os path=os.listdir() import numpy as np def select_data_amount(x): x=str(x) if x=='首板': return 1 else: try: return int(x.split('天')[-1].split('板')[0]) except: return 0 path_list=os.listdir(path='{}\涨停板赚钱效应'.format(self.path)) trader_time_list=trader_time_list[-len(path_list):] now_date=trader_time_list[-1] date2=''.join(str(now_date).split('-'))

今日涨停

    daily_zt_list=[]
    #打板成功了
    cgl_ratio_list=[]
    #市场赚钱效应
    maker_money_list=[]
    #赚钱比例
    maker_money_ratio_list=[]
    #1板赚钱效应
    maker_money_1_list=[]
    #1板赚钱比例
    maker_money_ratio_1_list=[]
    #2板赚钱效应
    maker_money_2_list=[]
    #2板赚钱比例
    maker_money_ratio_2_list=[]
    #3板赚钱效应
    maker_money_3_list=[]
    #3板赚钱比例
    maker_money_ratio_3_list=[]
    #4板赚钱效应
    maker_money_4_list=[]
    #4板赚钱比例
    maker_money_ratio_4_list=[]
    #5板赚钱效应
    maker_money_5_list=[]
    #5板赚钱比例
    maker_money_ratio_5_list=[]
    #6板赚钱效应
    maker_money_6_list=[]
    #6板赚钱比例
    maker_money_ratio_6_list=[]
    #7板赚钱效应
    maker_money_7_list=[]
    #7板赚钱比例
    maker_money_ratio_7_list=[]
    #8板赚钱效应
    maker_money_8_list=[]
    #3板赚钱比例
    maker_money_ratio_8_list=[]
    #9板赚钱效应
    maker_money_9_list=[]
    #9板赚钱比例
    maker_money_ratio_9_list=[]
    #10板赚钱效应
    maker_money_10_list=[]
    #10板赚钱比例
    maker_money_ratio_10_list=[]
    trader_time_list=trader_time_list[2:]
    for date in trader_time_list:
        date1=date
        date=''.join(str(date).split('-'))
        path='{}涨停板赚钱效应.xlsx'.format(date)
        if path in path_list:
            print(path,'已经存在')
        else:
            pre_date=trader_time_list[trader_time_list.index(date1)-1]
            pre_date=''.join((pre_date).split('-'))
            pre_count=pd.read_excel(r'{}\涨停板赚钱效应\{}涨停板赚钱效应.xlsx'.format(self.path,pre_date))
            pre_df=pd.read_excel(r'{}\当日涨停\{}当日涨停.xlsx'.format(self.path,pre_date))
            pre_df['几板']=pre_df['几天几板'].apply(select_data_amount)
            #pre_df=pre_df[pre_df['涨停形态'] !='一字板']
            now_df=pd.read_excel(r'{}\当日涨停\{}当日涨停.xlsx'.format(self.path,date))
            #now_df['几板']=now_df['几天几板'].apply(select_data)
            #now_df=now_df[now_df['涨停形态'] !='一字板']
            daily_zt_list.append(now_df.shape[0])
            now_stock_list=now_df['证券代码'].tolist()
            def select_data(x):
                if x in now_stock_list:
                    return '是'
                else:
                    return '不是'
            pre_df['选择']=pre_df['证券代码'].apply(select_data)
            select_data_1=pre_df[pre_df['选择']=='是']
            #打板进阶
            cgl=(select_data_1.shape[0]/pre_df.shape[0])*100
            cgl_ratio_list.append(round(cgl,2))
            pre_df=pre_df[pre_df['涨停形态'] !='一字板']
            #涨停板数量字典
            pre_df['证券代码']=pre_df['证券代码'].apply(lambda x:'0'*(6-len(str(x)))+str(x))
            amount_dict=dict(zip(pre_df['证券代码'].tolist(),pre_df['几板'].tolist()))
            pre_stock_list=pre_df['证券代码'].tolist()
            data=pd.DataFrame()
            for stock in pre_stock_list:
                try:
                    stock='0'*(6-len(str(stock)))+str(stock)
                    hist=self.data.get_hist_data_em(stock=stock,end_date=date)
                    hist['证券代码']=stock
                    hist['几板']=hist['证券代码'].apply(lambda x:amount_dict.get(x,0))
                    print(date,stock,'成功')
                    data=pd.concat([data,hist[-1:]])
                except:
                    print(date,stock,'有问题')
                    hist=pd.DataFrame()
                data=pd.concat([data,hist[-1:]])
            if data.shape[0]>0:
                    data1=data[data['涨跌幅']>=0]
                    maker_money=(data1.shape[0]/data.shape[0])*100
                    maker_money_list.append(round(maker_money,2))
                    maker_money_ratio=data['涨跌幅'].mean()
                    maker_money_ratio_list.append(round(maker_money_ratio,2))
                    #1板
                    data_1=data[data['几板']==1]
                    if data_1.shape[0]>0:
                        data1=data_1[data_1['涨跌幅']>=0]
                        maker_money_1=round((data1.shape[0]/data_1.shape[0])*100,2)
                        maker_money_1_list.append(maker_money_1)
                        maker_money_ratio_1_list.append(round(data1['涨跌幅'].mean(),2))
                    else:
                        maker_money_1_list.append(0)
                        maker_money_ratio_1_list.append(0)
                    #2板
                    data_2=data[data['几板']==2]
                    if data_2.shape[0]>0:
                        data2=data_2[data_2['涨跌幅']>=0]
                        maker_money_2=round((data2.shape[0]/data_2.shape[0])*100,2)
                        maker_money_2_list.append(maker_money_2)
                        maker_money_ratio_2_list.append(round(data2['涨跌幅'].mean(),2))
                    else:
                        maker_money_2_list.append(0)
                        maker_money_ratio_2_list.append(0)
                    #3板
                    data_3=data[data['几板']==3]
                    if data_3.shape[0]>0:
                        data3=data_3[data_3['涨跌幅']>=0]
                        maker_money_3=round((data3.shape[0]/data_3.shape[0])*100,2)
                        maker_money_3_list.append(maker_money_3)
                        maker_money_ratio_3_list.append(round(data3['涨跌幅'].mean(),2))
                    else:
                        maker_money_3_list.append(0)
                        maker_money_ratio_3_list.append(0)
                    #4板
                    data_4=data[data['几板']==4]
                    if data_4.shape[0]>0:
                        data4=data_4[data_4['涨跌幅']>=0]
                        maker_money_4=round((data4.shape[0]/data_4.shape[0])*100,2)
                        maker_money_4_list.append(maker_money_4)
                        maker_money_ratio_4_list.append(round(data4['涨跌幅'].mean(),2))
                    else:
                        maker_money_4_list.append(0)
                        maker_money_ratio_4_list.append(0)
                    #5板
                    data_5=data[data['几板']==5]
                    if data_5.shape[0]>0:
                        data5=data_5[data_5['涨跌幅']>=0]
                        maker_money_5=round((data5.shape[0]/data_5.shape[0])*100,2)
                        maker_money_5_list.append(maker_money_5)
                        maker_money_ratio_5_list.append(round(data5['涨跌幅'].mean(),2))
                    else:
                        maker_money_5_list.append(0)
                        maker_money_ratio_5_list.append(0)
                    #6板
                    data_6=data[data['几板']==6]
                    if data_6.shape[0]>0:
                        data6=data_6[data_6['涨跌幅']>=0]
                        maker_money_6=round((data6.shape[0]/data_6.shape[0])*100,2)
                        maker_money_6_list.append(maker_money_6)
                        maker_money_ratio_6_list.append(round(data6['涨跌幅'].mean(),2))
                    else:
                        maker_money_6_list.append(0)
                        maker_money_ratio_6_list.append(0)
                    #7板
                    data_7=data[data['几板']==7]
                    if data_7.shape[0]>0:
                        data7=data_7[data_7['涨跌幅']>=0]
                        maker_money_7=round((data7.shape[0]/data_7.shape[0])*100,2)
                        maker_money_7_list.append(maker_money_7)
                        maker_money_ratio_7_list.append(round(data7['涨跌幅'].mean(),2))
                    else:
                        maker_money_7_list.append(0)
                        maker_money_ratio_7_list.append(0)
                    #8板
                    data_8=data[data['几板']==8]
                    if data_8.shape[0]>0:
                        data8=data_8[data_8['涨跌幅']>=0]
                        maker_money_8=round((data8.shape[0]/data_8.shape[0])*100,2)
                        maker_money_8_list.append(maker_money_8)
                        maker_money_ratio_8_list.append(round(data8['涨跌幅'].mean(),2))
                    else:
                        maker_money_8_list.append(0)
                        maker_money_ratio_8_list.append(0)
                    #9板
                    data_9=data[data['几板']==9]
                    if data_9.shape[0]>0:
                        data9=data_9[data_9['涨跌幅']>=0]
                        maker_money_9=round((data9.shape[0]/data_9.shape[0])*100,2)
                        maker_money_9_list.append(maker_money_9)
                        maker_money_ratio_9_list.append(round(data9['涨跌幅'].mean(),2))
                    else:
                        maker_money_9_list.append(0)
                        maker_money_ratio_9_list.append(0)
                    #10板
                    data_10=data[data['几板']==10]
                    if data_10.shape[0]>0:
                        data10=data_10[data_10['涨跌幅']>=0]
                        maker_money_10=round((data10.shape[0]/data_10.shape[0])*100,2)
                        maker_money_10_list.append(maker_money_10)
                        maker_money_ratio_10_list.append(round(data10['涨跌幅'].mean(),2))
                    else:
                        maker_money_10_list.append(0)
                        maker_money_ratio_10_list.append(0)
            else:
                maker_money_list.append(0)
                maker_money_ratio_list.append(0)
            result=pd.DataFrame()
            result['今日涨停']=daily_zt_list
            result['打板成功比例']=cgl_ratio_list
            result['赚钱效应']=maker_money_list
            result['赚钱比例']=maker_money_ratio_list
            result['1板赚钱效应']=maker_money_1_list
            result['2板赚钱效应']=maker_money_2_list
            result['3板赚钱效应']=maker_money_3_list
            result['4板赚钱效应']=maker_money_4_list
            result['5板赚钱效应']=maker_money_5_list
            result['6板赚钱效应']=maker_money_6_list
            result['7板赚钱效应']=maker_money_7_list
            result['8板赚钱效应']=maker_money_8_list
            result['9板赚钱效应']=maker_money_10_list
            result['10板赚钱效应']=maker_money_10_list
            result['1板赚钱比例']=maker_money_ratio_1_list
            result['2板赚钱比例']=maker_money_ratio_2_list
            result['3板赚钱比例']=maker_money_ratio_3_list
            result['4板赚钱比例']=maker_money_ratio_4_list
            result['5板赚钱比例']=maker_money_ratio_5_list
            result['6板赚钱比例']=maker_money_ratio_6_list
            result['7板赚钱比例']=maker_money_ratio_7_list
            result['8板赚钱比例']=maker_money_ratio_8_list
            result['9板赚钱比例']=maker_money_ratio_9_list
            result['10板赚钱比例']=maker_money_ratio_10_list
            result['日期']=date
            result=pd.concat([pre_count,result],ignore_index=True)
            result=result.drop_duplicates()
            try:
                del result['Unnamed: 0']
            except:
                pass
            print(result)
            print(date,'计算完成','*******************************')
            result.to_excel(r'{}\涨停板赚钱效应\{}涨停板赚钱效应.xlsx'.format(self.path,date))</span></span></div></pre></pre>

网页支持历史数据

支持数据下载

后面仔细分析一下这个数据,点击下载按钮就可以

下载的数据

源代码+交易模型领取、QMT开通、策略分享、问题答疑,评论区留言或私信。

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表