Strategi ini menggabungkan penunjuk MACD klasik dengan purata bergerak SMA 200 tempoh untuk menjana isyarat perdagangan.
Secara khusus, ia menjadi panjang apabila kedua-dua histogram MACD dan momentum berada di atas 0, MA pantas di atas MA perlahan. Harga di atas 200 tempoh SMA berfungsi sebagai penapis kedua untuk bias bullish. Logik yang bertentangan mencetuskan pendek.
Kelebihan strategi ini adalah menggunakan MACD untuk trend dan irama jangka pendek, dan SMA untuk arah trend jangka panjang. Gabungan meningkatkan ketepatan dan mengelakkan whipsaws.
Ringkasnya, strategi kombo MACD & SMA 200 sesuai untuk memegang jangka menengah dan panjang. Ia berkesan menangkap titik perubahan trend utama. Tetapi perhatian diperlukan pada masa isyarat penunjuk untuk mengelakkan mengejar puncak / bawah.
/*backtest start: 2023-08-11 00:00:00 end: 2023-09-10 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MACD + SMA 200 Strategy (by ChartArt)", shorttitle="CA_-_MACD_SMA_strategy", overlay=true) // ChartArt's MACD + SMA 200 Strategy // // Version 1.0 // Idea by ChartArt on November 30, 2015. // // Here is a combination of the MACD with the // slow moving average SMA 200 as a strategy. // // This strategy goes long if the MACD histogram // and the MACD momentum are both above zero and // the fast MACD moving average is above the // slow MACD moving average. As additional long filter // the recent price has to be above the SMA 200. // If the inverse logic is true, the strategy // goes short. For the worst case there is a // max intraday equity loss of 50% filter. // Input source = input(close) fastLength = input(12, minval=1, title="MACD fast moving average") slowLength=input(26,minval=1, title="MACD slow moving average") signalLength=input(9,minval=1, title="MACD signal line moving average") veryslowLength=input(200,minval=1, title="Very slow moving average") switch1=input(true, title="Enable Bar Color?") switch2=input(true, title="Enable Moving Averages?") switch3=input(true, title="Enable Background Color?") // Calculation fastMA = sma(source, fastLength) slowMA = sma(source, slowLength) veryslowMA = sma(source, veryslowLength) macd = fastMA - slowMA signal = sma(macd, signalLength) hist = macd - signal // Colors MAtrendcolor = change(veryslowMA) > 0 ? green : red trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na bgcolor(switch3?backgroundcolor:na,transp=80) barcolor(switch1?bartrendcolor:na) // Output F=plot(switch2?fastMA:na,color=trendcolor) S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2) V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4) fill(F,V,color=gray) // Strategy buyprice = low sellprice = high cancelLong = slowMA < veryslowMA cancelShort = slowMA > veryslowMA if (cancelLong) strategy.cancel("MACDLE") if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish") if (cancelShort) strategy.cancel("MACDSE") if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish") maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float) // strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)