從樸實無華的再出發之二[QuantTradingwithPython_10]

更新於 發佈於 閱讀時間約 12 分鐘
投資理財內容聲明

 

raw-image


這一期繼續給我們的工具添磚加瓦;關於K線形態辨識的部分寫了好幾期,咱們總在吞噬的圖形裡面打轉,相信很多人吞著吞著都快給吞出個厭食症來了。心中不禁嘀咕;書本上幾十種形態,幹嘛老是端這道菜上來?於是咱們今天就來先打通這個任督二脈,換個菜色。順便多上幾道菜,澎湃一下餐桌的顏色。不過一次把所有的K線形態通通納入進來,這也有點不切實際。在這篇文章中。就先找幾個具有代表性的形態,先集合在一起試作。最終目標就是讓大家之後能夠非常隨意的去增刪一些新的形態。會在這裡提昇這點;是因為這裡有許多的困難點,必須要去突破。這些傷腦筋的地方,在文章中我都會說到。不過也早就知道,這條路不是那麼平坦就能走得過的。都說到這份上了,再也不點個贊,今天晚上能夠睡得安穩嗎?

在第一個階段。除了原先的吞噬形態之外;計畫加入母子以及晨星的形態。這幾個形態都是大家耳熟能詳的,並且在勝率上也蠻值得信賴的。所以在第一次嘗試上我們的三種形態來分析名單。

現在談談這裡會有什麼貓膩呢?其實不衹是有;還是叫人崩潰的那一種。在過程中才體會到自己是多麼的僥倖,也才知道上天是如何的一路照顧著我們。走到了現在,鬼使神差的讓我們選擇了吞噬形態揭開了序幕。這是一個非常容易產生的形態,幾乎在任何的一個股票資料當中都能夠被搜索辨識出來;而且數量都還蠻多的。所以在修改程式加入三種形態的過程中,平心而論;還是進行得非常順利的。但是在測試的時候,這車走著走著就給它翻過去了。不同於吞噬以及母子這兩種形態,這晨星的形態發現困難度直接給上了一個不同的高度。而它搜索不到的結果就是直接讓程序罷工,然後也順利的引發了我的大腦的罷工。

在百思不得其解困惑的時間裡,在一次看著白雪公主電影的時候,正為著賢慧端莊的皇后不能將白雪公主順利毒死而感到扼腕的時候;突然靈光乍現,一拍大腿叫道,好一顆毒蘋果!

於是決定在原先的三種形態之外,又增加了一個選項。就是顯示原始K線。增加的這項發現有兩種好處;第一是我們也常常需要顯示沒有箭頭標識的原始K線,方便比較。第二個好處就是,在程序執行的過程當中,如果無法順利的過濾出形態,就將程式導向顯示原始K線。如此也就可以順利的規避掉程式罷工的問題;真可謂是魚與熊掌兼得了。想到這裡;不禁抬起頭來跟皇后遠遠的相視一笑。沒用多久,我們的嶄新工具就進化完成了。

 

import yfinance as yf

import talib

import mplfinance as mpf

import pandas as pd

import datetime

import ipywidgets as widgets

from IPython.display import display

 # 創建資料開始結束日期、股票代碼和K線形態的小部件

start_date_widget = widgets.DatePicker(description='開始日期')

end_date_widget = widgets.DatePicker(description='結束日期')

symbol_widget = widgets.Text(description='股票代碼')

pattern_widget = widgets.Dropdown(description='選擇K線形態', options=['吞噬', '母子', '晨星', '原始K線'], value='吞噬')

button = widgets.Button(description='開始繪圖')

 # 定義按鈕點擊事件處理函數

