利用機器學習來判斷趨勢上漲訊號

Locke
trading & mind
Published in
31 min readFeb 1, 2021

--

by Chris Ried
目錄:- 如何選擇趨勢指標?
- 制定檢查清單指標
- 定義上漲邏輯與記錄指標矩陣
- 簡介機器學習與神經網絡
- 利用機器學習來決定指標權重
- 使用機器學習後的檢查清單指標
- 機器學習指標權重的泛用可能性
- 檢查清單指標 TradingView 代碼

“To select, or not to select: that is the question.”

如何選擇趨勢指標?

我們知道市場行為會造成價格的波動,價格波動會在趨勢運行的過程中產生訊號,而這些訊號可以被客觀地觀察到,並整理成指標。

比方說趨勢要改變方向會出現的破線、拐頭、交叉、放量、缺口、碎形突破等,都可以被寫成指標來顯示趨勢運行的變化。總體來說,指標可以說是族繁不及備載,多得令人眼花撩亂。很多時候,使用更多的指標不一定代表更好的訊號。

這裡出現一個難題,那要如何選擇適合自己的指標作為交易系統?

單一指標可以參考的價值不高,但是使用多個指標卻又會產生很多雜訊,反而讓人更難做出判斷。一般來說,依照交易系統的建構,人們會使用一套主要指標,比方說用均線系統交易就用破線、柺頭、交叉指標;而用混屯理論交易就看碎形、動量等。

但也有人持不一樣的看法,只跟蹤單一指標,依據 RSI、MACD、或 OBV 給出的交叉訊號來進出場。而根據回測數據來看,也是會穩定獲利的。

RSI, 相對強弱指標 (Relative strength index)
MACD, 移動平均線聚散指標 (Moving average convergence/divergence)
OBV, 能量潮指標 (On balance volume)
*現在常用的指標皆在 60、70 年代的時候發明,都已有 40、50 年的歷史

指標很多、方法也很多,但無論是用什麼系統、單一指標還是多個指標,其實最終目的都是為了能有更大的概率去判斷趨勢可能行進的方向。畢竟沒有指標是完美的,也沒有任何趨勢可以 100% 被預測,一切都是一個概率與時間跨度的問題。

仔細去思考這個問題,其實人為選擇的背後也帶進了人為的偏差,而這偏差是在沒有實際數據的支持之下,自行為某個指標或系統加權。

簡單來說,人為選擇自行決定了某個指標的權重,選擇一個就是 100% 權重,而選擇兩個可能是 50/50,也可能是 80/20。當選擇更多時,人的一般思考習慣已經無法負荷,沒有經過長期的訓練,不可能給出合乎事實的權重。

下面我們來談談如何利用比較客觀的方法來為指標加權,並引入檢查清單的概念。

制定檢查清單指標

對大部分沒有長期趨勢觀察訓練的人來說,與其自行選擇某些指標,引入個人的偏差,不如把主要的指標都做成一個檢查清單。利用這個清單,盡量捨去個人的判斷,讓清單告訴我們應該怎麼做。

舉例來說,當趨勢運行到預計的買入位置上,就把檢查清單上面的指標都檢查一遍,看看有多少是符合自己買入決策的。藉此更客觀地看待各個指標與自己的決策邏輯。

不過這裡要提出來強調一下,就算是盡量引入客觀數據,這裡還是有兩點主觀因素無法完全排除:

  1. 部分指標的參數還是需要人為調整與選擇
  2. 買入位置的決定還是難免需要人為的判斷

不過這檢查清單減少了對指標出現的判斷,這很大減少了人為的偏差。我們後面會引入對趨勢變化合理的人為判斷,也就是一套上漲趨勢的判斷邏輯,用以作為權重的依據。

以下整理了 20 個常用與自製趨勢指標,這些指標包括了圖表型態、支撐與阻力、市場趨勢、動量、交易量與波動性。並以 Heatmap 的方式讓他們全部都顯示在價格走勢圖上,訊號看起來其實有非常多雜訊,一眼難以觀察出來這些訊號跟趨勢之間的關係 (圖 1)。

這也是只使用單一指標的困難之處,大部分單一指標出現的頻率過於頻繁。

