iT邦幫忙

2023 iThome 鐵人賽

DAY 8
1
AI & Data

用Python程式進行股票技術分析系列 第 8

Day 8 直線趨勢線

  • 分享至 

  • xImage
  •  

直線趨勢線定義

直線趨勢線由使用者於看盤軟體上手繪而產生,而非電腦程式運算。其定義為將K線圖中的轉折點,兩點高點或低點相連成一直線,就可以形成直線趨勢線。當低點相連,則形成「上升趨勢線 」或「上升支撐線」;當高點相連,則形成「下降趨勢線」或 「下降壓力線」。並且直線趨勢線可以用來判斷以及代表趨勢的多空、強弱、長短。

直線趨勢線的程式化

雖然直線趨勢線是主觀認定並且以手繪方式(也就是在看盤軟體上畫線)所產生,不過應該還是有些規則可循。以下是我整理的程序,也將用於之後的程式實作:

  • 以人工方式在K線圖上尋找兩個轉折點
    • 先尋找K線上的一點(開盤價、收盤價、最高價或最低價的其中之一)做為「起點」,再尋找下一個K線上的一點(開盤價、收盤價、最高價或最低價的其中之一)做為「終點」
    • 於Day9時將會談到用程式演算而非人工方式尋找轉折點
  • 將找到的兩個轉折點連成一直線
    • 有時為了判斷趨勢發展,會將這條直線向前或向後延伸

程式實作:以人工方式設定轉折點並繪製直線趨勢線

下圖為股票老師手繪的兩條趨勢線於周K線圖上:
Imgur
先以人工方式標註四個轉折點:

  • 趨勢線(藍)的起點:2022年10月31日之最低價
    • 趨勢線(藍)會向前延伸,因此實際的趨勢線是從2022年10月24日開始
  • 趨勢線(藍)的終點:2023年5月15日之開盤價
    • 趨勢線(藍)會向後延伸,因此實際的趨勢線是到2023年7月31日結束
  • 趨勢線(紅)的起點:2023年5月15日之最低價
  • 趨勢線(紅)的終點:2023年7月31日之最低價

把上面敘述轉換為程式碼,如下所示:

# 人工設定上升趨勢線(藍)
trendline_up1_x = [date_to_index(df_k_line,'2022-10-31'),date_to_index(df_k_line,'2023-05-15')]
trendline_up1_y = [df_k_line.loc['2022-10-31']['Low'],df_k_line.loc['2023-05-15']['Open']]
slope,intercept = np.polyfit(trendline_up1_x,trendline_up1_y,1)
trendline_up1_start_date = '2022-10-24'
trendline_up1_start_price = slope * date_to_index(df_k_line,'2022-10-24') + intercept
trendline_up1_end_date = '2023-07-31'
trendline_up1_end_price = slope * date_to_index(df_k_line,'2023-07-31') + intercept 

# 人工設定上升趨勢線(紅)
trendline_up2_x = [date_to_index(df_k_line,'2023-05-15'),date_to_index(df_k_line,'2023-07-31')]
trendline_up2_y = [df_k_line.loc['2023-05-15']['Low'],df_k_line.loc['2023-07-31']['Low']]
slope,intercept = np.polyfit(trendline_up2_x,trendline_up2_y,1)
trendline_up2_start_date = '2023-05-15'
trendline_up2_start_price = slope * date_to_index(df_k_line,'2023-05-15') + intercept
trendline_up2_end_date = '2023-07-31'
trendline_up2_end_price = slope * date_to_index(df_k_line,'2023-07-31') + intercept 

程式碼中用np.polyfit來找出直線趨勢線的斜率(m)與截距(c)。要計算出某個日期索引(x)對應到直線趨勢線的值(y)可以套用直線方程式(y=mx+c)。上述程式繪製直線趨勢線以及K線圖如下所示:
Imgur
詳細的程式碼請參照「第八天:直線趨勢線.ipynb」。

回顧Day1的「主觀性質客觀化」

今天的程式實作是以Day1主觀性質客觀化的第一種方式(將在看盤軟體繪製的圖形與線段以人工方式轉換成數據)於趨勢線課題。在這邊要強調的是將主觀性質客觀化並不是主張拋棄技術分析「主觀性質」;而是要把主觀的分析結果轉換為客觀數據。當有了客觀數據時就能進行交易追蹤、買入監控與回測分析等相關程序。


上一篇
Day7 移動平均線
下一篇
Day9 直線趨勢線與技術型態的基礎 – 轉折點
系列文
用Python程式進行股票技術分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言