使用TA_lib打造一個交易策略實用工具(1TA_lib輕探)[QuantTradingwithPython_5]

  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。


raw-image



使用TA_lib(pandas_TA) 打造一個交易策略實用工具(1TA_lib輕探)

剛剛我們完成了第一個所需要的工具,用來顯示觀察的K線圖形。今天要進入一個全新的項目。既然我們已經將資料能夠順利的下載到本地端,便需要好好的來利用它。利用它來建立,所關注的股票池。協助每天將1000多隻股票篩選出最具有潛力,未來可以做為進出依據的標的。甚至我們嘗試著,在這一個階段打造出一個方便來開發交易策略的工具。而這一切的一切;能夠協助完成的一個重要Python套件,它就是有名的TA_ Lib。顧名思義,這個TA就是指技術分析。然後這個Lib的一詞,就是它可以幫你召喚來層出不窮,難以數計的技術分析工具。所以才足堪為library。

GitHub - HuaRongSAO/talib-document: talib學習 talib中文翻譯 talib中文文檔 --- GitHub - HuaRongSAO/talib-document: talib学习 talib中文翻譯 talib中文文檔

在這裡,你可以找到介紹它的線上版使用手冊。




Includes 150+ indicators such as ADX, MACD, RSI, Stochastic, Bollinger Bands, etc.

包括 150+ 指標,如 ADX、MACD、RSI、隨機指標、布林带等。

Candlestick pattern recognition

K線形態識別

Open-source API for C/C++, Java, Perl, Python and 100% Managed .NET

适用于C / C++,Java,Perl,Python和100%托管.NET的开源API

包含了150多个指标,包括:ADX, MACD, RSI, Stochastic, Bollinger Bands, 等.

K线形態識別

完全开源,支持 C/C++, Java, Perl, Python and 100% Managed .NET

完全开源,支持 C/C++, Java, Perl, Python and 100% Managed .NET

透過文件上的介紹,我們現在大約知道,TA_lib提供了超過150種以上的技術指標分析工具。然後也包含了好好幾十種。常用的K線形態識別功能。在過往,安裝這個傢伙是一個非常不愉快的經驗。每一個人都有曾經被它整得七葷八素死去活來的經驗。原因是因為它的基底是由C來撰寫。所以必須要去安裝許多關於C以及.net的一些元件。不只是非得安裝,而且還規定你。在一個適當的位置去安裝它。安裝這個傢伙實在是令人視為畏途。這幾年有一個非常好的方式,可以一次就搞定。這簡直是一個嘉惠世人的偉大行為,值得表揚。那就是千萬不要透過pip install去安裝它。為了不要給自己沒事找麻煩。請動動小手,前往以下的連結。Python Extension Packages for Windows - Christoph Gohlke (uci.edu) 然後選擇自己對應的Python版本下載它的whl檔案進行安裝。只要版本選擇沒有出現問題;幾乎是一次就能過關的。接下來我們就能夠好好的來使用它了。

剛才已經稍微介紹過TA_Lib的強大功能。我們也沒有辦法一次把它全部介紹完成。所以按照往例,會在每一篇文章中,當需要用到這些套件的時候,再針對所需要的功能做介紹。目前第一部所要用到的就是建立每日工作的篩選股票池。首先要借用的便是它的K線形態辨識功能。今天就先來例舉一段程式介紹;走起。

import yfinance as yf

import talib

import pandas as pd




# 下载 TSLA 股票数据

data = yf.download("TSLA", start="2023-01-01", end="2023-06-28")




# 计算吞噬的 K 线组合

data['engulfing'] = talib.CDLENGULFING(data['Open'], data['High'], data['Low'], data['Close'])




# 筛选出吞噬的 K 线组合

engulfing = data[data['engulfing'] != 0]




# 输出结果

print(engulfing)

執行結果輸出 :

*********************100%***********************]  1 of 1 completed

                  Open        High         Low       Close   Adj Close  \

Date                                                                     

2023-01-06  103.000000  114.389999  101.809998  113.059998  113.059998   

2023-01-10  121.070000  122.760002  114.919998  118.849998  118.849998   

2023-03-06  198.539993  198.600006  192.300003  193.809998  193.809998   

2023-03-16  180.369995  185.809998  178.839996  184.130005  184.130005   

2023-03-17  184.520004  186.220001  177.330002  180.130005  180.130005   

2023-04-12  190.740005  191.580002  180.309998  180.539993  180.539993   

2023-04-18  187.149994  187.690002  183.580002  184.309998  184.309998   

2023-05-10  172.550003  174.429993  166.679993  168.539993  168.539993   

2023-05-12  176.070007  177.380005  167.229996  167.979996  167.979996   

2023-06-06  216.139999  221.910004  212.529999  221.309998  221.309998   

2023-06-08  224.220001  235.229996  223.009995  234.860001  234.860001   

2023-06-21  275.130005  276.989990  257.779999  259.459991  259.459991   




               Volume  engulfing  

