使用TA_lib打造交易策略(TA_lib輕探3)[QuantTradingwithPython_7]

更新 發佈閱讀 11 分鐘
投資理財內容聲明


raw-image


使用TA_lib打造一個交易策略實用工具(TA_lib輕探3之趨勢青紅燈)

在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。所以在這期的文章當中,就嘗試著來完成這個任務。一樣的;按照國際慣例,先把完成的樣子走起。讓客倌們瞧瞧。就先上個熟悉的三連拍吧!

 

raw-image

 

raw-image

 

raw-image


先來個前期劇情提要。要把從上次文章完結的工作進度,跨越到最篇文章所呈現的內容;事實上,當中有2個重要的問題要解決。第一個是上期中;事實上。我們只用到了向上的箭頭。所以先必須要找到如何設定向下的箭頭?然後第2個才是。標上綠色與紅色箭頭的重點。還是讓我們先來看看原始碼吧?


import yfinance as yf

import talib

import mplfinance as mpf

import pandas as pd

%matplotlib notebook

# 下載TSLA股票的資料

symbol = "TSLA"

data = yf.download(symbol, start="2023-01-01", end="2023-07-10")

# 計算吞噬K線組合

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

data['Engulfing'] = engulfing

# 找出吞噬K線組合的日期

engulfing_dates = data.index[engulfing != 0]

bearish_engulfing_dates = data.index[engulfing == -100]

bullish_engulfing_dates = data.index[engulfing == 100]

# 在吞噬K線組合的日期上標示紅色向上箭頭和綠色向下箭頭

data['UpArrow'] = pd.Series(index=data.index, dtype='float64')

data.loc[bullish_engulfing_dates, 'UpArrow'] = data.loc[bullish_engulfing_dates, 'Low'] - 2

up_apd = mpf.make_addplot(data['UpArrow'], type='scatter', markersize=60, marker='^', panel=0, color='red')

data['DownArrow'] = pd.Series(index=data.index, dtype='float64')

data.loc[bearish_engulfing_dates, 'DownArrow'] = data.loc[bearish_engulfing_dates, 'High'] + 2

down_apd = mpf.make_addplot(data['DownArrow'], type='scatter', markersize=60, marker='v', panel=0, color='green')

# 繪製K線圖和成交量

mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price', addplot=[up_apd, down_apd])

# 輸出報表

data.to_csv('report.csv')

接下來讓我佔點篇幅,將程式原始碼再顯示一次。這樣方便讓我們來做分段的解說。

import yfinance as yf

import talib

import mplfinance as mpf

import pandas as pd

%matplotlib notebook

# 下載TSLA"股票的資料

symbol = "TSLA"

data = yf.download(symbol, start="2023-01-01", end="2023-07-10")

# 計算吞噬K線組合

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

data['Engulfing'] = engulfing

# 找出吞噬K線組合的日期

engulfing_dates = data.index[engulfing != 0]

bearish_engulfing_dates = data.index[engulfing == -100]

bullish_engulfing_dates = data.index[engulfing == 100]

raw-image

相信程式碼到這裡,該對大家都不會感到非常的陌生。到目前為止,我們完成了股票代碼設定。以及限定時間長度的資料下載。然後啟動了TaLib,來幫我們篩選出符合條件的股票K線形態。在這裡,仍然選擇目標是吞噬圖形。最後那一段;將篩選出來的結果分類,最終將它區分成三類;分別是不為零的?100。跟--100的部分。並將這3個結果的獲得日期,分別儲存在3個數列當中。有興趣的朋友。可以去看看這3個數列所儲存的內容。

# 在吞噬K線組合的日期上標示紅色向上箭頭和綠色向下箭頭

data['UpArrow'] = pd.Series(index=data.index, dtype='float64')

然後在這裡。我們創建了一個列。UpArrow向上的箭頭列。

data.loc[bullish_engulfing_dates, 'UpArrow'] = data.loc[bullish_engulfing_dates, 'Low'] – 2

然後在這個向上的箭頭列當中,如果當日多頭的吞噬圖形成立。那么我們存入當天最低價減2個價位的位置;這個數據就是未來我們要顯示箭頭的地方。

up_apd = mpf.make_addplot(data['UpArrow'], type='scatter', markersize=60, marker='^', panel=1, color='red')

