技術分析是金融市場中不可或缺的工具,它幫助交易者預測市場走勢並做出交易決策。本文介紹了移動平均線和相對強弱指數(RSI)等常用指標,並以 Python 程式碼示範其計算方法。同時,文章也探討了 Marubozu 蠟燭圖型態的特性、市場心理基礎以及偵測方法,並提供程式碼範例說明如何實作 Marubozu 訊號函式。此外,文章還分析了技術分析中常見的陷阱,例如後見之明偏誤和過度擬合,並提出了最佳實踐建議,例如結合多個時間框架和多種策略進行分析,以及根據市場狀況選擇合適的策略。

技術分析中的支撐與阻力:移動平均線與相對強弱指數

在技術分析中,交易者經常使用多種工具來預測市場走勢,其中最常用的包括支撐與阻力水平、技術指標等。本文將重點介紹移動平均線(Moving Averages)與相對強弱指數(Relative Strength Index, RSI)這兩種重要的技術分析工具。

移動平均線

移動平均線是一種趨勢跟隨指標,能夠幫助交易者確認趨勢並進行交易決策。其基本原理是透過計算一定期間內的平均價格來平滑市場波動,從而揭示市場的整體趨勢。

簡單移動平均線的計算

簡單移動平均線(Simple Moving Average, SMA)的計算公式如下:

移動平均線 = (當前價格 + 前一期價格 + … + 前n期價格) / n

其中,n代表計算期間的長度。

def ma(data, lookback, close, position):
    data = add_column(data, 1)
    for i in range(len(data)):
        try:
            data[i, position] = (data[i - lookback + 1:i + 1, close].mean())
        except IndexError:
            pass
    data = delete_row(data, lookback)
    return data

# 設定回顧期
lookback = 30
# 設定收盤價欄位的索引
close_column = 3
# 設定移動平均線欄位的索引
ma_column = 4
# 呼叫移動平均線函式
my_data = ma(my_data, lookback, close_column, ma_column)

內容解密:

  1. ma函式定義:此函式用於計算移動平均線,引數包括資料集data、回顧期lookback、收盤價欄位索引close和移動平均線欄位索引position
  2. add_columndelete_row:用於在資料集中新增新欄位和刪除不完整的資料行,以確保計算的準確性。
  3. mean()函式:計算指定期間內的收盤價平均值。
  4. 例外處理:透過try-except結構處理因資料不足而導致的索引錯誤。

移動平均線的使用規則

  1. 當市場價格高於其移動平均線時,表明市場處於上漲趨勢,交易者應尋找買入機會。
  2. 當市場價格低於其移動平均線時,表明市場處於下跌趨勢,交易者應尋找賣出機會。
  3. 當市場價格穿越其移動平均線時,表明市場動能發生變化,可能進入新的趨勢。

此外,交易者還可以結合不同週期的移動平均線來產生交易訊號,例如黃金交叉(Golden Cross)和死亡交叉(Death Cross)。

相對強弱指數(RSI)

相對強弱指數是一種反向指標,用於衡量市場的超買或超賣狀態,從而預測可能的反轉。

RSI的計算步驟

  1. 計算每日收盤價的變化。
  2. 將正變化和負變化分開。
  3. 分別計算正變化和負變化的平滑移動平均值。
  4. 計算相對強度(RS)。
  5. 使用以下公式計算RSI:RSI = 100 - (100 / (1 + RS))

RSI的使用規則

  1. 當RSI低於30時,市場被視為超賣,可能會出現反彈。
  2. 當RSI高於70時,市場被視為超買,可能會出現回撥。
  3. 當RSI穿越50水平時,可能預示著新趨勢的開始,但這通常被視為一個較弱的訊號。

此圖示展示了RSI的計算流程,從初始步驟到最終的市場狀態判斷。

技術分析中的常見陷阱與模式識別

技術分析是一種用於預測市場走勢的方法,主要依靠圖表和技術指標來進行分析。在技術分析中,模式識別是一項重要的技能,它涉及識別圖表中的特定模式,以預測未來的市場走勢。然而,技術分析也存在一些常見的陷阱,需要交易者避免。

模式識別

模式識別是技術分析中的一項重要技能。它涉及識別圖表中的特定模式,以預測未來的市場走勢。常見的模式包括經典價格模式、時序模式和K線模式。

經典價格模式

經典價格模式是指理論上的價格組態,例如雙頂和矩形。它們通常被視為反轉或延續模式。雙頂是一種典型的反轉模式,當價格在兩個峰值之間形成了一個頸線時,就會形成一個雙頂。

雙頂的構成要素
  1. 頸線:連線兩個峰值之間的最低點和模式的起始/終止點的線,用於確定回撤水平。
  2. 回撤:價格突破頸線後,可能會嘗試向頸線回撤,但最終會失敗,賣家會利用這個水平重新入場做空。
  3. 潛在目標:雙頂的目標是從頸線點開始,向下投影模式的中點到頸線的距離。

時序模式

時序模式是根據時間和價格的組合,這些模式相對較少人瞭解,但正確使用時可以非常強大和具有預測性。

K線模式