圖 1 | MRNA 的股價走勢,綠色是一般認為的上漲指標,而灰色是一般認為的下跌指標 (上方:流體均線、下方:檢查清單指標 Heatmap 模式)
20 個趨勢指標:1.  破線 | Breakout
2. 拐頭 | Reversal
3. 短期均線交叉中期均線 | Crossover of ema20 and ema60
4. 短期均線交叉長期均線 | Crossover of ema20 and ema120
5. MACD 黃金交叉 | MACD golden cross
6. MACD 上穿零軸 (多方控盤) | Long cycle (MACD crossover 0)
7. RSI 未超買 | RSI not overbought
8. KDJ 未超買並交叉 | KD not overbought and crossover
9. 能量潮指標向上 | OBV uptrend
10. 跳漲缺口 | Bullish gap
11. 放量上漲 | High volume
12. 上碎形突破 | Breakout up fractal
13. 下碎形反彈 | Rebounce of down fractal
14. 均線密集 | Convergence
15. 流體均線反轉向上 | Turbulence reversal
16. 價格上方沒有均線密集壓力 | Low resistance
17. 流體均線在上漲藍色區域 | Bullish trend (blue zone)
18. 流體均線在下跌紅色區域 | Bearish trend (red zone)
19. VIX 在日線 EMA20 之上 | VIX close above ema20
20. SPY 在日線 EMA20 之下 | SPY close below ema20
(各個指標的詳細定義請參照文末附上的 TradingView 代碼)

關於自製指標的定義與使用,請參考以下文章:

深入解析趨勢理論與技術分析的系列文章:- 深入解析趨勢理論與技術分析 (上):交易與價格
- 深入解析趨勢理論與技術分析 (中):價格與趨勢的運行
- 深入解析趨勢理論與技術分析 (下):趨勢訊號的辨別
- 流體均線模型及其應用

定義上漲邏輯與記錄指標矩陣

在用客觀數據去選擇指標權重之前,讓我們先來定義一個上漲的邏輯,從圖形上可以定義三步簡單的邏輯如下:

  1. 價格跌到下降趨勢的末端 (來到流體均線紅色區域)
  2. 價格跌不動了 (下碎形反彈)
  3. 趨勢出現反轉訊號 (突破下跌趨勢線並且轉多頭 K 線變綠)

下跌趨勢線:連結藍色區最後一個頂峰到灰色或紅色區第一個形成的頂峰 ,畫出下降通道的頂部 (第一個反彈是測試下降通道,通常要避免在此進場)

當這三項都滿足時,我們說價格出現了止跌上漲的趨勢。而此時,我們可以在上漲訊號前選取一個窗口,比方說 20 個 K 線區間,來計算訊號出現的模式,並取此數據為上漲訊號的指標矩陣 (圖 2)。

MRNA 上漲訊號指標矩陣
1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1
(矩陣數字之間有一個空格)

同樣的道理,我們也可以選出絕對不能買入的區域,並記錄非上漲訊號的指標矩陣。

由於不同股票與不同交易周期其特性皆不相同,建議這一個指標矩陣的取樣要在目標標的跟目標交易周期之下記錄,會得到比較準確的結果。後面會再詳細討論。

圖 2 | 在 MRNA 的上漲走勢上讀取指標矩陣,只要範圍內指標有出現,無論出現次數,都記錄為 1,反之則記錄為 0 (上方:流體均線、下方:檢查清單指標 Heatmap 模式)

簡介機器學習與神經網絡

前面提到,大多數人是用自己的判斷來做出偏差的權重。若是使用多個指標,問題會變成:是否要平均分配權重?還是自行決定某些訊號比其他訊號重要?如果是這樣,那重要的比重是多少?

相信這不是一般人的思考模式,而且無論最後怎麼決定,人類的思考模式皆無法在短期內找出有效的分配方法,除非是久經特殊交易訓練的專家。

其實,這種問題就是機器學習 (Machine learning) 最擅長解決的,因為人工神經網絡當初發明出來,就是根據輸入的數據來找出最佳權重,並以此來做資訊判別的運算網路。

這裡簡單介紹一下機器學習最簡單的基礎結構與原理。一個簡單的人工神經網路,具有三層:

  • 輸入層:也就是數據輸入的地方
  • 隱藏層:也就是運算輸入數據的地方
  • 輸出層:也就是輸出運算結果的地方

其中隱藏層就像是一個神經細胞,輸入層就好像神經細胞 (Neuron) 的樹突 (Dendrites),各個樹突整合自突觸 (Synapses) 所接收到的信號,並帶回神經細胞本體 (Cell body) 運算,最後對輸入的信號做出決定,由軸突 (Axon) 輸出。而這計算的結果,決定於突觸的加權 (Synaptic weights) (圖 3)。