這一段我們新增一個畫布"addplot"。提供我們繪圖參數便是向上箭頭的數據那一列。然後它顯示出來的形態是一種點狀圖"Scatter"。我們給它的大小設定,參數為60。顯示一個向上的箭頭。這次新增了一個參數,顏色color。我們將它設定。為紅色red。這便是紅色像張箭頭的設定部分。這裡有一箇。重要的就是panel。在這個例子當中,整個K線的顯示部分,它就是panel0;也就是主畫布。而顯示成交量的部分,便是panel1;它是一個Subplot。我稱它為子畫布。在這裡必須特別的來解說一下;我們的整個畫布在設定之後,並不是只能單獨的顯示。某一個圖形。它是一個層層堆疊上去的狀態Overlay。就好像我們可以在這個組畫布上面先畫上K線,然後可以再堆疊上去移動平均線。所以目前有2個畫布;一個是編號0的主畫布。與成交量的編號1子畫布。在程式語言的圈圈裡,一般大部分都是從零開始起算。

有興趣的朋友,可以嘗試將程式段裡面。顯示向上與向下箭頭的panel設定為。1或2。

up_apd = mpf.make_addplot(data['UpArrow'], type='scatter', markersize=60, marker='^', panel=1, color='red')

down_apd = mpf.make_addplot(data['DownArrow'], type='scatter', markersize=60, marker='v', panel=2, color='green')

那么我們的箭頭便不是顯示在主畫面上;應該會得到下面這樣的結果。在這裡就可以看到畫布編號,所佔的位置是哪些部分?


raw-image


data['DownArrow'] = pd.Series(index=data.index, dtype='float64')

data.loc[bearish_engulfing_dates, 'DownArrow'] = data.loc[bearish_engulfing_dates, 'High'] + 2

down_apd = mpf.make_addplot(data['DownArrow'], type='scatter', markersize=60, marker='v', panel=2, color='green')

這一段與上一段。剛好是完全相反的。也就是我們所要的顯示綠色箭頭向下的設定部分。首先把這個將來要標識的綠色向下箭頭,顯示在形態發生當日最高價格。往上2個價位部分。其它就跟紅色箭頭設定的都大同小異。現在終於知道了如何解決顯示兩種箭頭的方法。那就是不用花俏的方法,直接用新建立另一列數據的方式,來儲存這些資料。所以透過剛才所談的堆疊方式;未來在panel0上面,就是顯示K線向上箭頭與向下箭頭三種一起堆疊呈現。

# 繪製K線圖和成交量

mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price', addplot=[up_apd, down_apd])

# 輸出報表

data.to_csv('report.csv')

後面這一部分。就是把我們所有的設定結果顯示在螢幕上。增加的只是最後一行;呼喚一個pandas的功能,將我們的篩選結果輸出為一個CSV的檔案。方便日後隨時可以調閱。


raw-image

在這篇文章當中。我們建立了許多的資料框以及數列。其中最重要的一個便是存放了絕大部分數據的data數據框Dataframe。這個也是我們輸出報表的內容。它的結構大概長了這個樣子。

 

raw-image


你也可以使用以下的指令來開啟這個檔案,並閱讀它。

rep = pd.read_csv('report.csv')

記得要先 import pandas as pd 喔!

那么今天就先討論到這裡。真摯的的謝謝您熱情的這一路以來的參與。並歡迎加入互動討論。祝您交易順利。早安,午安晚安。


raw-image