K線模式使用開盤價、最高價、最低價和收盤價來預測未來的市場反應。K線是視覺化圖表的一種最佳方式,因為它們包含了許多可能預示反轉或確認走勢的模式。

相對強弱指數(RSI)的計算

RSI是一種常用的技術指標,用於衡量價格變動的速度和幅度。以下是使用陣列方法計算RSI的步驟:

def smoothed_ma(data, alpha, lookback, close, position):
    lookback = (2 * lookback) - 1
    alpha = alpha / (lookback + 1.0)
    beta = 1 - alpha
    data = ma(data, lookback, close, position)
    data[lookback + 1, position] = (data[lookback + 1, close] * alpha) + (data[lookback, position] * beta)
    for i in range(lookback + 2, len(data)):
        try:
            data[i, position] = (data[i, close] * alpha) + (data[i - 1, position] * beta)
        except IndexError:
            pass
    return data

def rsi(data, lookback, close, position):
    data = add_column(data, 5)
    for i in range(len(data)):
        data[i, position] = data[i, close] - data[i - 1, close]
    for i in range(len(data)):
        if data[i, position] > 0:
            data[i, position + 1] = data[i, position]
        elif data[i, position] < 0:
            data[i, position + 2] = abs(data[i, position])
    data = smoothed_ma(data, 2, lookback, position + 1, position + 3)
    data = smoothed_ma(data, 2, lookback, position + 2, position + 4)
    data[:, position + 5] = data[:, position + 3] / data[:, position + 4]
    data[:, position + 6] = (100 - (100 / (1 + data[:, position + 5])))
    data = delete_column(data, position, 6)
    data = delete_row(data, lookback)
    return data

程式碼解析

  1. smoothed_ma函式用於計算平滑移動平均值,首先定義了lookback週期和alpha值,然後計算移動平均值。
  2. rsi函式用於計算RSI,首先新增了五個欄位用於儲存計算結果,然後計算價格變動和正負變動,最後計算RSI值。

常見陷阱

  1. 貪婪快速致富:缺乏紀律和不良的管理,可能導致交易者做出情緒化的決定。
  2. 強迫模式:確認偏見可能導致交易者忽略與其觀點相矛盾的訊號,強迫模式的存在。

如何避免陷阱

  • 設定合理的期望
  • 保持邏輯思考
  • 避免過度依賴他人的意見
  • 對自己的交易計劃保持信心

透過瞭解這些常見陷阱和技術分析的基本原理,交易者可以更好地在金融市場中生存和成功。

技術分析的陷阱與最佳實踐

技術分析看似簡單,卻暗藏許多陷阱。過去的表現總是令人印象深刻,使得交易者容易陷入過度樂觀的境地。然而,當將相同的策略應用於未來時,卻往往無法達到預期的效果。這是因為人類的大腦天生具有後見之明偏誤(Hindsight Bias),使得過去的市場走勢看起來理所當然。

後見之明偏誤:夢想破滅者

技術分析在回顧時總是看似完美,但實際應用卻往往令人失望。這是因為人類的大腦傾向於相信過去的事件是可預測的。要克服這一問題,必須使用無偏見的演算法進行回測,以客觀評估策略的有效性。

誤將過去等同於未來

歷史不會重演,但往往會押韻。技術分析的關鍵在於理解市場反應的機率性質,而不是預測確定的結果。交易是一場數字遊戲,成功的關鍵在於增加成功的機率。

簡化而不過度簡化

金融市場是複雜的半隨機環境,需要精妙的策略,但也不能過度複雜化。過度擬合(Overfitting)是常見的陷阱,使得策略在過去表現良好,但在未來卻慘遭失敗。

技術分析的最佳實踐

要有效地進行技術分析,必須遵循以下最佳實踐:

結合多個時間框架進行分析

許多分析師只關注短期走勢,而忽略了長期趨勢的重要性。事實上,較長的時間框架(周線和月線)往往更具參考價值。因此,應當從較長的時間框架開始分析,然後逐步細化至較短的時間框架。

結合多種策略和指標

沒有單一的策略或指標能夠保證成功。結合圖表分析、指標和模式,可以提高交易的勝率。畢竟,交易是一場數字遊戲,需要盡可能多的參考意見。

根據市場狀況選擇合適的策略

市場可能處於趨勢或盤整狀態。趨勢跟隨策略適用於趨勢市場,而逆勢策略則適用於盤整市場。關鍵在於根據市場狀況選擇合適的策略。

不要忽視預設引數

預設引數並非毫無道理,因為它們具有較高的可見度。例如,14週期的相對強弱指數(RSI)比55週期的RSI更具參考價值,因為更多交易者關注前者。

經典趨勢跟隨模式

本章將介紹經典的趨勢跟隨K線模式,包括簡單和複雜的形態。這些模式已被廣泛研究和應用,對於理解市場趨勢具有重要意義。

Marubozu模式

Marubozu是一種經典的趨勢跟隨K線模式,其名稱源自日語,意指「剃光頭」。這種模式具有特定的形態特徵,將在後續內容中詳細介紹。

Marubozu模式的程式碼實作