圖 3 | 神經元與人工神經元的類比

以下為一種形式最簡單的人工神經網路,其中只有一層隱藏層與一個神經元節點,並利用 Sigmoid 函數作為其激勵函數(Activation function) 來對輸入數據做非線性運算,我們稱此神經元為 Sigmoid 神經元 (Sigmoid neuron) (圖 4)。

這個輸入數據給神經元運算並產生結果的過程與網路,稱之為前饋神經網路 (Feedfoward neural network)。

圖 4 | 一個具有單一 Sigmoid 神經元的人工神經網路,運算的時候加入一個偏差值 (Bias) 可以使得輸出結果較為準確,此為我們這次拿來計算指標權重的神經網路

前饋神經網路的計算結果通常會與實際數值有一些誤差 (Error),而使用非線性函數的一個好處是可以依據這個誤差來修正權重,並對實際值做逼近。這個過程叫做反向傳播 (Backpropagation),也就是機器可以反覆學習的地方 (圖 4)。

於是我們可以建立一個數據矩陣,讓這個神經網路不斷地經過反向傳播修正學習,找出這組數據最佳的權重比例。

圖 5 | 若加入更多節點,則可以形成更複雜的網路,不過這不符合我們去解指標加權的需要,較適合預測結果的需要

這就是最簡單形式的機器學習,我們可以利用腳本語言 Python 來編寫這樣的一個運算。將輸入數據運算,讓機器學習 100 萬次,最後得出指標的最佳權重。

以下是這次使用的 Python 程式碼 stock_ml.py,下面我們再來介紹怎麼使用這個程式。

#!usr/bin/env pythonimport sys
import numpy as np
import pandas as pd
# Adapted from the following works:
# 1) A Neural Network in 11 lines of Python (Part 1)
# https://iamtrask.github.io/2015/07/12/basic-python-network/
# 2) Creating a Neural Network from Scratch in Python: Adding Hidden Layers
# https://stackabuse.com/creating-a-neural-network-from-scratch-in-python-adding-hidden-layers/
# 3) Building a Feedforward Neural Network from Scratch in Python
# https://hackernoon.com/building-a-feedforward-neural-network-from-scratch-in-python-d3526457156b
#
# stock_ml.py
# lockeyj | 2021-01-26
# Defintion:
# l0, layer 0 (input layer, i.e. matrix of technical signals)
# sn0, sigmoid neuron zero (hidden layer, generating matrix of synaptic weights)
# l1, layer 1 (output layer, i.e. matrix of decision)
# Input layer from a matrix of bullish and bearish signals
x = np.array([])
inputfile0 = pd.read_table(sys.argv[1], delimiter=' ', header=None)
x = inputfile0.values
# Sigmoid function in the hidden layer
def sigmoid(x,deriv=False):
if(deriv==True):
return x*(1-x)
return 1/(1+np.exp(-x))

# Output layer buy or sell decision
y = np.array([])
inputfile1 = pd.read_table(sys.argv[2], delimiter=' ', header=None)
y = inputfile1.values
# Seed random numbers to make calculation
np.random.seed(1)
# Initialize weights and bias randomly
w = np.random.rand(20,1)
bias = np.random.rand(1)
for epoch in range(1000000):
# Feedforward
l0 = x
syn0 = w
xw = np.dot(l0,syn0)
l1 = sigmoid(xw + bias)
# Backpropagation with the error output
l1_error = y - l1
if (epoch% 100000) == 0:
print ("Error:" + str(np.mean(np.abs(l1_error))))
l1_delta = l1_error * sigmoid(l1,True)
# Update the matrix of weights
syn0 += np.dot(l0.T,l1_delta)
# Print the results
print ("Output after training:")
print (l1)
print ("Weight matrix:")
print (syn0)
# EOF

利用機器學習來決定指標權重

有了指標、指標矩陣數據、與機器學習的程式,讓我們來計算一下 MRNA 在小時級別的上漲訊號指標權重。

首先我們定義要計算的標的、樣本、跟範圍:

  • 計算標的:選擇預計買入的股票,對該股票歷史走勢資料以機器學習來做型態辨認
  • 計算樣本:取買入與非買入區間各 5 個訓練樣本
  • 計算範圍:取小時級別 20 個 K 線的區間,樣本區間內指標訊號全部計入,有出現訊號則紀錄為 1,沒有出現訊號則紀錄為 0 (可以使用 TradingView 中的 Date Range 工具補助)

