亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用TA-Lib在vn.trader上開發CTA交易策略

2019-11-10 18:41:08
字體:
來源:轉載
供稿:網友

TA-Lib簡介 作為一套被業界廣泛應用的開源技術分析庫(包含技術指標計算和K線模式識別等),TA-Lib自2001年發布以來已經有了十多年的歷史。TA-Lib中一共包含大約125個技術指標的計算函數,同時提供了包括C/C++、java、Perl、Python等多種語言的API。

有什么用 簡單來說TA-Lib就是提供了一堆經過長期實踐檢驗的技術指標計算函數?;诂F成的計算函數,開發新策略雛形、快速驗證某個靈感的時間可以大幅縮短,否則想象一下每開發個策略都要自己實現要用的技術指標,未免太浪費時間。

但是除此以外,TA-Lib還可以有一些其他的用法,舉兩個例子。

百科全書

堅持每天收盤后選一個自己沒用過的指標,輸入數據,畫個圖、跑個回測,開發量化策略很很多其他的技術一樣都是熟能生巧。

另外,所有的技術指標在被開發出來的時候,背后都有一定的金融邏輯原理(行為金融學)的支撐,生搬硬套固然不可取,但是放著前人經驗完全不看,整天憑自己的空想就弄個機器學習算法在數據上瞎折騰豈不是更浪費時間?

Alpha庫

很大一部分CTA類的策略可以總結為幾個簡單的邏輯框架,比如趨勢策略通??梢苑纸獬梢韵虏糠郑黑厔菪盘枺ㄍǔJ腔谀硯讉€參數計算出來的指標值超過某個閾值)、信號過濾(和趨勢信號類似)、出場方案(固定點數/百分比的止盈和止損,移動止損)。

因此把邏輯框架的代碼搭好后,就可以通過機器學習算法來實現一種自動的策略開發方式:

從TA-Lib中選取兩個指標分別作為趨勢信號和信號過濾,結合止損、止盈方案,生成一個策略;

基于某一組歷史數據(如股指的1分鐘行情),通過遺傳算法來對以上的參數進行光與優化;

兩個指標的參數加起來通常不會超過10個,再加上止盈、止損、移動止損的參數,總參數不會超過15個,在一組高達十幾萬個數據點的時間序列上進行回測,過度擬合的可能性不大;

現在云服務器價格也不貴,租一個核多一點的,把算法和數據丟上去7×24小時的跑,Alpha值達到一定標準的策略存下來;

把上一步中保存下來的策略作為雛形,研究員再來進行針對性的有效性驗證和更精細化的策略改進,把策略開發變成有的放矢,而不是盲人摸象。

這種策略開發方式使用傳統的商業軟件(如TB、MC等)幾乎不可能實現,而Python這類開源軟件就成為了最好的選擇,用戶可以自行決定幾乎所有的算法(指標如何選擇、遺傳算法優化參數時如何迭代等等)。

怎么安裝 盡管TA-Lib原生提供了基于SWIG封裝的Python API,但是由于性能和編譯不方便的原因,作者推薦Github上的一位開發者mrjbq7基于Cython封裝的版本。

安裝過程:

在這里下載TA_Lib-0.4.9-cp27-none-win32.whl放到桌面上,也就是vn.py建議的運行環境Anaconda 2.7 32位

在桌面上按住Shift點擊鼠標右鍵后,選擇在此處打開命令窗口打開cmd

安裝wheel包,在cmd中運行:

pip install wheel 安裝TA-Lib,在cmd中運行:

pip install TA_Lib-0.4.9-cp27-none-win32.whl 打開Python,運行:

import talib 沒有報錯則說明安裝成功

一定要嘗試自己編譯的用戶,可以根據該項目的網站上的教程來安裝。作者的兩臺電腦,一臺直接安裝成功,另一臺安裝了MinGW的電腦則報GCC編譯錯誤(其實自己編譯沒有任何意義,感謝加州大學歐文分校打包的whl文件,省去了很多麻煩)。

