前陣子被YT演算法推薦了這篇: 點我
大約整理了3個重點:
在這裡先小小科普MACD算法
EMA(n)=(前一日EMA(n) × (n-1)+今日收盤價 × 2) ÷ (n+1)
EMA(m)=(前一日EMA(m) × (m-1)+今日收盤價 × 2) ÷ (m+1)
DIF=EMA(n)-EMA(m)
MACD(x)=(前一日xMACD × (x-1)+DIF × 2) ÷ (x+1)
大家看到這大串公式先別覺得眼花撩亂。
簡單來說,
就是用兩條不同EMA均線(現今普遍使用12,26EMA)相減得出一個值,接著再用一次EMA算法來算這個值,所以每根K棒都會有兩個值,因此很多K棒中將兩個值連起來就會得出兩條線,相減出來的就是DIF(差離值),另一條就是MACD,他們的相互關係就是我們現在常見的MACD指標。
順帶一提,有些看盤軟體MACD指標會有柱狀體的部分,那個是DIF-MACD的結果,也被稱為OSC。
科普結束。
看完覺得這想法蠻有趣的,於是可以利用XQ做一下小實驗。
影片中提到要搭配趨勢線使用,但趨勢線比較難呈現,且偏主觀,在這裡先撇除這因素
主要來試試看,如果主狀體在負值時,快速地向正數靠近時,勝率是否會提升?如左圖
首先,我們先看一下,最基本的MACD進場。
input: FastLength(12), SlowLength(26), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);
SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);
SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");
MACD_EMA(close, FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
condition1 = {value1 > value2 and} value2 > value3;
Ret = difValue Crosses Below macdValue ;
這邊要注意,XQ內建MACD是使用XAverage做計算,而不是直接使用ema做計算,結果可能會有些微差異。
想知道差異詳情可以看這篇: 點我
進場寫好了,出場部分我們使用自己寫的,跌破20日低點出場,做回測。
回測結果如下:
看起來回測結果沒有很好,所以再加上三個條件:
再做一次回測如下:
可以發現到,時間加權報酬以及勝率皆有提升,獲利取線也好很多。
這時來到今天的主軸。
主狀體在負值時,快速地向正數靠近時,勝率是否會提升?
首先要做定義,怎樣算是從負值快速向正數靠近?
我給了這樣的條件:
第一天柱狀體負值 -> 第二天柱狀體比第一天柱狀體少了20% ->第三天柱狀體翻為正
input: FastLength(12), SlowLength(26), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);
SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);
SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");
MACD_EMA(close, FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
value1 = average(close,60);
value2 = average(close,240);
condition1 = value1 > value2;
Ret = oscValue*1.2 > oscValue[1] and oscValue[1]*1.2 > oscValue[2] and oscValue[2] < 0 and oscValue[1] < 0 and oscValue > 0 and condition1 and average(volume,5) > 250 ;
回測結果如下:
可以發現到,雖然時間加權報酬降低一些,但是勝率有顯著的提升!!
投資本來就有很多種方式。
有些方法低勝率,但只要獲利一次就可以蓋過前面的虧損。
有些方法則是高勝率求穩。
全看個人的能承受的曝險程度,沒有絕對的對或錯。
以此例來說,我們可以知道換成柱狀體快速提升的方法可以提高勝率,接下來就是尋找提升報酬或是讓勝率更高的條件。
今天的分享就到這裡~
謝謝大家