由此取樣,可以得到輸入層的數據,我們共有 20 個指標,所以一列有 20 個位元,並有 10 個樣本,形成一個 20*10 的指標矩陣。

MRNA 的指標矩陣 mrna_input.txt。上五列是買入區矩陣、下五列是非買入區矩陣。

1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1
1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1
0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0
1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0
0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0
1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1
1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1
0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1
0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1

接著,建立一個輸出矩陣 output.txt。同樣,上面五列是買入區、下面五列是非買入區。

1
1
1
1
1
0
0
0
0
0

用以下指令來跑機器學習:

python stock_ml.py mrna_input.txt output.txt

程式設定會跑 100 萬次,每 10 萬次輸出一次錯誤率。最後得到的錯誤率是 0.00034 左右。學習完依據輸入數據的運算結果如下:

上五列接近於 1、而下五列的值則非常小,表示機器根據我們提供的數據,學了 100 萬次之後,已經學習到了如何像一個專家一樣,從趨勢中判斷買入點。

Output after training:
[[9.99562115e-01]
[9.99448247e-01]
[9.99728332e-01]
[9.99999977e-01]
[9.99975963e-01]
[3.84009931e-04]
[5.11282053e-04]
[4.68417016e-04]
[3.92396150e-04]
[1.87957262e-04]]

而學習完後調整出來的指標加權如下:

Weight matrix:
[[ 1.37639407]
[ 1.67969656]
[ 1.0162141 ]
[ 1.3184323 ]
[-1.88888442]
[ 8.32928588]
[-5.35777295]
[ 3.08739916]
[ 3.06464844]
[ 0.82986227]
[-0.53092333]
[-1.95045383]
[ 4.14441698]
[ 2.99179435]
[-0.08379438]
[ 1.70379704]
[ 0.4173048 ]
[-1.51870972]
[-2.14284707]
[-2.08513252]]

這個加權是依照我們指標矩陣的輸入順序來顯示的,我們回到檢查清單指標,把這個機器學習過的加權放回去。

在指標第二部分的地方填上加權值,為了方便顯示為百分比,我們把所有加權值乘以 10,四捨五入後再放回去。比方說第一個是 1.37639407,我們就在第一個破線的地方填上 13.8,以此類推。

// 1. 破線 | Breakout
if breakout
score := score + 13.8
// 2. 拐頭 | Reversal
if reversal
score := score + 16.8
// 3. 短期均線交叉中期均線 | Crossover of ema20 and ema60
if crossoverSM
score := score + 10.2
// 4. 短期均線交叉長期均線 | Crossover of ema20 and ema120
if crossoverSL
score := score + 13.2
// 5. MACD 黃金交叉 | MACD golden cross
if goldenCross
score := score - 18.9
// 6. MACD 上穿零軸 (多方控盤) | Long cycle (MACD crossover 0)
if longCycle
score := score + 83.3
// 7. RSI 未超買 | RSI not overbought
if RSInotOverbought
score := score - 53.6
// 8. KDJ 未超買並交叉 | KD not overbought and crossover
if KDnotOverbought
score := score + 30.9
// 9. 能量潮指標向上 | OBV uptrend
if obvUp
score := score + 30.6
// 10. 跳漲缺口 | Bullish gap
if gap()
score := score + 8.3
// 11. 放量上漲 | High volume
if highVolume
score := score - 5.3
// 12. 上碎形突破 | Breakout up fractal
if fractalBreakout
score := score - 19.5
// 13. 下碎形反彈 | Rebounce of down fractal
if fractalRebound
score := score + 41.4
// 14. 均線密集 | Convergence
if convergence
score := score + 29.9
// 15. 流體均線反轉向上 | Turbulence reversal
if turbulenceReversal
score := score - 0.8
// 16. 價格上方沒有均線密集壓力 | Low resistance
if lowResistance
score := score + 17.0
// 17. 流體均線在上漲藍色區域 | Bullish trend (blue zone in Turbulence with direction indicator)
if bullish
score := score - 4.2
// 18. 流體均線在下跌紅色區域 | Bearish trend (red zone in Turbulence with direction indicator)
if bearish
score := score - 15.2
// 19. VIX 在日線 EMA20 之上 | VIX close above ema20
if vix_warning
score := score - 21.4
// 20. SPY 在日線 EMA20 之下 | SPY close below ema20
if spy_warning
score := score - 20.9