linux下的安裝建議使用Anaconda的conda工具:

conda install -c quantopian ta-lib=0.4.9 具體可以參考這里:https://anaconda.org/Quantopian/ta-lib

DEMO 下面這個策略DEMO可以直接在vn.trader的CTA模塊中使用(回測、模擬交易),請不要用于實盤!

encoding: UTF-8

import talib as ta import numpy as np

from ctaBase import * from ctaTemplate import CtaTemplate

#

class TalibDoubleSmaDemo(CtaTemplate): “”“基于Talib模塊的雙指數均線策略Demo”“”

className = 'TalibDoubleSmaDemo'author = u'ideaplat'# 策略參數fastPeriod = 5 # 快速均線參數slowPeriod = 20 # 慢速均線參數initDays = 5 # 初始化數據所用的天數# 策略變量bar = NonebarMinute = EMPTY_STRINGcloseHistory = [] # 緩存K線收盤價的數組maxHistory = 50 # 最大緩存數量fastMa0 = EMPTY_FLOAT # 當前最新的快速均線數值fastMa1 = EMPTY_FLOAT # 上一根的快速均線數值slowMa0 = EMPTY_FLOAT # 慢速均線數值slowMa1 = EMPTY_FLOAT# 參數列表,保存了參數的名稱paramList = ['name', 'className', 'author', 'vtSymbol', 'fastPeriod', 'slowPeriod']# 變量列表,保存了變量的名稱varList = ['inited', 'trading', 'pos', 'fastMa0', 'fastMa1', 'slowMa0', 'slowMa1']# ----------------------------------------------------------------------def __init__(self, ctaEngine, setting): """Constructor""" super(TalibDoubleSmaDemo, self).__init__(ctaEngine, setting)# ----------------------------------------------------------------------def onInit(self): """初始化策略(必須由用戶繼承實現)""" self.writeCtaLog(u'雙SMA演示策略初始化') initData = self.loadBar(self.initDays) for bar in initData: self.onBar(bar) self.putEvent()# ----------------------------------------------------------------------def onStart(self): """啟動策略(必須由用戶繼承實現)""" self.writeCtaLog(u'雙SMA演示策略啟動') self.putEvent()# ----------------------------------------------------------------------def onStop(self): """停止策略(必須由用戶繼承實現)""" self.writeCtaLog(u'雙SMA演示策略停止') self.putEvent()# ----------------------------------------------------------------------def onTick(self, tick): """收到行情TICK推送(必須由用戶繼承實現)""" # 計算K線 tickMinute = tick.datetime.minute if tickMinute != self.barMinute: if self.bar: self.onBar(self.bar) bar = CtaBarData() bar.vtSymbol = tick.vtSymbol bar.symbol = tick.symbol bar.exchange = tick.exchange bar.open = tick.lastPRice bar.high = tick.lastPrice bar.low = tick.lastPrice bar.close = tick.lastPrice bar.date = tick.date bar.time = tick.time bar.datetime = tick.datetime # K線的時間設為第一個Tick的時間 # 實盤中用不到的數據可以選擇不算,從而加快速度 # bar.volume = tick.volume # bar.openInterest = tick.openInterest self.bar = bar # 這種寫法為了減少一層訪問,加快速度 self.barMinute = tickMinute # 更新當前的分鐘 else: # 否則繼續累加新的K線 bar = self.bar # 寫法同樣為了加快速度 bar.high = max(bar.high, tick.lastPrice) bar.low = min(bar.low, tick.lastPrice) bar.close = tick.lastPrice# ----------------------------------------------------------------------def onBar(self, bar): """收到Bar推送(必須由用戶繼承實現)""" # 把最新的收盤價緩存到列表中 self.closeHistory.append(bar.close) # 檢查列表長度,如果超過緩存上限則移除最老的數據 # 這樣是為了減少計算用的數據量,提高速度 if len(self.closeHistory) > self.maxHistory: self.closeHistory.pop(0) # 如果小于緩存上限,則說明初始化數據尚未足夠,不進行后續計算 else: return # 將緩存的收盤價數轉化為numpy數組后,傳入talib的函數SMA中計算 closeArray = np.array(self.closeHistory) fastSMA = ta.SMA(closeArray, self.fastPeriod) slowSMA = ta.SMA(closeArray, self.slowPeriod) # 讀取當前K線和上一根K線的數值,用于判斷均線交叉 self.fastMa0 = fastSMA[-1] self.fastMa1 = fastSMA[-2] self.slowMa0 = slowSMA[-1] self.slowMa1 = slowSMA[-2] # 判斷買賣 crossOver = self.fastMa0>self.slowMa0 and self.fastMa1<self.slowMa1 # 金叉上穿 crossBelow = self.fastMa0<self.slowMa0 and self.fastMa1>self.slowMa1 # 死叉下穿 # 金叉和死叉的條件是互斥 if crossOver: # 如果金叉時手頭沒有持倉,則直接做多 if self.pos == 0: self.buy(bar.close, 1) # 如果有空頭持倉,則先平空,再做多 elif self.pos < 0: self.cover(bar.close, 1) self.buy(bar.close, 1) # 死叉和金叉相反 elif crossBelow: if self.pos == 0: self.short(bar.close, 1) elif self.pos > 0: self.sell(bar.close, 1) self.short(bar.close, 1) # 發出狀態更新事件 self.putEvent()# ----------------------------------------------------------------------def onOrder(self, order): """收到委托變化推送(必須由用戶繼承實現)""" # 對于無需做細粒度委托控制的策略,可以忽略onOrder pass# ----------------------------------------------------------------------def onTrade(self, trade): """收到成交推送(必須由用戶繼承實現)""" # 對于無需做細粒度委托控制的策略,可以忽略onOrder pass

