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

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


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





avatar-img
7會員
19內容數
一個專為金融專業設計的專題。介紹量化交易的基本概念和使用Python進行量化交易策略開發的方法。專題涵蓋金融市場運作、技術分析,實例和代碼提供,幫助理解和應用不同的交易策略和指標。此外,介紹了回測工具的使用和風險管理技巧。本專題為對量化交易有興趣的讀者提供了全面的學習指南。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Parkson Dow的沙龍 的其他內容
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
AI的輔助工具對於工作效率的提升有著深遠的影響。 然而,隨著AI在職場中的使用變得越來越普遍,相對的,因此產生的職場糾紛也愈發頻繁。有時候,我們不得不依賴法律的力量,以確保公平且有序的工作環境。 使用AI協助工作時,這是避免職場糾紛的3大策略: 策略1 - AI的生成結果還需人類把關:在使用AI協助
Thumbnail
對於經常需要透過文字表達思維的知識工作者來說,這篇文章能為你開啟一扇新的大門。 三段式寫作法的運用,將能有效解決你在語音辨識學習過程中,如何提升效率和深度的問題。同時,它將將為你帶來全新的學習體驗。 使用三段式寫作法40天來,我透過語音辨識,與自我語言的互動。在此過程中,我有三個重大關於成為高產思考
Thumbnail
你是否也在日常生活中尋找改進空間? 刻意保留那些關於"什麼有意義"的思考,你將能提升生活品質並找到更好的方法! 下面是3個我使用子彈筆記20+天後,獲得守護靈光一閃的想法的3個最佳實踐:
Thumbnail
你還記得2年前讀過的書裡面的內容嗎? 開卷有益,但是實體書最大的問題,就是裡面有用的資訊,很難在我們遇到問題時,找出來使用。 但利用Obsidian,這個大問題終於有解了! 下面是使用Obsidian管理實體書閱讀心得,你需要注意的3個重要目標: 重要目標1 - 提高知識的重複利用率:將實體書的洞察
Thumbnail
你有嘗試過用語音辨識做筆記嗎? Macbook上的語音辨識功能非常好用!大大改變了我的筆記習慣!
Thumbnail
Obsidian真的徹底改變了我與知識互動的方式 Obsidian鼓勵的卡片筆記,讓我將知識可以分割成小小塊的卡片,又保留卡片之間的連結。 小塊卡片將知識細化,變得很容易消化,讓我即使只有1分鐘也能思考一些東西。 在Obsidian實踐了22個月的知識細化卡片筆記法, 底層原理1 - 更靈活交替「碎
Thumbnail
「啊,我想到…..」 你是不是常常有很多念頭,但沒有記錄下來,就不見了? 我從16年前,高中的時候,就從書上認識到「紀錄的重要性」。 紀錄不但幫我們整理思緒,累積經驗,更能成為寫作的素材! 下面三個工具,是我這16年來持續實驗,目前認為最棒最棒的三個靈感捕捉器
Thumbnail
Obsidian是我用過最好用的個人知識管理軟體。 Obsidian跟其他PKM軟體比起來,「連結筆記」的能力非常的強。 而Obsidian這種強調筆記連結的軟體天性,在過去22個月裡面,重新定義了我與知識互動的方式。 在這22個月與Obsidian 朝日相處的經驗裡,這是幫助我成為一個更好的知識工
Thumbnail
接觸 Notion 在升大學前的空檔,我找了很多活動參加,藉此提升自己的能力。當時發現原本高中使用的手帳無法符合我的需求,由於生活不再是教室和書本,而是各式各樣的新鮮事等著我去探索和規劃,因此我需要尋找適合的工具,便於我記錄、安排和回顧。 考慮到資料連通的問題(手機、平板、電腦),我從眾多選項中選擇
你也是敏感肌、或是敏弱肌,平常皮膚容易泛紅或是過敏?或是你是痘痘肌,用了很多產品但都沒有改善嗎? 以下為三個我使用過的胺基酸洗面乳推薦 第一個: BHK's 溫和胺基酸洗面乳 第二個: rill®川 30%日本溫和保濕胺基酸洗面乳 第三個: UNT 氨基酸保濕潔顏霜 總結
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
AI的輔助工具對於工作效率的提升有著深遠的影響。 然而,隨著AI在職場中的使用變得越來越普遍,相對的,因此產生的職場糾紛也愈發頻繁。有時候,我們不得不依賴法律的力量,以確保公平且有序的工作環境。 使用AI協助工作時,這是避免職場糾紛的3大策略: 策略1 - AI的生成結果還需人類把關:在使用AI協助
Thumbnail
對於經常需要透過文字表達思維的知識工作者來說,這篇文章能為你開啟一扇新的大門。 三段式寫作法的運用,將能有效解決你在語音辨識學習過程中,如何提升效率和深度的問題。同時,它將將為你帶來全新的學習體驗。 使用三段式寫作法40天來,我透過語音辨識,與自我語言的互動。在此過程中,我有三個重大關於成為高產思考
Thumbnail
你是否也在日常生活中尋找改進空間? 刻意保留那些關於"什麼有意義"的思考,你將能提升生活品質並找到更好的方法! 下面是3個我使用子彈筆記20+天後,獲得守護靈光一閃的想法的3個最佳實踐:
Thumbnail
你還記得2年前讀過的書裡面的內容嗎? 開卷有益,但是實體書最大的問題,就是裡面有用的資訊,很難在我們遇到問題時,找出來使用。 但利用Obsidian,這個大問題終於有解了! 下面是使用Obsidian管理實體書閱讀心得,你需要注意的3個重要目標: 重要目標1 - 提高知識的重複利用率:將實體書的洞察
Thumbnail
你有嘗試過用語音辨識做筆記嗎? Macbook上的語音辨識功能非常好用!大大改變了我的筆記習慣!
Thumbnail
Obsidian真的徹底改變了我與知識互動的方式 Obsidian鼓勵的卡片筆記,讓我將知識可以分割成小小塊的卡片,又保留卡片之間的連結。 小塊卡片將知識細化,變得很容易消化,讓我即使只有1分鐘也能思考一些東西。 在Obsidian實踐了22個月的知識細化卡片筆記法, 底層原理1 - 更靈活交替「碎
Thumbnail
「啊,我想到…..」 你是不是常常有很多念頭,但沒有記錄下來,就不見了? 我從16年前,高中的時候,就從書上認識到「紀錄的重要性」。 紀錄不但幫我們整理思緒,累積經驗,更能成為寫作的素材! 下面三個工具,是我這16年來持續實驗,目前認為最棒最棒的三個靈感捕捉器
Thumbnail
Obsidian是我用過最好用的個人知識管理軟體。 Obsidian跟其他PKM軟體比起來,「連結筆記」的能力非常的強。 而Obsidian這種強調筆記連結的軟體天性,在過去22個月裡面,重新定義了我與知識互動的方式。 在這22個月與Obsidian 朝日相處的經驗裡,這是幫助我成為一個更好的知識工
Thumbnail
接觸 Notion 在升大學前的空檔,我找了很多活動參加,藉此提升自己的能力。當時發現原本高中使用的手帳無法符合我的需求,由於生活不再是教室和書本,而是各式各樣的新鮮事等著我去探索和規劃,因此我需要尋找適合的工具,便於我記錄、安排和回顧。 考慮到資料連通的問題(手機、平板、電腦),我從眾多選項中選擇
你也是敏感肌、或是敏弱肌,平常皮膚容易泛紅或是過敏?或是你是痘痘肌,用了很多產品但都沒有改善嗎? 以下為三個我使用過的胺基酸洗面乳推薦 第一個: BHK's 溫和胺基酸洗面乳 第二個: rill®川 30%日本溫和保濕胺基酸洗面乳 第三個: UNT 氨基酸保濕潔顏霜 總結