這裡有幾個有趣的發現,讓我們來仔細看一下機器學習出來沒有人為偏差的結果。首先,買入訊號權重最高的是 MACD 值大於零軸 (8.33),次高的是下碎形反彈 (4.14),再來是 OBV (3.06) 與 KDJ (3.09)指標。破線 (1.38)、柺頭 (1.68) 、交叉 (1.02) 的權重反而不高,而 RSI 有沒有超買反而是呈現負相關的 (-5.36)。

這樣的結果,如果沒有經過機器學習,人眼完全無法從圖 1 下方的清單指標 Heatmap 模式中看出來。而我們這裡只是使用了最簡單的機器學習方法,就找出了這個股票在小時級別的反轉訊號主要是看 MACD、碎形跟 OBV 和 KDJ。

我們接下來看看如何把這些機器學習過後的加權放回去指標裡頭,直觀顯示在走勢圖上。

使用機器學習後的檢查清單指標

首先,我們把機器學習得來的權重放回去指標的第二部分 (II. Histogram display mode) 。接著,我們選擇指標的選項,並勾選 “Show histogram mode to reveal trading signals” (圖 6)。

圖 6 | 勾選 histogram 模式來切換成直方圖顯示

選完確定之後,指標原本的 heatmap 會轉變為直方圖,若有買入訊號,會出現正值的藍色長柱,否則則是灰色或是負值,其中灰線是買入訊號平均線。

例如 MRNA 的小時走勢圖,指標權重經過訓練之後,有多處出現買入訊號。有趣的是,我們只設定了在紅色與灰色區域的買入點,但經過機器學習,指標也出現在藍色區域的買入點 (圖 7)。

圖 7 | 機器學習完後,指標加權所顯示出來的買入訊號 (黑色箭號處為指標指出的買入點) (上方:流體均線、下方:檢查清單指標 Histogram 模式;左右邊是同一股票不同時間點)

我們進一步把上圖左邊的區域放大來看,可以看到一個非常乾淨沒有什麼雜訊的買入訊號,而且剛好是在我們利用三步上漲邏輯設定的趨勢反轉起點 (圖 8)。

圖 8 | 機器學習完後,指標加權所顯示出來的買入訊號雜訊非常低 (上方:流體均線、下方:檢查清單指標 Histogram 模式;左右邊是同一股票不同時間點)

機器學習指標權重的泛用可能性

讀到這裡,相信大家對利用簡單機器學習去取得指標權重有了進一步的認識。

這裡提出來可能會產生的幾個問題:

  1. 機器學習出來的指標權重分配真的有用嗎?
  2. 從一個時間周期學習來的指標權重可以用在其他時間周期上嗎?
  3. 從單一個股學習來的指標權重可以用在其他的股票上嗎?

第一個,我們首先來看如果把 20 個指標都平均分配權重會出現什麼結果。以圖 8 一模一樣的位置來看,買入訊號完全消失,更多的指標並沒有讓判斷更加容易,反而是變複雜,雜訊變多 (圖 9)。

圖 9 | 平均分配的指標加權所顯示出來的訊號雜訊非常高 (上方:流體均線、下方:檢查清單指標 Histogram 模式;左右邊是同一股票不同時間點)

第二個,我們來看換不同的時間周期,從小時級別換到日級別,看看會不會產生買入訊號。結果是會,雖然產生的位置與小時線級別不太相同,但都一樣是趨勢起漲的地方 (圖 10)。

圖 10 | 機器學習完後,指標加權所顯示出來的買入訊號可以被用到其他級別上 (上方:流體均線、下方:檢查清單指標 Histogram 模式;左右邊是同一股票不同時間點)

第三個,我們同樣在小時級別,但是換到 SPY 來看。可以發現機器學習抓住了 SPY 在去年九月、十月回調結束的時間點 (圖 11)。

圖 11 | 依據機器學習完的指標加權所顯示出來的買入訊號可以被用到其他股票 (上方:流體均線、下方:檢查清單指標 Histogram 模式;左右邊是同一股票不同時間點)

這些數據顯示趨勢訊號有一定程度的泛用性。當然,如果想要有最好的上漲訊號,建議還是依據個股與特定時間周期來取樣指標矩陣,並且用那個數據來做機器學習,這樣權重出來的訊號會比較準確。

最後,沒有任何指標是完美的,也沒有任何指標是有預測功能的,這裡只是提出一個利用機器學習可以短時間內大量學習修正的特性,來降低訊號的雜訊,讓我們可以更容易用肉眼判斷出我們想要找的買點。搭配上本來有在習慣使用的指標,可以有更高的機率做出正確的判斷。