(感謝社區ideaplat用戶貢獻的代碼!作者做了一些小修改。)

將上面的代碼保存到一個talibDemo.py文件中后,參考vn.trader下ctaAlgo文件夾內的ctaBacktesting.py運行回測,也可以通過ctaSetting.py進行配置后,在vn.trader中進行模擬交易。

從上面的DEMO中我們可以看到,talib中的技術指標函數主要接受一個numpy數組作為原始數據及若干個指標算法中的參數作為輸入,返回的數據也是一個numpy數組,使用起來非常方便。

注意緩存數據時使用的是Python列表而非numpy數組,主要原因是numpy數組的append方法本質是結合原數組中的數據和新的數據生成一個新的數組對象,相對于列表的append開銷要高很多。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久av下载红粉| 亚洲韩国青草视频| 日韩免费高清在线观看| 久久精品久久久久久| 日韩视频在线观看免费| 国产精品欧美一区二区三区奶水| 久久免费精品日本久久中文字幕| 国产精品视频999| 欧美电影在线免费观看网站| 精品久久久久久中文字幕| 久久在线观看视频| 欧美激情视频一区| 91免费的视频在线播放| 欧美成人免费视频| 国产精品一区二区久久国产| 亚洲精品国产精品国产自| 九九久久久久久久久激情| 亚洲性无码av在线| 91久久久国产精品| 精品露脸国产偷人在视频| 中文字幕亚洲综合久久| 日韩精品在线观看一区| 日本一欧美一欧美一亚洲视频| 欧美精品aaa| www.日韩av.com| 欧美日韩精品在线观看| 国产精品久久久av| 国模精品视频一区二区| 国产91九色视频| 亚洲一区二区三区成人在线视频精品| 精品久久久久久久中文字幕| 中文字幕欧美在线| 国产精品91久久久| 国产精品成人一区二区三区吃奶| 亚洲国产精品视频在线观看| 亚洲午夜精品视频| 久久精品视频网站| 国语自产精品视频在线看一大j8| 亚洲综合在线中文字幕| 亚洲第一福利网| 午夜精品视频在线| 国产精品嫩草视频| 国产精品爽爽爽| 国产精品一区二区三区免费视频| 亚洲www在线观看| 国产欧美韩国高清| 欧美精品videosex牲欧美| 亚洲第一中文字幕| 国产精品ⅴa在线观看h| 欧美成人精品不卡视频在线观看| 免费99精品国产自在在线| 狠狠色香婷婷久久亚洲精品| 欧美精品激情视频| 日韩av手机在线看| 欧美性一区二区三区| 亚洲最大福利视频| 136fldh精品导航福利| 久久久女女女女999久久| 午夜精品久久17c| 亚洲精品自拍偷拍| 中文字幕精品—区二区| 狠狠色狠狠色综合日日小说| 久久韩国免费视频| 欧美一级电影在线| 日韩**中文字幕毛片| 亚洲嫩模很污视频| 日韩性生活视频| 日韩av网址在线观看| 亚洲精品在线观看www| 亚洲国产精品人人爽夜夜爽| 538国产精品一区二区在线| 亚洲一区二区三区在线视频| 亚洲欧美激情在线视频| 亚洲国语精品自产拍在线观看| 另类视频在线观看| 91精品国产自产91精品| 久久久欧美精品| 日本a级片电影一区二区| 国产激情综合五月久久| 欧美人与性动交| 久久久精品久久久久| 51午夜精品视频| 在线看片第一页欧美| 91po在线观看91精品国产性色| 米奇精品一区二区三区在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲韩国欧洲国产日产av| 国产精品久久久久7777婷婷| 亚洲第一网中文字幕| 亚洲电影免费观看高清完整版在线| 欧美成人中文字幕在线| 亚洲精品一区在线观看香蕉| 午夜精品福利在线观看| 91精品久久久久久久久久入口| 亚洲国产日韩欧美在线图片| 亚洲欧美激情在线视频| 91在线免费视频| 日本精品一区二区三区在线| 精品福利在线观看| 日韩精品中文字| 欧美日韩成人在线播放| 日韩欧美一区二区在线| 欧美一区二区三区图| 国产视频精品免费播放| 亚洲美女性视频| 亚洲午夜精品久久久久久性色| 亚洲电影免费观看高清完整版在线| 午夜精品一区二区三区在线播放| 久久99国产精品久久久久久久久| 91国产精品91| 国产一区二区三区久久精品| 色狠狠av一区二区三区香蕉蜜桃| 亚洲欧美资源在线| 九色精品美女在线| 一区二区三欧美| 69久久夜色精品国产69乱青草| 91久热免费在线视频| 精品久久久久久久大神国产| 一本一本久久a久久精品综合小说| 日韩高清av一区二区三区| 亚洲久久久久久久久久久| 亚洲国产成人久久综合一区| 亚洲高清福利视频| 欧美电影院免费观看| 国产99在线|中文| 久久久伊人日本| 欧美色videos| 粉嫩老牛aⅴ一区二区三区| 九九久久久久99精品| 日本精品免费一区二区三区| 久久精品国产亚洲精品2020| 乱亲女秽乱长久久久| 国产精品av在线播放| 色悠悠久久88| 国产精品爱久久久久久久| 国产91对白在线播放| 日韩美女在线观看| 亚洲色图综合网| 亚洲精品美女久久久| 日韩av色在线| 欧美成人在线影院| 亚洲嫩模很污视频| www.日韩av.com| 国产一级揄自揄精品视频| 日韩男女性生活视频| 国产精品视频最多的网站| 菠萝蜜影院一区二区免费| 色琪琪综合男人的天堂aⅴ视频| 国产精品午夜一区二区欲梦| 日韩成人在线观看| 亚洲视频777| 欧美网站在线观看| 成人深夜直播免费观看| 8090成年在线看片午夜| 亚洲黄在线观看| 欧美精品激情在线观看| 亚洲欧洲激情在线| 国产欧美最新羞羞视频在线观看| 久久国产精品久久久久| 国产精品第一视频| 国产在线精品成人一区二区三区| 久久97久久97精品免视看| 亚洲色无码播放| 青草青草久热精品视频在线网站|