添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7
前言
布林帶通道(Bollinger Bands)是非常經(jīng)典的技術(shù)指標(biāo),常用于研判市場中長期運(yùn)動趨勢。
比如我們以[350,?2,2]?這組長線參數(shù)來繪制恒瑞醫(yī)藥、貴州茅臺10年行情走勢的布林帶通道,如下所示:
不少星球?qū)W員向我發(fā)起了支持布林帶通道策略的需求。其實(shí)在QTYX量化分析系統(tǒng)中支持這個策略還是非常容易的,于是我們升級了版本至V2.4.7來支持這個策略。
如何實(shí)現(xiàn)策略
布林帶通道的應(yīng)用網(wǎng)上介紹了很多,比如股價突破上軌為超買,跌破上軌為超賣等等,此處不再贅述。這里主要介紹下如何在QTYX中添加布林帶通道策略。
我們看到圖上布林帶通道由三條軌道線組成,分別是上軌?、中軌和下軌。中軌線是N日移動平均線(MA),上軌線和下軌線分別是中軌線的正負(fù)N倍標(biāo)準(zhǔn)差。
布林帶通道的計算可以直接使用talib的接口:
upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)根據(jù)收盤數(shù)據(jù)可以計算出一個通道軌跡值,upper為上限,lower為下限,middle為平均位置。
調(diào)用參數(shù):
-
close:收盤價
-
timeperiod:計算的周期,通常選擇20天
-
nbdevup:上限價格相對于周期內(nèi)標(biāo)準(zhǔn)偏差的倍數(shù),取值越大,則上限越大,通道越寬
-
nbdevdn:下限價格相對于周期內(nèi)標(biāo)準(zhǔn)偏差的倍數(shù),取值越大,則下限越大,通道越寬
-
matype:平均值計算方法,用于設(shè)定哪種類型的MA。0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)
在/QTYX/StrategyGath/StrategyGath.py的Base_Strategy_Group類中添加策略代碼,如下所示:
@staticmethod def get_bbands_signal(stock_dat, period = 20, nup = 2, ndn = 2):# 布林帶通道突破 買入/賣出信號stock_dat['H_line'], stock_dat['M_line'], stock_dat['L_line'] = talib.BBANDS(stock_dat.Close, timeperiod=period,nbdevup=nup, nbdevdn=ndn, matype=0)# 當(dāng)天收盤價穿越昨天通道頂部 第二天買入股票buy_index = stock_dat[stock_dat.Close > stock_dat.H_line].index# 當(dāng)天收盤價跌破昨天通道底部 第二天賣出股票sell_index = stock_dat[stock_dat.Close < stock_dat.L_line].indexstock_dat.loc[buy_index, 'Signal'] = 1stock_dat.loc[sell_index, 'Signal'] = -1stock_dat['Signal'] = stock_dat.Signal.shift(1) # 當(dāng)天出信號則第二天買入# print(stock_dat[stock_dat['signal'].notna()])stock_dat['Signal'].fillna(method='ffill', inplace=True) # 與前面元素值保持一致stock_dat['Signal'].fillna(value=-1, inplace=True) # 序列最前面幾個NaN值用-1填充return?stock_dat策略的關(guān)鍵是得到買賣信號序列。比如將買入當(dāng)天的 Signal 值設(shè)置為 1,將賣出當(dāng)天的 Signal設(shè)置為?1。
然后在QTYX/MainlyGui/ElementGui/DefTreelist.py的colleges中注冊接口:
colleges = {u'經(jīng)典策略': [{u'名稱': u'N日突破', u'標(biāo)識': u'趨勢', '函數(shù)': u'已定義', 'define': "get_ndays_signal"},{u'名稱': u'ATR止盈止損', u'標(biāo)識': u'趨勢', '函數(shù)': u'已定義', 'define': "get_ndays_atr_signal"},{u'名稱': u'布林帶突破', u'標(biāo)識': u'趨勢', '函數(shù)': u'已定義', 'define': "get_bbands_signal"}],u'自定義策略': [{u'名稱': u'yx-zl-1', u'標(biāo)識': u'綜合', '函數(shù)': u'未定義'},{u'名稱': u'yx-zl-2', u'標(biāo)識': u'趨勢', '函數(shù)': u'未定義'},{u'名稱': u'yx-zl-3', u'標(biāo)識': u'波動', '函數(shù)': u'未定義'}],u'衍生指標(biāo)': [{u'名稱': u'均線交叉', u'標(biāo)識': u'cross', '函數(shù)': u'已定義'},{u'名稱': u'跳空缺口', u'標(biāo)識': u'jump', '函數(shù)': u'已定義'},{u'名稱': u'黃金分割', u'標(biāo)識': u'fibonacci', '函數(shù)': u'已定義'}],u'K線形態(tài)': [{u'名稱': u'烏云蓋頂', u'標(biāo)識': u'CDLDARKCLOUDCOVER', '函數(shù)': u'已定義'},{u'名稱': u'三只烏鴉', u'標(biāo)識': u'CDL3BLACKCROWS', '函數(shù)': u'已定義'},{u'名稱': u'十字星', u'標(biāo)識': u'CDLDOJISTAR', '函數(shù)': u'已定義'},{u'名稱': u'錘頭', u'標(biāo)識': u'CDLHAMMER', '函數(shù)': u'已定義'},{u'名稱': u'射擊之星', u'標(biāo)識': u'CDLSHOOTINGSTAR', '函數(shù)': u'已定義'}] }這樣就把策略添加到QTYX系統(tǒng)中了,可以看到布林帶策略已經(jīng)在界面的策略列表中了。
回測時只要點(diǎn)擊左邊樹形控件的策略名稱,選中的策略就生效了!
使用talib庫設(shè)計擇時策略原來這么方便!
同樣地,按這個思路我們可以基于均線、MACD、KDJ、RSI、OBV……以及多指標(biāo)組合,設(shè)計出各式各樣的策略。
因?yàn)槲覀冎苯釉诒镜氐腜ython環(huán)境下編程,只要生成出買賣信號序列即可,編寫的邏輯過程可以任意發(fā)揮,非常靈活,而且不存在黑盒子!
說明
1. 我們會把完整的源碼上傳到知識星球《玩轉(zhuǎn)股票量化交易》中,幫助小伙伴們更好地掌握這個方法。
2. 想要加入知識星球《玩轉(zhuǎn)股票量化交易》的小伙伴記得先微信call我獲取福利!
添加布林帶擇時策略有多便捷!股票量化分析工具QTYX-V2.4.7???????
???????
總結(jié)
以上是生活随笔為你收集整理的添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序源码:后台版本趣味测试微信小程序源
- 下一篇: 学习笔记——利用CC++语言计算二重积分