def is_marubozu(candle):
    # 計算K線的實體比例
    body_percentage = abs((candle.close - candle.open) / (candle.high - candle.low))
    
    # 檢查是否為Marubozu模式
    if body_percentage > 0.8:  # 實體比例大於80%
        return True
    else:
        return False

# 使用範例
candle = {
    'open': 100,
    'high': 120,
    'low': 90,
    'close': 110
}

if is_marubozu(candle):
    print("這是Marubozu模式")
else:
    print("這不是Marubozu模式")

內容解密:

  1. is_marubozu函式用於判斷給定的K線是否為Marubozu模式。
  2. 首先計算K線實體的比例,即 (close - open) / (high - low) 的絕對值。
  3. 如果實體比例大於80%,則認為是Marubozu模式。
  4. 在使用範例中,我們建立了一個K線物件,並呼叫 is_marubozu 函式進行判斷。

Marubozu 蠟燭圖型態分析與交易策略評估

辨識 Marubozu 圖型的重要性

Marubozu 蠟燭圖是一種沒有影線的特殊蠟燭圖型態,顯示市場在某個時間段內強烈的買賣力量。看漲的 Marubozu 表示開盤價等於最低價,收盤價等於最高價;而看跌的 Marubozu 則表示開盤價等於最高價,收盤價等於最低價。這種圖型通常出現在較短的時間框架內,例如1分鐘或5分鐘圖表,因為在較短的時間內價格波動較小。

Marubozu 圖型的市場心理基礎

Marubozu 圖型的形成根植於市場心理。在強烈的上升趨勢中,市場很少出現更低的低點,通常在高點附近收盤,顯示買盤力量強勁。看漲的 Marubozu 蠟燭圖正是這種力量的體現:沒有更低的低點且收盤於最高價,表明買家積極進場且賣壓不足。同樣,在強烈的下降趨勢中,市場很少出現更高的高點,通常在低點附近收盤,顯示賣盤力量強勁。看跌的 Marubozu 蠟燭圖則表明賣家主導市場且買盤興趣缺乏。

偵測 Marubozu 圖型的挑戰與解決方案

在某些市場中,例如外匯市場,由於價格的小數位數較多,可能很難偵測到 Marubozu 圖型。例如,在 EURUSD 的報價中使用五位小數時,可能很難找到 Marubozu 圖型,但如果使用四位小數,則更容易發現這種圖型。因此,為了分析這種圖型,需要對小數位數進行調整。

程式碼範例:資料處理

my_data = rounding(my_data, 4)

內容解密:

此段程式碼對 my_data 資料進行四捨五入處理,保留四位小數,以利於 Marubozu 圖型的偵測。

Marubozu 訊號函式的實作

訊號函式是交易演算法的核心,用於檢測圖型並輸出買賣訊號。對於 Marubozu 圖型,需要檢查以下條件:

  • 如果收盤價大於開盤價,且最高價等於收盤價,最低價等於開盤價,則輸出買入訊號(1)。
  • 如果收盤價小於開盤價,且最高價等於開盤價,最低價等於收盤價,則輸出賣出訊號(-1)。

程式碼範例:Marubozu 訊號函式

def signal(data, open_column, high_column, low_column, close_column, buy_column, sell_column):
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 看漲圖型
            if data[i, close_column] > data[i, open_column] and data[i, high_column] == data[i, close_column] and data[i, low_column] == data[i, open_column] and data[i, buy_column] == 0:
                data[i + 1, buy_column] = 1
            # 看跌圖型
            elif data[i, close_column] < data[i, open_column] and data[i, high_column] == data[i, open_column] and data[i, low_column] == data[i, close_column] and data[i, sell_column] == 0:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

內容解密:

此函式檢查每個蠟燭圖是否符合 Marubozu 的條件,並在下一行對應的欄位中標記買入或賣出訊號。其中,看漲 Marubozu 需要收盤價大於開盤價且無影線;看跌 Marubozu 需要收盤價小於開盤價且無影線。

回測結果與績效評估

利用第二章討論的績效評估指標對 Marubozu 圖型進行回測。結果顯示,Marubozu 圖型的命中率約為50%,利潤因子接近1,風險報酬比約為1,表示該策略的表現隨機,不具備顯著的獲利能力。

圖表示例:Marubozu 訊號圖表

此圖示展示了 EURUSD 和 USDCHF 的 Marubozu 訊號,分別用向上和向下的箭頭表示買入和賣出訊號。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 技術分析支撐阻力與指標應用

package "系統架構" {
    package "前端層" {
        component [使用者介面] as ui
        component [API 客戶端] as client
    }

    package "後端層" {
        component [API 服務] as api
        component [業務邏輯] as logic
        component [資料存取] as dao
    }

    package "資料層" {
        database [主資料庫] as db
        database [快取] as cache
    }
}

ui --> client : 使用者操作
client --> api : HTTP 請求
api --> logic : 處理邏輯
logic --> dao : 資料操作
dao --> db : 持久化
dao --> cache : 快取

note right of api
  RESTful API
  或 GraphQL
end note

@enduml

此圖示清晰地展示了不同貨幣對上的 Marubozu 訊號,有助於交易者直觀理解訊號的分佈和特性。