留言
avatar-img
留言分享你的想法!
avatar-img
Parkson Dow的沙龍
9會員
19內容數
一個專為金融專業設計的專題。介紹量化交易的基本概念和使用Python進行量化交易策略開發的方法。專題涵蓋金融市場運作、技術分析,實例和代碼提供,幫助理解和應用不同的交易策略和指標。此外,介紹了回測工具的使用和風險管理技巧。本專題為對量化交易有興趣的讀者提供了全面的學習指南。
Parkson Dow的沙龍的其他內容
2023/12/19
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
2023/12/19
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
2023/12/18
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
2023/12/18
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
2023/12/18
技術文件   # Pattern Recognition Functions 形態識別    ### CDL2CROWS - Two Crows > 函數名:CDL2CROWS   名稱:Two Crows 兩隻烏鴉   簡介:三日K線模式,第一天長陽,第二天高開收陰,
Thumbnail
2023/12/18
技術文件   # Pattern Recognition Functions 形態識別    ### CDL2CROWS - Two Crows > 函數名:CDL2CROWS   名稱:Two Crows 兩隻烏鴉   簡介:三日K線模式,第一天長陽,第二天高開收陰,
Thumbnail
看更多
你可能也想看
Thumbnail
還沒有看過上一篇的可以點擊下面連結 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(1)論文解析。 這一篇會把注意力放在論文提到的技術並套用在台股市場,也會使用論文中的方法進行驗證,看看是否在台股也有一樣的超額報酬。 資料生成 第一步也是最難的一步-資料生成。 這裡
Thumbnail
還沒有看過上一篇的可以點擊下面連結 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(1)論文解析。 這一篇會把注意力放在論文提到的技術並套用在台股市場,也會使用論文中的方法進行驗證,看看是否在台股也有一樣的超額報酬。 資料生成 第一步也是最難的一步-資料生成。 這裡
Thumbnail
  接上一篇,看來花花綠綠的東西跟我們是無望了。對原本接下來的計畫也只好做一些改變。所以衹能把我們的程式碼,重新移動到了7月7號那篇文章的進度NBLOG_20230707使用TA_LIB(PANDAS_TA) 打造一個交易策略實用工具(2TA_LIB輕探之馬克快來。
Thumbnail
  接上一篇,看來花花綠綠的東西跟我們是無望了。對原本接下來的計畫也只好做一些改變。所以衹能把我們的程式碼,重新移動到了7月7號那篇文章的進度NBLOG_20230707使用TA_LIB(PANDAS_TA) 打造一個交易策略實用工具(2TA_LIB輕探之馬克快來。
Thumbnail
墨菲定律說。要什麼不一定來什麼;但不要什麼就一定會來什麼。自從幾個月前過完28歲的生日之後,有一天在洗手臺上面發現了一根掉落的白髮,就暗示的事情不會那麼的簡單。
Thumbnail
墨菲定律說。要什麼不一定來什麼;但不要什麼就一定會來什麼。自從幾個月前過完28歲的生日之後,有一天在洗手臺上面發現了一根掉落的白髮,就暗示的事情不會那麼的簡單。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
在上一期文章中。我們使用TA_lib套件。來協助我們尋找隱藏在股票價格當中的特殊K線形態並把它尋找到的結果輸出到一個表格當中。雖然結果是以100。以及-100的簡明方式來呈現;
Thumbnail
在上一期文章中。我們使用TA_lib套件。來協助我們尋找隱藏在股票價格當中的特殊K線形態並把它尋找到的結果輸出到一個表格當中。雖然結果是以100。以及-100的簡明方式來呈現;
Thumbnail
剛剛我們完成了第一個所需要的工具,用來顯示觀察的K線圖形。今天要進入一個全新的項目。既然我們已經將資料能夠順利的下載到本地端,便需要好好的來利用它。利用它來建立,所關注的股票池。
Thumbnail
剛剛我們完成了第一個所需要的工具,用來顯示觀察的K線圖形。今天要進入一個全新的項目。既然我們已經將資料能夠順利的下載到本地端,便需要好好的來利用它。利用它來建立,所關注的股票池。
Thumbnail
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
Thumbnail
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
Thumbnail
常常我們在財經節目聽到一堆技術指標都可以成功獲利,但真的如此嗎? 這麼簡單的技術指標操作就能獲利,早就人人變成有錢人了! 相信數據會說話,身為軟體工程師就最喜歡用數字來解讀一切了,因此這個篇章將會手把手教你如何使用Python語言來回測你的股票及交易策略。 剛接觸股市時最常聽到的就是KD、RSI、
Thumbnail
常常我們在財經節目聽到一堆技術指標都可以成功獲利,但真的如此嗎? 這麼簡單的技術指標操作就能獲利,早就人人變成有錢人了! 相信數據會說話,身為軟體工程師就最喜歡用數字來解讀一切了,因此這個篇章將會手把手教你如何使用Python語言來回測你的股票及交易策略。 剛接觸股市時最常聽到的就是KD、RSI、
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News