对股票的双均线策略

匿名 (未验证) 提交于 2019-12-02 23:39:01

双均线:此处采用5日均线和30日均线

具体实现代码:

import tushare as ts        #金融数据接口  import pandas as pd          from pandas import Series,DataFrame  data=ts.get_k_data(code='002460',start='2015',end='2019-06')  data.to_csv('./gfly.csv',)  df=pd.read_csv('./gfly.csv',index_col='date',parse_dates=['date'])                  #将日期列作为列的索引对象  df.drop(labels='Unnamed: 0',axis=1,inplace=True)                                    #清除空白列  df  day_5=df['close'].rolling(5).mean()                #收盘价的五日均价  rolling依次取值  mean 聚合求值  day_30=df['close'].rolling(30).mean()              #30日均价  df['d5']=day_5 df['d30']=day_30    s1=  df['d5']< df['d30']  # T->F  出现金叉  F->T  出现死差  s2=  df['d5']> df['d30']  # s1  T T F T T T F F F T F T # S2    F F T F F F T T T F T F     向右偏移一位 #       T F T T T F T T T F T       此行中的F就是对应的S1发生金叉的日期 #       F T F F F T F F F T F       取反后得到的T就是对应的金叉日期     过滤出T  gold=df.loc[~(s1 | s2.shift(1))].index                     #金叉对应的时间  death=df.loc[(s1 & s2.shift(1))].index                           #出现死叉日期  first_money=100000    #初始可用资金 money=first_money hold=0                #初始持有股票 g1=pd.Series(1,index=gold)                   #金叉标志位 1 d1=pd.Series(0,index=death)                  #死叉标志位 0 gd=g1.append(d1).sort_index()  for i in range(0,len(gd)):     p=df['open'][gd.index[i]]         #金叉当天的开盘价     if gd[i]==1:                    #金叉 会买入股票         hand=(money//(100*p))        #最多可以买几手         hold+=hand*100                  #持有股票数量         money-=hand*100*p            #剩余可用资金     else:         money+=hold*p                #股票卖出         hold=0                       #清零          price=df['open'][-1]                 #上个交易日的开盘价  now_money=hold*price+money           #可用资金和持有股票价值 print(now_money)        

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!