NBLOG_20230629使用TA_lib(pandas_TA) 打造一個交易策略實用工具(1TA_lib輕探)
NBLOG_20230629使用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
烛台形态识别
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所做的一個非常簡單的探索以及介紹。今天就先到這裡假日愉快下期見。
留言
張貼留言