This strategy is named the MACD Trend Following Strategy. It is a quantitative strategy that utilizes the MACD indicator to determine price trends and follows the trends to trade. The strategy aims to capture mid-to-long-term trends and adjust positions in a timely manner when trend reversals occur.
The strategy uses the MACD indicator to determine price trends. The MACD is a breakout indicator formed by the fast EMA line (12-day) and the slow EMA line (26-day). The difference between these two lines forms the MACD histogram, and the 9-day EMA of the histogram is the MACD signal line. When the MACD line crosses above the signal line, it is a golden cross, indicating an upward trend. When the MACD line crosses below the signal line, it is a dead cross, indicating a downward trend.
The strategy first calculates the MACD line and signal line, then computes the difference delta between the two lines. When delta crosses above 0, a buy signal is generated. When delta crosses below 0, a sell signal is generated. Based on these two signals, the strategy adjusts positions accordingly. To filter out noise, the strategy also introduces an EMA line - valid trade signals are only generated when the price breaks through this EMA line.
Specifically, the strategy logic is:
With this design, the strategy is able to follow mid-to-long-term trends and quickly adjust positions when trends reverse. It avoids being misled by short-term market noises.
The strategy has the following advantages:
There are some risks to be mindful of:
Solutions:
The strategy can be further optimized in the following ways:
Significant improvement can be achieved through methods like indicator combos, adaptive parameters, stop loss/profit taking etc.
In summary, the MACD Trend Following Strategy utilizes the simple and effective MACD indicator to identify mid-to-long-term trends, and implements a clear trend following logic. It has the capacity to capture trends as well as reasonable risk control measures. With further optimizations, the strategy can become a very practical quant trading system. It suits investors seeking steady long-term gains over short-term profits.
/*backtest start: 2022-11-14 00:00:00 end: 2023-10-27 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MACD Strategy v1.0", shorttitle = "MACD str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") usefil = input(false, defval = false, title = "Use EMA filter") lenfil = input(5, defval = 5, minval = 1, maxval = 50, title = "EMA filter period") fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD //Signals ema = ema(close, lenfil) trend = crossover(delta, 0) == true ? 1 : crossunder(delta, 0) == true ? -1 : trend[1] up = trend == 1 and (low < ema or usefil == false) ? 1 : 0 dn = trend == -1 and (high > ema or usefil == false) ? 1 : 0 plot(ema, color = black, transp = 0) if (up == 1) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) if (dn == 1) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6