未來如果放入更多指標,並加上更複雜一點的神經網路,或許可以達到更高的正確性。可以預見利用機器學習去除人為誤差與訊號雜訊,是一個可行的方向。

檢查清單指標 TradingView 代碼

  • 檢查清單指標 (Technical checklist)
Description:No one indicator is perfect. People always have their favorite indicators and maintain a bias on weighing them purely on psychological reasons other than mathematical. This technical checklist indicator collected 20 common indicators and custom ones to address the issue of a bias weighted decision.Here, I apply machine learning using a simple sigmoid neuron network with one hidden layer and a single node to avoid artifacts. For the ease of data collection, the indicator matrix is first shown as a heatmap. Once an uptrend signal window is selected manually, an indicator matrix can be recorded in a binary format (i.e., 1 0 0 1 1 0, etc.).For example, the following indicator matrix was retrieved from the MRNA chart (deciscion: first 5 rows, buying; last 5 rows, no buying):
<mrna_input.txt>
1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1
1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1
0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0
1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0
0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0
1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1
1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1
0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1
0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1
This matrix is then used as an input to train the machine learning network. With a correlated buying decision matrix as an output:
<output.txt>
1
1
1
1
1
0
0
0
0
0
After training, the corrected weight matrix can be applied back to the indicator. And the display mode can be changed from a heatmap into a histogram to reveal buying signals visually.Usage:
python stock_ml.py mrna_input.txt output.txt
Weight matrix output:
1.37639407
1.67969656
1.0162141
1.3184323
-1.88888442
8.32928588
-5.35777295
3.08739916
3.06464844
0.82986227
-0.53092333
-1.95045383
4.14441698
2.99179435
-0.08379438
1.70379704
0.4173048
-1.51870972
-2.14284707
-2.08513252
Corresponding indicators to the weight matrix:
1. Breakout
2. Reversal
3. Crossover of ema20 and ema60
4. Crossover of ema20 and ema120
5. MACD golden cross
6. Long cycle (MACD crossover 0)
7. RSI not overbought
8. KD not overbought and crossover
9. OBV uptrend
10. Bullish gap
11. High volume
12. Breakout up fractal
13. Rebounce of down fractal
14. Convergence
15. Turbulence reversal
16. Low resistance
17. Bullish trend (blue zone)
18. Bearish trend (red zone)
19. VIX close above ema20
20. SPY close below ema20
PS. It is recommended not to use default settings but to train your weight matrix based on underlying and timeframe.

以下分享文章裡提到的趨勢指標代碼:

  • 均線流體指標 (Turbulence with direction)
Description:This indicator uses 28 SMA lines from SMA12 to SMA120 with an interval of 4 to reveal the unseen underlying structure that determines the stock price trend. The convergent area of MA lines usually creates support for the stock price. This indicator also includes a clock position for a clear view of the direction of the current trend.This work is inspired by LoneCapical, Benoit Mandelbrot, and Bill Williams .MA lines are colored with blue for bullish trends, red for bearish trends, and gray for no apparent direction.
  • 均線流體反轉指標 (Turbulence reversal)
Description:Given that the market turbulence tends to cluster, I developed a turbulence moving average system to reveal the unseen underlying structure of the least resistance path for trend following.Here, I used an SMA subset from the turbulence moving average system to determine the trend direction. This estimation is achieved by calculating the dynamic changes of SMA slope angle and distance between SMA . The former represents a possible reversal signal, and the latter shows the resistance from the intermediate-term SMA .When the short-term slope angle crossovers the intermediate-term slope angle, the indicator will give a star sign, indicating a possible trend reversal.Use this indicator together with the turbulence moving average system (Turbulence with direction).
  • 均線碎形指標 (Fractal)
Description:This fractal indicator provides fractal support and resistance together with other integrated features, such as short-, mid-, and long-term SMA and EMA lines, color code for bullish and bearish candles, and showing closing price to length for planning future trend scenarios.Using fractal support and resistance and a triple moving average trading system helps traders identify better trade signals.Click on Settings to select indicators for those features. The default setting is showing all.

若套用指標後 K 線顏色沒有改變,試著把指標移到最上層,然後把系統預設的 K 線關掉。

1. Select the indicator: More (the … icon) -> Visual Order -> Bring to Front
2. Hide Symbol (the eye icon)

--

--

Locke
trading & mind

趨勢交易者,在這裏分享一些對於生活的體會與看法