Date                              

2023-01-06  220911100        100  

2023-01-10  167642500       -100  

2023-03-06  128100100       -100  

2023-03-16  121136800        100  

2023-03-17  133197100       -100  

2023-04-12  150256300       -100  

2023-04-18   92067000       -100  

2023-05-10  119840700       -100  

2023-05-12  157577100       -100  

2023-06-06  146911600        100  

2023-06-08  164489700        100  

2023-06-21  211797100       -100  

範例程式說明。

import yfinance as yf

import talib

import pandas as pd

在這段程式當中。我們首先必須宣告使用這3個引入的套件。yFinance是大家熟悉的老朋友了。talib是我們這次的主角。最後,我們還必須要匯入大名鼎鼎的。pandas來協助我們處理數據框的工作。




# 计算吞噬的 K 线组合

data['engulfing'] = talib.CDLENGULFING(data['Open'], data['High'], data['Low'], data['Close'])

這一段敘述就是程式碼裡面的靈魂。說明如何使用talib來幫我們尋找符合吞噬圖形的形態。然後將結果存入得data這個我們原存放股票歷史資料數據框裡面。在這個數據框裡多增加了一列名為吞噬的資料。在talib的規定當中,如果資料當中不符合所需要的條件;那么會在這一列對應的日期欄位當中表示為0。如果尋找到可以做多的吞噬型態,該欄改標示為100。相對的,如果尋找到的是屬於做空的吞噬圖形。則標示為-100。在這裡有一個使用的規則,或者是習慣想跟大家說明一下。在這條敘述當中,為什麼必須要帶入開高低收這4個數據呢?因為當執行型態辨識的時候。它必須要去用到。開高低收數據來運算,所以我們必須要帶入供它使用。相對的,如果在未來,比如我們使用計算MACD之類的話。那么,我們僅需要帶入收盤價便可。因為在MACD的運算當中;其他的價格並不需要用到。這就是talib帶入的其中一項使用規則。是我們必須要去了解的。基本上它跟其他套件引入參數的規定與用法沒有其他不同。

# 筛选出吞噬的 K 线组合

engulfing = data[data['engulfing'] != 0]




# 输出结果

print(engulfing)

所以我們可以在這裡。篩選將該列當中不等於零的結果,存放在吞噬這個變數當中。最終,把這個篩選結果的數據框列印出來。這樣就完成了我們所需要的工作。還是很簡單吧,用不了幾行,那就趕快動手玩起來。

在以下連結的說明文件當中。我們可以找到talib所有的有關型態辨識的名稱。

talib-document/func_groups/pattern_recognition.md at master · HuaRongSAO/talib-document · GitHub

只要把相對的名稱去置換程式當中;就能夠協助我們尋找出需要的對應形態了;非常方便。我記得它也可以使用All的指令。這代表了一次把所有的K線形態。找齊,省得麻煩。有興趣的大家可以試試看。以下我就試著轉幾個一般認為比較值得信賴的形態,提供給大家參考。

函数名:CDL3BLACKCROWS 函数名:CDL3BLACKCROWS

名称:Three Black Crows 三只乌鸦

简介:三日K线模式,连续三根阴线,每日收盘价都下跌且接近最低价, 每日开盘价都在上根K线实体内,预示股价下跌。




函数名:CDL3WHITESOLDIERS 函数名:CDL3WHITESOLDIERS

名称:Three Advancing White Soldiers 三个白兵

简介:三日K线模式,三日K线皆阳, 每日收盘价变高且接近最高价,开盘价在前一日实体上半部,预示股价上升。




函数名:CDLEVENINGSTAR 函数名:CDLEVENINGSTAR

名称:Evening Star 暮星

简介:三日K线模式,与晨星相反,上升趋势中, 第一日阳线,第二日价格振幅较小,第三日阴线,预示顶部反转。




函数名:CDLMORNINGSTAR 函数名:CDLMORNINGSTAR

名称:Morning Star 晨星

简介:三日K线模式,下跌趋势,第一日阴线, 第二日价格振幅较小,第三天阳线,预示底部反转。




函数名:CDLRISEFALL3METHODS 名称:Rising/Falling Three Methods 上升/下降三法

简介: 五日K线模式,以上升三法为例,上涨趋势中, 第一日长阳线,中间三日价格在第一日范围内小幅震荡, 第五日长阳线,收盘价高于第一日收盘价,预示股价上升。

這就是今天對talib所做的一個非常簡單的探索以及介紹。今天就先到這裡假日愉快下期見。

raw-image





