本期介紹的是TB內建的交易系統-基於ADX及EMA進行判斷,
ADX(Average Directional Index)和EMA(Exponential Moving Average)都是常用的技術指標,結合使用可以構建一個相對複雜的交易系統。
一般來說,ADX 指標用於衡量市場的趨勢強度,而 EMA 指標用於確認趨勢的方向。下面是一個可能的交易邏輯:
-
使用 ADX 指標來衡量市場的趨勢強度,當 ADX 值高於某個閾值(例如 20)時,表示市場趨勢強烈。
-
使用 EMA 指標來確認趨勢的方向,當短期 EMA(例如 10 期)高於長期 EMA(例如 30 期)時,表示上漲趨勢;反之,表示下跌趨勢。
-
當 ADX 值高於閾值且短期 EMA 高於長期 EMA 時,產生買入訊號。
-
當 ADX 值高於閾值且短期 EMA 低於長期 EMA 時,產生賣出訊號。
請注意,這只是一個簡單的交易邏輯,實際情況中可能需要更多的指標和規則來過濾假訊號和避免風險。
下面先貼原始碼核心介紹。
// 策略說明:基於ADX及EMA進行判斷
// 系統要素:
// 1. 計算30根k線最高價和最低價的EMA價差
// 2. 計算12根k線的ADX
// 入場條件:
// 滿足上根K線的收盤價收於EMA30之上,且ADX向上的條件 在EntryBarBAR內該條件成立
// 當前價大於等於BuySetup,做多,當條件滿足超過EntryBarBAR後,取消入場
// 出場條件:
// 當前價格下破30根K線最高價的EMA
首先,我們瞭解下EMA,簡單的說,當要比較數值與均價的關係時,用 MA 就可以了,而要比較均價的趨勢快慢時,用 EMA 更穩定;有時,在均價值不重要時,也用 EMA 來平滑和美觀曲線。
其構造原理是:對收盤價進行加權算術平均,用於判斷價格未來走勢的變動趨勢。與MACD指標、DMA指標相比,EMA指標由於其計算公式中著重考慮了當天價格(當期)行情的權重,決定了其作為一類趨勢分析指標,在使用中克服了MACD指標對於價格走勢的滯後性缺陷,同時,也在一定程度上消除了DMA指標在某些時候對於價格走勢所產生的訊號提前性,是一個非常有效的分析指標。
如圖,本人分別寫了EMA和MA的均線,可以看出EMA更靈敏一點,均線相對確實滯後一點
分別計算最高價最低價的EMA均線確定上下軌,再求中軌
//當ADX向上且當前價大於30根K線最高價的EMA滿足買入準備條件
透過計算當前通道寬度中值加上收盤價,作為開倉觸發價,降低噪音觸發,屬於過濾的一種
MROBS = NthCon(BuySetup, 1);
計算滿足開倉條件後的bar數,當超過一定時間(bar數)不觸發的話,不再進行開倉,二次過濾,第一次過濾是考慮的噪音,第二次過濾是行情的強勢程度
出場部分:沒什麼好說的,跌破下軌出場。
圖中可以看到,過濾比較多,導致的結果就是震盪行情少了很多開倉,但是抓趨勢能力很弱,意料之中,減少了開倉也就是減少了利潤來源,這本來就是矛盾體,作為一個CTA策略,抓行情能力是最重要的,所以,這個策略效率很低,價值不大,但是可以學習其中的一些過濾方式。