开始前,笔者想对各位读者说:“如果您的2024年是遗憾收尾,希望您能放下执念,不要沉沦在记忆里,在2025年,突破自己,活出自己向往的样子。反之,如果您的2024年是完美收官,祝愿您在2025年在原有的基础上更上一层楼。祝各位读者在新的一年中事业顺利,身边的家人与朋友平平安安,健健康康,与伴侣长长久久,没有伴侣的,早日脱单!!! 祝大家新年快乐!!!
2025年的第一篇文章,筆者決定回歸初衷,回測筆者最開始接觸交易的第一個指標「移動平均線」。在2018年,筆者最先了解的就是「MA 200」俗稱「趨勢指標」,只要價格保持在「MA 200」之上就是看漲 / 價格保持在「MA 200」之下就是看跌。甚至還延伸出 MA 50 搭配 MA 200(中長線)或者 MA 10 搭配 MA 20(短線)之類的雙均線交叉策略。時至今日,筆者再來回測看看「移動平均線」指標在2025年是否依然有效。
筆者將使用比特幣的期貨價格數據進行回測,時間範圍為2020年6月1號至2025年1月1號
計算移動平均線:
data['ma'] = data['Close'].rolling(20).mean() # 計算移動平均線
進場邏輯 = IF(CLOSE > MA, 1. IF(CLOSE < MA, -1, 0))
回測範圍:
timeframe(時間級別):1分鐘 至 1月
MA(移動平均線參數):10 至 300
通過回測結果,筆者發現同時進行多空的情況下,策略無法盈利。考慮到比特幣在過去
兩年走勢為大牛市,在牛市當中做空確實會以虧損居多,畢竟這是一個趨勢策略。
同時,此策略在橫盤震盪時(2024年5月-11月)頻繁虧損也是策略虧損的原因之一。
既然多空策略無法盈利,那只做多呢?
進場邏輯 = IF(CLOSE > MA, 1. 0)
經過回測後,不出所料的在大牛市中使用只做多的趨勢策略,效果都不錯。回測結果表示6小時為最佳時間級別,移動平均線參數為160。
下方為比特幣6小時K線和160移動平均線在過去5年的圖表:
左邊ma_rolling = 移動平均線, threshold在此例子沒用上
再來是此策略的盈虧累計圖:
不知閱讀到這部分的讀者是否已經蠢蠢欲動,準備到自己的交易軟件選擇6小時交易圖表,並添加160移動平均線?
先別著急喲~ 其實還有其他處理方式,也就是計算比特幣價格與移動平均線的距離。當距離足夠大,代表趨勢得到確認,這時候再選擇進場做多,便可避免價格稍微大於/小於 MA 就進場做多/空的尷尬情況。
計算價格與均線的距離:
data['diff'] = data['Close'] / data['ma'] - 1 # 計算比特幣價格與移動平均線的距離
進場邏輯從 IF(CLOSE > MA, 1. 0) 更改為 IF(Diff > X%, 1. 0)
下方為 DIFF 在過去5年的圖表:
回測範圍:
MA(移動平均線參數):10 至 300
Diff(比特幣價格與移動平均線的距離):0% - 10%
回測結果表示8小時為此策略的最佳時間級別,移動平均線參數為 180,當 Diff 參數大於 7% (0.07) 即可進場做多。
下方為比特幣8小時K線和180移動平均線&DIFF在過去5年的圖表:
左邊ma_rolling = 移動平均線, threshold = 距離(%)0.01 = 1%
再來是此策略的盈虧累計圖:
由此可见,越简单的策略,有效性越长,即使相隔了6年依然具备盈利能力。
計算兩條移動平均線:
data['ma1'] = data['Close'].rolling(30).mean()
data['ma2'] = data['Close'].rolling(450).mean()
進場邏輯 = IF(ma1 > ma2, 1,0)
由於底層邏輯一樣都是進行趨勢策略,想當然多空策略依然無法盈利,我們依然選擇隻做多。
回測範圍:
MA1(移動平均線參數):10 至 100
MA2(移動平均線參數):50 至 500
回測結果表示2小時為此策略的最佳時間級別,移動平均線參數為 30 搭配 450
下方為比特幣2小時K線和2條移動平均線(30 & 450)過去5年的圖表:
左邊ma_rolling = 移動平均線1, threshold = 移動平均線2
再來是此策略的盈虧累計圖:
策略優點:
策略缺點: