使用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
7會員
19內容數
一個專為金融專業設計的專題。介紹量化交易的基本概念和使用Python進行量化交易策略開發的方法。專題涵蓋金融市場運作、技術分析,實例和代碼提供,幫助理解和應用不同的交易策略和指標。此外,介紹了回測工具的使用和風險管理技巧。本專題為對量化交易有興趣的讀者提供了全面的學習指南。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Parkson Dow的沙龍 的其他內容
在上一期文章中。我們使用TA_lib套件。來協助我們尋找隱藏在股票價格當中的特殊K線形態並把它尋找到的結果輸出到一個表格當中。雖然結果是以100。以及-100的簡明方式來呈現;
剛剛我們完成了第一個所需要的工具,用來顯示觀察的K線圖形。今天要進入一個全新的項目。既然我們已經將資料能夠順利的下載到本地端,便需要好好的來利用它。利用它來建立,所關注的股票池。
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
在上一期文章中。我們使用TA_lib套件。來協助我們尋找隱藏在股票價格當中的特殊K線形態並把它尋找到的結果輸出到一個表格當中。雖然結果是以100。以及-100的簡明方式來呈現;
剛剛我們完成了第一個所需要的工具,用來顯示觀察的K線圖形。今天要進入一個全新的項目。既然我們已經將資料能夠順利的下載到本地端,便需要好好的來利用它。利用它來建立,所關注的股票池。
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本策略主要用在盤勢強勢上漲時,等待盤勢拉回且維持在長紅K棒之上,進行的拉回買進策略,目的是不追高買進,讓順勢過程中確保成本不必追高的交易策略。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為弱勢盤,當成交量能達到當日一定的量能時,當日順勢向下的盤面機率就會增加,適合空方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用ATR指標,主要在台指期夜盤勢進行操作,當多方強勢時,站上ATR軌道上原則積極買進操作,當跌破ATR下緣時則停損停利出場,當中包含的移動停利與停損的概念,是非常棒的交易策略。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為攻擊盤,當成交量能達到當日一定的量能時,當日順勢向上的盤面機率就會增加,適合多方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
原本將空方策略放上去後,準備有機會往下走一波,碰到20MA均線之後,就有強力支撐,之後就一路往上噴,那策略就只能一直觸發多方策略,本周賺了860點,算是一大進補,大賺一次可以有好幾次小賠可以使用了。
Thumbnail
趨勢線是金融市場中重要的交易工具,能幫助交易者預測價格走勢並制定交易策略。本文介紹了趨勢線的繪製方法,趨勢反轉的識別以及策略補強規則。閱讀本文可以讓讀者更好地理解趨勢線的應用,提高交易的成功率。
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】很多股票投資人,都想要預測,什麼時候股票會漲,什麼時候股票會跌,但是最廣為人的K線等技術指標,最容易失靈的原因,他是透過歷史數據而形成的走勢圖,就好像看這後照鏡開車,所以使用景氣燈號,是一個更好的方法。
Thumbnail
本周的大量紅K策略是主要大賺的部分,受到大盤順勢的往上推升,利用大量紅K底部作為主要支撐可以抱好抱穩順勢往上獲利,過程中看盤確實很容易看到漲多想要空他,但這就是大量紅K支撐的關鍵重點,非常適合用來作為支撐的觀察重點。
Thumbnail
今天多方策略直接吃鱉,開高走低,當策略突破向上通常訊號指標都會有,反轉僅能依靠停損來設計,不知道大家對策略有什麼想法可以分享看看。
Thumbnail
學習K線圖的好處是能夠在這項技能當中研判各國股市、匯率或個股的趨勢脈動,因K棒的形成是真金白銀打出來的型態,就是最真實的市場的反映,若將K棒及成交量結合,就能掌握大部分市場的走向,未來您可以做波段或是當沖交易都適用,就不需要再聽任何消息能夠自己做判斷。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本策略主要用在盤勢強勢上漲時,等待盤勢拉回且維持在長紅K棒之上,進行的拉回買進策略,目的是不追高買進,讓順勢過程中確保成本不必追高的交易策略。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為弱勢盤,當成交量能達到當日一定的量能時,當日順勢向下的盤面機率就會增加,適合空方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用ATR指標,主要在台指期夜盤勢進行操作,當多方強勢時,站上ATR軌道上原則積極買進操作,當跌破ATR下緣時則停損停利出場,當中包含的移動停利與停損的概念,是非常棒的交易策略。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為攻擊盤,當成交量能達到當日一定的量能時,當日順勢向上的盤面機率就會增加,適合多方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
原本將空方策略放上去後,準備有機會往下走一波,碰到20MA均線之後,就有強力支撐,之後就一路往上噴,那策略就只能一直觸發多方策略,本周賺了860點,算是一大進補,大賺一次可以有好幾次小賠可以使用了。
Thumbnail
趨勢線是金融市場中重要的交易工具,能幫助交易者預測價格走勢並制定交易策略。本文介紹了趨勢線的繪製方法,趨勢反轉的識別以及策略補強規則。閱讀本文可以讓讀者更好地理解趨勢線的應用,提高交易的成功率。
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】很多股票投資人,都想要預測,什麼時候股票會漲,什麼時候股票會跌,但是最廣為人的K線等技術指標,最容易失靈的原因,他是透過歷史數據而形成的走勢圖,就好像看這後照鏡開車,所以使用景氣燈號,是一個更好的方法。
Thumbnail
本周的大量紅K策略是主要大賺的部分,受到大盤順勢的往上推升,利用大量紅K底部作為主要支撐可以抱好抱穩順勢往上獲利,過程中看盤確實很容易看到漲多想要空他,但這就是大量紅K支撐的關鍵重點,非常適合用來作為支撐的觀察重點。
Thumbnail
今天多方策略直接吃鱉,開高走低,當策略突破向上通常訊號指標都會有,反轉僅能依靠停損來設計,不知道大家對策略有什麼想法可以分享看看。
Thumbnail
學習K線圖的好處是能夠在這項技能當中研判各國股市、匯率或個股的趨勢脈動,因K棒的形成是真金白銀打出來的型態,就是最真實的市場的反映,若將K棒及成交量結合,就能掌握大部分市場的走向,未來您可以做波段或是當沖交易都適用,就不需要再聽任何消息能夠自己做判斷。