直線趨勢線由使用者於看盤軟體上手繪而產生,而非電腦程式運算。其定義為將K線圖中的轉折點,兩點高點或低點相連成一直線,就可以形成直線趨勢線。當低點相連,則形成「上升趨勢線 」或「上升支撐線」;當高點相連,則形成「下降趨勢線」或 「下降壓力線」。並且直線趨勢線可以用來判斷以及代表趨勢的多空、強弱、長短。
雖然直線趨勢線是主觀認定並且以手繪方式(也就是在看盤軟體上畫線)所產生,不過應該還是有些規則可循。以下是我整理的程序,也將用於之後的程式實作:
下圖為股票老師手繪的兩條趨勢線於周K線圖上:
先以人工方式標註四個轉折點:
把上面敘述轉換為程式碼,如下所示:
# 人工設定上升趨勢線(藍)
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線圖如下所示:
詳細的程式碼請參照「第八天:直線趨勢線.ipynb」。
今天的程式實作是以Day1主觀性質客觀化的第一種方式(將在看盤軟體繪製的圖形與線段以人工方式轉換成數據)於趨勢線課題。在這邊要強調的是將主觀性質客觀化並不是主張拋棄技術分析「主觀性質」;而是要把主觀的分析結果轉換為客觀數據。當有了客觀數據時就能進行交易追蹤、買入監控與回測分析等相關程序。