def plot_stock_data(button):

    # 獲取所選的開始日期、結束日期、股票代碼和K線形態

    start_date = start_date_widget.value

    end_date = end_date_widget.value

    symbol = symbol_widget.value

    pattern = pattern_widget.value

    # 下載股票資料

    data = yf.download(symbol, start=start_date, end=end_date)

   # 計算所選K線形態

    if pattern == '吞噬':

        pattern_function = talib.CDLENGULFING

    elif pattern == '母子':

        pattern_function = talib.CDLHARAMI

    elif pattern == '晨星':

        pattern_function = talib.CDLMORNINGSTAR

    elif pattern == '原始K線':

        pattern_function = None

   # 判斷是否顯示原始K線

    if pattern_function is None:

        mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price')

    else:

        pattern_result = pattern_function(data['Open'], data['High'], data['Low'], data['Close'])

 # 判斷是否顯示形態K線

        if pattern_result.sum() == 0:

            mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price')

        else:

# 找出K線形態的日期

            pattern_dates = data.index[pattern_result != 0]

  # 在K線形態的日期上標記三角箭頭

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

            data.loc[pattern_dates, 'Arrow'] = data.loc[pattern_dates, 'Low'] - 2

            apd = mpf.make_addplot(data['Arrow'], type='scatter', markersize=60, marker='^', panel=0)

 # 繪製K線圖和成交量

            mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price', addplot=apd)

 

# 將主要的小部件和按鈕顯示

display(start_date_widget)

display(end_date_widget)

display(symbol_widget)

display(pattern_widget)

display(button)

 # 將按鈕的點擊事件與繪圖函數綁定

button.on_click(plot_stock_data)

 照慣例也來個三連拍吧。

 

raw-image


raw-image


raw-image


接下來我們就稍微的對程式碼來進行一個解說。

# 創建日期、股票代碼和K線形態的小部件

start_date_widget = widgets.DatePicker(description='開始日期')

end_date_widget = widgets.DatePicker(description='結束日期')

symbol_widget = widgets.Text(description='股票代碼')

pattern_widget = widgets.Dropdown(description='選擇K線形態', options=['吞噬', '母子', '晨星', '原始K線'], value='吞噬')

button = widgets.Button(description='開始繪圖')

 

這一段我們將工具裡面所用到的所有widget的小部件,全部做一個初設。特別是最後一個dropdown的widget裡面。設定進去的本次程式所需要的三種K線形態以及顯示原始K線的變數。這些本著維護中華文化的初心使用的中文字,沒想到結果讓是自己先把毒蘋果咬了一口;差一點就跟白雪公主殉情,一起被送走。這個就容後再敘吧。

 

# 計算所選K線形態

    if pattern == '吞噬':

        pattern_function = talib.CDLENGULFING

    elif pattern == '母子':

        pattern_function = talib.CDLHARAMI

    elif pattern == '晨星':

        pattern_function = talib.CDLMORNINGSTAR

    elif pattern == '原始K線':

        pattern_function = None

 

上面這一段就是乖乖的,還是要把形態改回來英文。不然就會知道為什麼當時拿破崙一直高喊著“前進”,但所有的士兵通通不理他了。不要問為什麼。問了就是把這個網絡笑話變成你自己的笑話。

看到這裡不知道大家是否看出了,發現有些東西有搞頭了。如果咱們想在這個工具上面多增加幾種形態,或者改變原先設定的形態。除了所有的中文形態名詞要改變以外,重要的就是也要去改變,上面的一些talib的形態。這些專用形態的名詞,我想還是用另外一篇文章專門來貼這些名詞,以方便大家使用時候可以查閱;接著往下看。

 

# 判斷是否顯示形態K線

        if pattern_result.sum() == 0:

            mpf.plot(data, type='candle', volume=True, title=symbol, ylabel='Price')

 

