免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。
腳本介紹:Smoothed Heiken Ashi (平滑海龜)
腳本概述
此腳本為XS語言撰寫的指標腳本,名稱為「Smoothed Heiken Ashi (平滑海龜)」。它基於傳統的Heiken Ashi (海龜K線) 指標進行改進,透過指數移動平均 (EMA) 對海龜K棒的開盤價、最高價、最低價及收盤價進行平滑處理。Heiken Ashi 本身是一種價格平滑技術,用來過濾市場噪音並突出趨勢方向,而本腳本的平滑機制進一步強化了趨勢的可視性,使K線圖更平順,適合用於趨勢追蹤策略。
腳本適用於XQ系統或其他支援XS語言的交易平台,主要用於技術分析圖表中疊加顯示平滑海龜K棒。腳本遵守XS指標腳本的規範:input僅用於參數宣告,var僅包含變數名稱與初始值,使用XS內建函數(如XAverage、MaxList、MinList)進行計算,避免使用陣列或多餘描述。腳本功用
- 主要功用:生成平滑後的Heiken Ashi K棒,幫助交易者更清晰地辨識市場趨勢方向(上漲或下跌),減少原始價格波動造成的假訊號。傳統Heiken Ashi 已能平滑趨勢,本腳本透過EMA平滑進一步降低噪音,適用於中長期趨勢判斷。
- 應用情境:
- 趨勢識別:當平滑海龜K棒呈現連續陽線(綠色或上漲色)時,表示強勢上漲趨勢;連續陰線(紅色或下跌色)時,表示下跌趨勢。
- 交易訊號:可結合其他指標(如移動平均線)產生買賣訊號,例如K棒顏色轉換時作為進場/出場依據。
- 風險管理:平滑處理有助於避免短期噪音干擾,適合趨勢跟隨型策略,但可能延遲對市場急轉變的反應。
- 優點:提升圖表可讀性,特別適合初學者或趨勢交易者;計算效率高,不需額外安裝套件。
- 限制:作為指標腳本,無法直接用於交易進出場(需搭配交易腳本);平滑期數過長可能導致訊號滯後。
參數說明
- _SmoothLength(12, "平滑的期數"):EMA平滑的期數,預設為12。較小的值(如5-10)使K棒更敏感於短期變化;較大的值(如20-50)強調長期趨勢。使用者可根據商品頻率(如日線或分鐘線)調整。
計算邏輯簡述
- 標準Heiken Ashi 計算:
- 海龜收盤價 (_haClose):當前K棒的開盤+最高+最低+收盤平均。
- 海龜開盤價 (_haOpen):若為當日首根K棒,等於開盤價;否則為前一根海龜開盤與收盤的平均(使用date <> date[1]判斷新日,避免使用newday)。
- 海龜最高價 (_haHigh):取最高價、海龜開盤、海龜收盤的最大值。
- 海龜最低價 (_haLow):取最低價、海龜開盤、海龜收盤的最小值。
- 平滑處理:對上述四個值應用XAverage (EMA) 函數,使用_SmoothLength作為期數,產生更平順的K棒序列。
- 輸出顯示:使用plotK函數繪製平滑後的K棒,標題為"趨勢K棒"。plot僅包含數值與名稱,無顏色或樣式定義,符合XS指標腳本規範。
使用建議
- 在XQ平台中,將腳本應用於股票、期貨或外匯圖表,調整_SmoothLength以匹配市場波動性。
- 結合其他XS腳本:例如與選股腳本搭配篩選趨勢股,或與交易腳本整合產生自動訊號。
- 測試驗證:建議在歷史數據上回測,確保平滑效果符合預期趨勢判斷。
此腳本提升了Heiken Ashi的實用性,適合趨勢交易者使用。若需擴展功能(如加入警報或多階段平滑),可根據需求修改。
老茶筆記:
但我個人覺得其實用兩條EMA均線就可以代替了,如示範圖中的兩條均線,分別是EMA12與EMA54,就可以用這兩條均線代替平滑海龜的趨勢圖。
至於為何用12與54?因為在5分K中,12就是1小時的線,54則是1日線,而就判斷當沖趨勢來說,可以抓這兩條線來判斷當天的多、空趨勢。當然,如果要抓當沖停利的話,可以再加上半小時線,也就是5分K中的EMA6。舉例來說:當EMA12由下而上高於EMA54後進場做多,然後股價低於EMA6時就進行停利出場,沒低過就續抱。
以上純屬個人心得,僅供參考。
// ----------------------------------------------
// 指標腳本名稱: Smoothed Heiken Ashi (平滑海龜)
// ----------------------------------------------
// ----------------------------------------------
// 1. Inputs (輸入參數)
// ----------------------------------------------
input: _SmoothLength(12, "平滑的期數"); // 平滑的期數
// ----------------------------------------------
// 2. Vars (變數宣告)
// ----------------------------------------------
var: _haOpen(0); // 海龜開盤價
var: _haHigh(0); // 海龜最高價
var: _haLow(0); // 海龜最低價
var: _haClose(0); // 海龜收盤價
var: _haPrevOpen(0); // 前一期海龜開盤價
var: _haPrevClose(0); // 前一期海龜收盤價
// ----------------------------------------------
// 3. 計算邏輯
// ----------------------------------------------
// 計算海龜收盤價
_haClose = (Open + High + Low + Close) / 4;
// 取得上一根海龜的開盤價和收盤價
_haPrevOpen = _haOpen[1];
_haPrevClose = _haClose[1];
// 計算海龜開盤價
// 判斷是否為首根K棒
if date <> date[1] then
begin
// 如果是首根K棒,則海龜開盤價等於當日開盤價
_haOpen = Open;
end
else
begin
// 如果不是首根K棒,則海龜開盤價等於前一期海龜開盤價和收盤價的平均
_haOpen = (_haPrevOpen + _haPrevClose) / 2;
end;
// 計算海龜最高價和最低價
_haHigh = MaxList(High, _haOpen, _haClose);
_haLow = MinList(Low, _haOpen, _haClose);
// 對計算出的海龜K棒價格進行平滑處理,這裡使用EMA作為範例
_haOpen = XAverage(_haOpen, _SmoothLength);
_haHigh = XAverage(_haHigh, _SmoothLength);
_haLow = XAverage(_haLow, _SmoothLength);
_haClose = XAverage(_haClose, _SmoothLength);
// ----------------------------------------------
// 4. Plot (繪圖)
// ----------------------------------------------
plotK(1,_haOpen, _haHigh, _haLow, _haClose,"趨勢K棒");

















