Python实现布林带策略
生活随笔
收集整理的這篇文章主要介紹了
Python实现布林带策略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
布林帶策略
原理
這個策略的原理很簡單,就是當股價突破你的上軌線時,則賣出;當股價突破你的下軌線,則買入。中軌線為周期內均值線。但是此策略不適合單獨使用,若股票最近漲停或者跌停,很快就會突破你的上下軌線。且多次漲停或跌停,會造成方差過大,上下軌線的區間過大。
實現策略
中軌線一般是周期內的均值(一般是20日),可以是收盤價的均值,也可以日最高點,日最低價來計算均值。此處我采用收盤價均值。上軌線為均值加上固定倍數的標準差,下軌線為均值減去固定倍數的標準差。固定倍數一般取2。也可以是其他值。Python實現主要從tushare獲取數據,由于我的pro版本積分不夠,所以普通版本和Pro版本混合使用。
import pandas as pd import tushare as ts import numpy as np import matplotlib.pyplot as plt import datetime ##日期這里我很懶直接自動獲取的30日內的所有交易日數據,差不多20日吧 end_date=(datetime.datetime.today()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d") start_date=(datetime.datetime.today()+datetime.timedelta(days=-30)).strftime("%Y-%m-%d") ##布林帶策略函數 def boll_brand(df,n):data=ts.get_today_all()codes=data['code']res=[]ups=[]downs=[]means=[]for code in codes:mean=df[df['code']==code]['close'].mean()std=df[df['code']==code]['close'].std()up=mean+n*stddown=mean-n*stdups.append(up)downs.append(down)means.append(mean)if data[data['code']==code]['trade'].values[-1]>up:res.append(1)elif data[data['code']==code]['trade'].values[-1]<down:res.append(0)else:res.append(-1)data['boll_brand']=resdata['up']=upsdata['down']=downsdata['mean']=meansreturn data pro=ts.pro_api('輸入自己的pro版本的暗號呀') data = pro.stock_basic() #data.rename(columns={'symbol':'code'}, inplace = True) ##獲取20日股票數據 df=pd.DataFrame() for codes in data[u'symbol']:df_1=ts.get_k_data(codes,start=start_date,end=end_date)df=df.append(df_1) df.head() #獲取2被方差的布林帶策略的上下軌線值,判斷是否買入和賣出 data=boll_brand(df,2) #data[data['boll_brand']==0]我的代碼真的很懶很簡單,此策略真的不適合那種漲停好幾天的股票呀。要多種策略結合使用。
總結
以上是生活随笔為你收集整理的Python实现布林带策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【微信小程序】零基础学 | 小程序语法
- 下一篇: 2002版《首席执行官》观后感及总结