close

博翔科技為專業機械設備歐規/台灣TS標章/美規及半導體設備SEMI S2輔導顧問公司

從事設備安全檢測驗證的輔導機構,擁有經驗豐富的機械安全輔導工程師,並與多家國內外知名驗證公司合作。

服務範圍包含各項產業機械、工業電控系統、鞋廠自動化設備、半導體設備及光電廠設備…等產品。

並協助傳統車床業者如威赫、金剛等取得TS認證。

另外,銑床項目則有新虎將、科冠、合駿、暹嶸、松順、鉅業、進傑等業者接受輔導取得TS認證

Protect & Safe博翔秉著提供更方便更完善的認證與產品給您

並提供CE認證、TS認證、MD認證、LVD認證、EMC認證、UL認證、NRTL認證、SEMI認證、CB認證、PSE認證、CCC認證、ASME認證、CNS認證、NFPA認證、510K認證

以及沙特SABER(SASO)、奈及利亞SONCAP、阿爾及利亞VOC、坦尚尼亞VOC、肯亞VOC、敘利亞COC、科威特、加蓬VOC、烏干達VOC等中東地區的相關認證

邀請您一起邁向世界的安全技術頂端

請立即點擊上方圖片了解更多細節吧!

 

好文分享

 

目前基於Python的量化回測框架有很多,開源框架有zipline、vnpy、pyalgotrader和backtrader等,而量化平臺有Quantopian(國外)、聚寬、萬礦、優礦、米筐、掘金等,這些量化框架或平臺各有優劣。就個人而言,比較偏好用backtrader,因為它功能十分完善,有完整的使用文檔,安裝相對簡單(直接pip安裝即可)。優點是運行速度快,支持pandas的矢量運算;支持參數自動尋優運算,內置了talib股票分析技術指標庫;支持多品種、多策略、多周期的回測和交易;支持pyflio、empyrica分析模塊庫、alphalens多因子分析模塊庫等;擴展靈活,可以集成TensorFlow、PyTorch和Keras等機器學習、神經網絡分析模塊。而不足之處在於,backtrader學習起來相對複雜,編程過程中使用了大量的元編程(類class),如果Python編程基礎不紮實(尤其是類的操作),學起來會感到吃力。本文作為backtrader的入門系列之一,對其運行框架進行簡要介紹,並以實際案例展示量化回測的過程。 如果將backtrader包分解為核心組件,主要包括以下組成部分: (1)數據加載(Data Feed):將交易策略的數據加載到回測框架中。 (2)交易策略(Strategy):該模塊是編程過程中最複雜的部分,需要設計交易決策,得出買入/賣出信號。 (3)回測框架設置( Cerebro):需要設置(i)初始資金(ii)傭金(iii)數據饋送(iv)交易策略(v)交易頭寸大小。 (4)運行回測:運行Cerebro回測並列印出所有已執行的交易。 (5)評估性能(Analyzers):以圖形和風險收益等指標對交易策略的回測結果進行評價。 「Lines」是backtrader回測的數據,由一系列的點組成,通常包括以下類別的數據:Open(開盤價), High(最高價), Low(最低價), Close(收盤價), Volume(成交量), OpenInterest(無的話設置為0)。Data Feeds(數據加載)、Indicators(技術指標)和Strategies(策略)都會生成 Lines。價格數據中的所有」Open」 (開盤價)按時間組成一條 Line。所以,一組含有以上6個類別的價格數據,共有6條 Lines。如果算上「DateTime」(時間,可以看作是一組數據的主鍵),一共有7條 Lines。當訪問一條 Line 的數據時,會默認指向下標為 0 的數據。最後一個數據通過下標 -1 來訪問,在-1之後是索引0,用於訪問當前時刻。因此,在回測過程中,無需知道已經處理了多少條/分鐘/天/月,」0」一直指向當前值,下標 -1 來訪問最後一個值。 ... 量化回測說白了是使用歷史數據去驗證交易策略的性能,因此回測的第一步是搭建交易策略,這也是backtrader要設置的最重要和複雜的部分,策略設定好後,其餘部分的代碼編寫是手到擒來。 構建策略(Strategy) 交易策略類代碼包含重要的參數和用於執行策略的功能,要定義的參數或函數名如下: (1)params-全局參數,可選:更改交易策略中變量/參數的值,可用於參數調優。 (2)log:日誌,可選:記錄策略的執行日誌,可以列印出該函數提供的日期時間和txt變量。 (3) __init__:用於初始化交易策略的類實例的代碼。 (4)notify_order,可選:跟蹤交易指令(order)的狀態。order具有提交,接受,買入/賣出執行和價格,已取消/拒絕等狀態。 (5)notify_trade,可選:跟蹤交易的狀態,任何已平倉的交易都將報告毛利和凈利潤。 (6)next,必選:制定交易策略的函數,策略模塊最核心的部分。 下面以一個簡單的單均線策略為例,展示backtrader的使用過程,即當收盤價上漲突破20日均線買入(做多),當收盤價下跌跌穿20日均線賣出(做空)。為簡單起見,不報告交易回測的日誌,因此log、notify_order和notify_trade函數省略不寫。 class my_strategy1(bt.Strategy): #全局設定交易策略的參數 params=( ('maperiod',20), ) def __init__(self): #指定價格序列 self.dataclose=self.datas[0].close # 初始化交易指令、買賣價格和手續費 self.order = None self.buyprice = None self.buycomm = None #添加移動均線指標,內置了talib模塊 self.sma = bt.indicators.SimpleMovingAverage( self.datas[0], period=self.params.maperiod) def next(self): if self.order: # 檢查是否有指令等待執行, return # 檢查是否持倉 if not self.position: # 沒有持倉 #執行買入條件判斷:收盤價格上漲突破20日均線 if self.dataclose[0] > self.sma[0]: #執行買入 self.order = self.buy(size=500) else: #執行賣出條件判斷:收盤價格跌破20日均線 if self.dataclose[0] < self.sma[0]: #執行賣出 self.order = self.sell(size=500)數據加載(Data Feeds) 策略設計好後,第二步是數據加載,backtrader提供了很多數據接口,包括quandl(美股)、yahoo、pandas格式數據等,我們主要分析A股數據。 mpl.rcParams['axes.unicode_minus']=False #先引入後面可能用到的包(package) import pandas as pd from datetime import datetime import backtrader as bt import matplotlib.pyplot as plt %matplotlib inline #正常顯示畫圖時出現的中文和負號 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] 使用tushare獲取浦發銀行(代碼:600000)數據。 #使用tushare舊版接口獲取數據 import tushare as ts def get_data(code,start='2010-01-01',end='2020-03-31'): df=ts.get_k_data(code,autype='qfq',start=start,end=end) df.index=pd.to_datetime(df.date) df['openinterest']=0 df=df[['open','high','low','close','volume','openinterest']] return df dataframe=get_data('600000') 回測設置(Cerebro) 回測設置主要包括幾項:回測系統初始化,數據加載到回測系統,添加交易策略, broker設置(如交易資金和交易傭金),頭寸規模設置作為策略一部分的交易規模等,最後顯示執行交易策略時積累的總資金和凈收益。 # 初始化cerebro回測系統設置 cerebro = bt.Cerebro #將數據傳入回測系統 cerebro.adddata(data) # 將交易策略加載到回測系統中 cerebro.addstrategy(my_strategy1) # 設置初始資本為10,000 startcash = 10000 cerebro.broker.setcash(startcash) # 設置交易手續費為 0.2% cerebro.broker.setcommission(commission=0.002) 04執行回測 輸出回測結果。 print(f'凈收益: {round(pnl,2)}') d1=start.strftime('%Y%m%d') d2=end.strftime('%Y%m%d') print(f'初始資金: {startcash} 回測期間:{d1}:{d2}') #運行回測系統 cerebro.run #獲取回測結束後的總資金 portvalue = cerebro.broker.getvalue pnl = portvalue - startcash #列印結果 print(f'總資金: {round(portvalue,2)}') 結果如下: 初始資金: 10000 回測期間:20100331:20200331 總資金: 12065.36 凈收益: 2065.3605可視化 對上述結果進行可視化,使用內置的matplotlib畫圖。至此,簡單的單均線回測就完成了。下面圖形展示了浦發銀行在回測期間的價格走勢、買賣點和交易總資金的變化等。當然,本文著重以最簡化的例子展示backtrader的框架和運行過程,要想更詳細的展示回測過程和結果,還需要加入其他函數和模塊,關於Analyzers分析模塊的應用請留意下一篇推文。 %matplotlib inline #在jupyter notebook上運行 cerebro.plot(style='candlestick') ... backtrader是目前功能最完善的Python量化回測框架之一(單機版),得到歐洲很多銀行、基金等金融機構的青睞,並應用於實盤交易中。作為入門序列之一,本文簡單介紹了backtrader框架的各個組成部分,然後以20日單均線策略為例,展示了回測系統的編程和運行。公眾號接下來將以專題的形式為大家全面介紹backtrader的應用。學習沒有捷徑,要想全面而深入地學習backtrader回測框架,最好的方法是研讀其官方文檔。 參考資料:backtrader官方文檔 關於Python金融量化

 

RRR1545EER15BBBEEEOOE

 

 

文章來源取自於:

 

 

 

壹讀 https://read01.com/d03LAg2.html

 

 

如有侵權,請來信告知,我們會立刻下架。

 

 

DMCA:dmca(at)kubonews.com

 

 

聯絡我們:contact(at)kubonews.com

 


桃園鋼絲抽取CE認證台北地下儲藏室CE認證台北電腦數控彈簧成形機CE認證桃園電磁式離合制動器CE認證
推薦中國CCC認證等諮詢輔導取證的檢驗公司 桃園各種線材機械設計.製造CE認證 彰化自動矯正機, 配合送料用CE認證推薦個人防護CE輔導認證的檢驗公司 台北無段變速控制器CE認證 桃園分度工作檯,精密自動式CE認證推薦CE認證顧問公司 彰化樣品裁布機CE認證 台北轉化糖製造機CE認證EN 149-EN 14683口罩(面罩)認證公司 台中羊毛洗毛炭化設備CE認證 台北不銹鋼湯菜桶CE認證

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 mux68le01w 的頭像
    mux68le01w

    冉智堯的部落格

    mux68le01w 發表在 痞客邦 留言(0) 人氣()