NBLOG_20230926 PYTHON量化交易;股票池工具番外篇,為什麼是吞噬?

Translator
Translator

 


NBLOG_20230926 PYTHON量化交易;股票池工具番外篇,為什麼是吞噬?


番外篇真的來了!番外篇真的來了!番外篇真的來了!沒事窮緊張的話,要說三遍。進入主題前,想先跟大家聊些貼心話。先別急著;這期還是有準備乾貨底,急忙跳走,明天就看不到熱騰騰新鮮貨囉!

首先想要跟朋友們再談談;這一系列文章所要達到的目標與理想。主要是想透過Python這一個量化投資交易的重要語言,來協助大家能夠完成理想中的交易輔助工具;進而協助減輕我們從事交易工作時的負擔,更進一步的增進自我市場的獲利能力。在計畫中,將從股票資料庫與股票池的獲得與建立、交易策略的設計與評估;到最後策略的回測評估,這便是最初設計這系列文章的理想與企圖。在實行方面;當在設計與規劃這些工具時,將力求其達成模組化及考慮未來的實用性。所以Python的程式寫作教育能力,並不是我們文章的重點。還是那句老話,這一部分網絡上許多大神的程式教學文章,都是極佳的學習範例;工具未來的發展使用與方便改良才是。這些工具的程式規模,嚴格來說;都是非常小型的。但是這些程式小工具,也幾乎都是個人多年以來,在從事交易工作當中,一直期待能夠擁有的輔助小工具。所以真心的希望這些工具,能夠帶給大家在交易工作上,有所幫忙與便利。





大家應該都知道,前一陣子我們已經完成了股票池的建立部分。所以這個番外篇,是想藉著這個機會。跟大家談一談。這。股票池這部分一路以來,我為什麼這樣設計的主要原因?這也是這個番外篇的由來。當中最重要的;相信大家都會有一個疑惑,為什麼在很多舉例當中;我們都拿吞噬這個特殊的形態來做範例?事實上,如果大家看過TAlib的說明檔,應該會知道;這個套件可以辨識60多種常見的K線形態。而我們特別挑中吞噬這個形態,事實上是有原因的。

大家都曉得;K線形態是交易當中非常重要的一個工具。許多人都非常地推崇它,甚至到了一種狂熱的程度。我在過去油管的視頻當中也曾經提到這點;許多從事裸K交易的交易者,就好像站在人工交易鄙視鏈的頂端,不可一世。但事實上在K線形態交易上,型態辨識的部分不是什麼技術問題。無論你是花時間,虐待自己去背誦它。或者像大家現在這樣;藉助程式工具來幫助我們找出它,都不是一件困難的事情。相信在初學者當中,對於使用K線作為交易工具的最大挑戰,應該就是形態獲勝機率的問題。什麼樣的形態出現,是代表的一種必勝的暗示?一個上天即將掉下餡餅來的強烈暗示。相信這比筆辨識出何種型態,會更讓一個交易者興奮。從某個角度來想;這不也是我們所要的交易量化嗎?對這個問題的探討,個人想提出一些自己研究的心得。這也是為什麼選擇吞噬形態的原因。我的答案就是:

這無處不在的背離;Divergence R Everywhere !

個人推廣背離的交易理念,應該已經超過20年了。其中透過專書的敘述,也超過了10年。背離形態在交易當中,所提供的幫助與重要性;已經無需我再贅言。沒意外的這裡背離的訊號,又在一次提供了我們非常大的協助。它幫助了要如何識別K線形態的可靠性提示。這也就是為什麼選擇吞次型態推薦的原因。先來讓我們看看,下面所提供的實例。

 




首先箭頭標示出在日線上所形成的一個吞噬形態。我們之所以重視它的原因,就是因為吞噬在圖形上,當天的K線實體;完全的包覆住昨天的K線實體。在某種意義上來說;無論今天的K線是否帶有下影線,本日的最低價都確定突破了昨天的低價。而這其中所隱藏的,當我們把時間調低到15分鐘的區間時,便可以看到一些端倪。

 




在15分鐘的走勢當中,可以很清楚的發現到它,所形成的一個漂亮的三型底背。這便是隱含在吞噬當中的秘密。所以日線的吞噬型態當中,如果在分時存在標準的底背訊號;這幾乎可以確定這個形成的吞噬圖形,極可能未來擁有上漲空間。這也是我特別關注吞噬形態的主要原因。吞噬這個圖形本身就含有著,大家常常掛在嘴邊的“破底穿頭”形態。呃、這些力道就是加強了吞噬成功率的重要因素。讓我們再看看另外一個方向的情形。

 