這一行就是我們毒蘋果的重點;在talib裡面。當形態順利的被搜尋出現時,會在當日的欄位裡面記錄100或者是-100,不然的話就會記錄為0。而如果這個形態在資料當中從頭到尾都沒有被尋獲,那麼整個數列都會變成是零的形態。所以這裡使用一個加總的判斷式,來釐清是否形態完全沒有被搜索到。而當這個判斷成立的時候。緊接著便不採取任何的動作直接去繪圖出來。而這個結果就等同我們去選擇顯示原始K線一樣。如此這般,我們的工作便可以在此先暫時的畫下一個完美的句點。這一期的文章我們就先談到這裡。下次繼續努力的來美化它。預計再來個一兩次來回。就會迎來我們這一個階段的圓滿收官。為這個K線形態的過濾工具,迎來一個完美的結束點。今天就先談到這裡了。祝大家早安,午安晚安。



raw-image


留言
avatar-img
留言分享你的想法!
avatar-img
Parkson Dow的沙龍
8會員
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
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
這一期繼續給我們的工具添磚加瓦;關於K線形態辨識的部分寫了好幾期,咱們總在吞噬的圖形裡面打轉,相信很多人吞著吞著都快給吞出個厭食症來了。心中不禁嘀咕;書本上幾十種形態,幹嘛老是端這道菜上來?於是咱們今天就來先打通這個任督二脈,換個菜色。
Thumbnail
這一期繼續給我們的工具添磚加瓦;關於K線形態辨識的部分寫了好幾期,咱們總在吞噬的圖形裡面打轉,相信很多人吞著吞著都快給吞出個厭食症來了。心中不禁嘀咕;書本上幾十種形態,幹嘛老是端這道菜上來?於是咱們今天就來先打通這個任督二脈,換個菜色。
Thumbnail
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
Thumbnail
 大家好。很高興在這個新的部落格上面。有機會能再跟大家一起討論交易的兩三事。未來我們將在這個新的地方上面;與大家一步一步地,建立起屬於我們自己個性化的量化交易平臺;敬請期待。
Thumbnail
過往刻意選了本身股性比較活潑的個股股票 經過思考之後 從今開始會改變一下分享的個股 會開始帶一些用分點進出判斷多空 即便如此 停損停利的重要性還是要有 不如預期 一定要果斷停損 避免
Thumbnail
過往刻意選了本身股性比較活潑的個股股票 經過思考之後 從今開始會改變一下分享的個股 會開始帶一些用分點進出判斷多空 即便如此 停損停利的重要性還是要有 不如預期 一定要果斷停損 避免
Thumbnail
給老同學看 以下是以過去籌碼分點切入整理 如主力券商沒有用匯撥方式出脫 如果你看籌碼分點有些已經1.2年沒動靜了 除非是長線券商 不然通常早就轉到其他券商出清了(匯撥) 學會看各分點籌碼至少買到隔日沖券商風險會減少一半 教你避免誤入隔日沖主力的誘惑 以東鹼1708為例 https://www.c
Thumbnail
給老同學看 以下是以過去籌碼分點切入整理 如主力券商沒有用匯撥方式出脫 如果你看籌碼分點有些已經1.2年沒動靜了 除非是長線券商 不然通常早就轉到其他券商出清了(匯撥) 學會看各分點籌碼至少買到隔日沖券商風險會減少一半 教你避免誤入隔日沖主力的誘惑 以東鹼1708為例 https://www.c
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例,但實際操作上我建議各位還是先以股票為主,主要理由是股票和期貨雖然技術上的分析方法是一樣的,不過它們
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例,但實際操作上我建議各位還是先以股票為主,主要理由是股票和期貨雖然技術上的分析方法是一樣的,不過它們
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例,但實際操作上我建議各位還是先以股票為主,主要理由是股票和期貨雖然技術上的分析方法是一樣的,不過它們
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例,但實際操作上我建議各位還是先以股票為主,主要理由是股票和期貨雖然技術上的分析方法是一樣的,不過它們
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例
Thumbnail
在社團上看到有伙伴應用最近教的訊號作指數賺錢,真是感動得快要哭了。我們今天先用最近的走勢來複習上週的課程,順便預擬一下接下來的策略。   先跟大家提一點,雖然我們目前的技術分析課程都是以指數線圖為例
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News