6會員
19內容數
一個專為金融專業設計的專題。介紹量化交易的基本概念和使用Python進行量化交易策略開發的方法。專題涵蓋金融市場運作、技術分析,實例和代碼提供,幫助理解和應用不同的交易策略和指標。此外,介紹了回測工具的使用和風險管理技巧。本專題為對量化交易有興趣的讀者提供了全面的學習指南。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
【使用AI協助工作時,避免職場糾紛的3大策略】AI的輔助工具對於工作效率的提升有著深遠的影響。 然而,隨著AI在職場中的使用變得越來越普遍,相對的,因此產生的職場糾紛也愈發頻繁。有時候,我們不得不依賴法律的力量,以確保公平且有序的工作環境。 使用AI協助工作時,這是避免職場糾紛的3大策略: 策略1 - AI的生成結果還需人類把關:在使用AI協助
Thumbnail
avatar
王啟樺
2023-06-30
【使用三段式寫作法40天後,讓我解鎖語音辨識高效學習,成為高產思考者的3個重大發現】對於經常需要透過文字表達思維的知識工作者來說,這篇文章能為你開啟一扇新的大門。 三段式寫作法的運用,將能有效解決你在語音辨識學習過程中,如何提升效率和深度的問題。同時,它將將為你帶來全新的學習體驗。 使用三段式寫作法40天來,我透過語音辨識,與自我語言的互動。在此過程中,我有三個重大關於成為高產思考
Thumbnail
avatar
王啟樺
2023-06-18
【使用子彈筆記守護靈光一閃的想法的3個最佳實踐】你是否也在日常生活中尋找改進空間? 刻意保留那些關於"什麼有意義"的思考,你將能提升生活品質並找到更好的方法! 下面是3個我使用子彈筆記20+天後,獲得守護靈光一閃的想法的3個最佳實踐:
Thumbnail
avatar
王啟樺
2023-05-23
【使用Obsidian管理實體書閱讀心得,需要注意的3個重要目標】你還記得2年前讀過的書裡面的內容嗎? 開卷有益,但是實體書最大的問題,就是裡面有用的資訊,很難在我們遇到問題時,找出來使用。 但利用Obsidian,這個大問題終於有解了! 下面是使用Obsidian管理實體書閱讀心得,你需要注意的3個重要目標: 重要目標1 - 提高知識的重複利用率:將實體書的洞察
Thumbnail
avatar
王啟樺
2023-05-09
【 使用Macbook語音辨識功能,幫助我們持續與Obsidian筆記系統對話,發展創意的3個方案】你有嘗試過用語音辨識做筆記嗎? Macbook上的語音辨識功能非常好用!大大改變了我的筆記習慣!
Thumbnail
avatar
王啟樺
2023-05-07
【使用Obsidian 22個月實踐知識細化,卡片筆記法帶給我源源不絕價值的3個底層原理】Obsidian真的徹底改變了我與知識互動的方式 Obsidian鼓勵的卡片筆記,讓我將知識可以分割成小小塊的卡片,又保留卡片之間的連結。 小塊卡片將知識細化,變得很容易消化,讓我即使只有1分鐘也能思考一些東西。 在Obsidian實踐了22個月的知識細化卡片筆記法, 底層原理1 - 更靈活交替「碎
Thumbnail
avatar
王啟樺
2023-04-21
【使用這3個靈感捕捉器,紀錄你隨時出現的想法吧!】「啊,我想到…..」 你是不是常常有很多念頭,但沒有記錄下來,就不見了? 我從16年前,高中的時候,就從書上認識到「紀錄的重要性」。 紀錄不但幫我們整理思緒,累積經驗,更能成為寫作的素材! 下面三個工具,是我這16年來持續實驗,目前認為最棒最棒的三個靈感捕捉器
Thumbnail
avatar
王啟樺
2023-03-30
【使用Obsidian 22個月後,讓我成為進階知識工作者的3個重大體悟】Obsidian是我用過最好用的個人知識管理軟體。 Obsidian跟其他PKM軟體比起來,「連結筆記」的能力非常的強。 而Obsidian這種強調筆記連結的軟體天性,在過去22個月裡面,重新定義了我與知識互動的方式。 在這22個月與Obsidian 朝日相處的經驗裡,這是幫助我成為一個更好的知識工
Thumbnail
avatar
王啟樺
2023-03-22
使用 Notion,活出另一個 Dimension接觸 Notion 在升大學前的空檔,我找了很多活動參加,藉此提升自己的能力。當時發現原本高中使用的手帳無法符合我的需求,由於生活不再是教室和書本,而是各式各樣的新鮮事等著我去探索和規劃,因此我需要尋找適合的工具,便於我記錄、安排和回顧。 考慮到資料連通的問題(手機、平板、電腦),我從眾多選項中選擇
Thumbnail
avatar
黑輪~林毓雯
2022-09-16
使用一個月後的胺基酸洗面乳推薦你也是敏感肌、或是敏弱肌,平常皮膚容易泛紅或是過敏?或是你是痘痘肌,用了很多產品但都沒有改善嗎? 以下為三個我使用過的胺基酸洗面乳推薦 第一個: BHK's 溫和胺基酸洗面乳 第二個: rill®川 30%日本溫和保濕胺基酸洗面乳 第三個: UNT 氨基酸保濕潔顏霜 總結
avatar
張艾馨
2022-05-23