箭頭標示的是蘋果電腦公司(AAPL)股價,在9月20號所形成的一個空頭吞噬形態。同樣的,我們將這個吞噬的日期放大到15分鐘的圖形裡也可以發現到,當中所隱藏的三型空頭背離。

 




如果;理解了我這一段解說的其中含意。你應該會從此開始注意,並且真正的理解到在眾多的K線形態當中,有什麼是真正值得去信賴的形態。讓我們再舉另外一個具有同樣意義的K線形態;這個形態在許多K線交易者的心目當中,絕對是好毫無異議的具有推崇的地位。其實它當中所隱藏的奧秘,跟剛才所介紹的吞噬其實相差無幾。它就是許多人當遇到了後都毫不猶豫選擇進場從事交易的一種十拿九穩的K線信賴形態。它就是上升三型,CDLRISEFALL3METHODS(TAlib)。 

 





在傳統的上升三型定義當中;第一天的陽棒,幾乎就決定了之後形態的活動空間。隨後跟隨而來的3天小陰線都必須存在這個空間當中。特別是第一天的當日最低價,是一個不可逾越的紅線。最後一天的陽線也同樣遵守著這個底線的規則。但是收盤價,則完全收復了這幾天的多頭失土。完整的形態由5根K線來形成。最後一天的收盤價。也是這5天以來最高的收盤價。這是一個非常值得信賴的K線形態。我們可以看到;國外的交易者,對於這個上升三型成功的獲勝率給予高度的74%成功率。其實同樣的,我們可以在分時當中,在3天下跌的小陰線最低價的地方,找到一個多頭底背的訊號。如果最後一天的陽線最低價,是低於前3天陰線的最低價。則底背有可能是在最後一天才形成。在這裡,3天陰線的低價,是可以被突破的。但是整個形態的完整性,第一天陽線的最低價,則不可被跌破;是必須嚴格遵守的。這是我們定義這個形態的重要確認點。其實總結一下;在這兩個型態當中,在我的看法;他們扮演整理形態位置的勝率表現,甚至是優於他們在反轉位置的表現。

 




說到這裡了,那就再準備上今天的另一道硬菜吧。今天所提供的這個小工具,是真正的體現了“掃描”這個字義。我們將在自己所制定的股票代碼列表當中,去形成一個遍歷的循環。然後下載歷史數據,並且掃描最後一天是否形成需要的K線形態?然後將列表當中吻合條件尋找出形態的股票代碼,彙整成一份報表輸出並儲存在本地的電腦;方便之後查詢。就讓我們走起吧!


 



import pandas as pd

import yfinance as yf

import talib


# 載入文件

df = pd.read_excel('MostActive 100.xlsx')


# 建立空的結果列表

results = []


# 遍歷每一行

for index, row in df.iterrows():

    symbol = row['Symbol']


    # 使用 yfinance 下載股價資料

    data = yf.download(symbol, period='5d')


    if not data.empty:

        # 使用 talib 搜索形態

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


        # 取得最後交易日的形態

        pattern = patterns[-1]


        if pattern != 0:

            # 將結果加入列表

            results.append({'日期': data.index[-1].strftime('%Y-%m-%d'), 'Symbol': symbol, '形態': pattern})


# 將結果輸出為表格

result_df = pd.DataFrame(results)

result_df.to_csv('output.csv', index=False)


# 列印掃描結果

print("K線形態搜尋完畢!")

result_df


一路實作下來的朋友們,應該對這段程式碼不會有任何的陌生感。基本上都是之前有解說過的。這次拿我們之前所完成的美股活躍股票前100名的名單,來進行掃描篩選。最終將結果輸出成為城一份csv檔,名為output.csv。

在下載部分;並不是使用之前所設定的開始與結束的日期格式。因為這次我們只要掃描最後一天,是否有形成形態;所以只要下載最後的5筆資料便足夠運用了。如此亦可以大量的減低程式執行的時間。

data = yf.download(symbol, period='5d')

另外,我仍提示一下;如果大家尋找的比如是這樣的常見型態,沒什麼意外的話應該每天都可以掃出幾個來。但是,如果想尋找的形態是我們所講的上升或下降三行;不要驚訝,很可能掃出來,是掃出個寂寞來。這也沒有什麼奇怪的,因為這種形態實在不是很容易產生的;也因為如此,所以它才顯得如此的珍貴。好了!這就是番外篇提供給大家的小工具。這個番外篇希望大家能夠喜歡;也期待與您的互動。那我們就先說到這裡。祝大家中秋愉快!交易順利!早安、午安、晚安。










2023/09/19 于國立高雄科技大學 。講座題目 :【成為量化交易者】PPT歡迎Email來信索取






留言

熱門文章