MACD 밸리 디렉터 전략은 MACD 지표에 기반한 거래 전략이다. 이 전략은 MACD 지표에서 계곡을 감지하여 구매 신호를 생성한다. MACD 지표가 계곡을 형성하면 MACD 값이 -0.4보다 작거나 같고 MACD와 신호 라인의 차이는 0보다 작고 전략은 구매 신호를 발행하고 수익을 취하는 가격을 설정한다.
MACD 밸리 디렉터 전략의 핵심은 잠재적 인 반전 기회를 포착하기 위해 MACD 지표를 사용하는 것입니다. MACD 지표는 두 개의 기하급수적 이동 평균 (EMA) 사이의 차이로 계산되며 가격 동력의 변화를 반영합니다. MACD 지표가 계곡을 형성하면 가격의 하향 동력이 약화 될 수 있으며 반전이 가능하다는 것을 암시합니다.
이 전략은 MACD 계곡을 결정하기 위해 다음 조건을 사용합니다.
위의 조건이 동시에 충족되면 전략은 MACD 계곡으로 간주하고 구매 신호를 발송합니다. 동시에 전략은 고정된 수익을 취하는 가격을 설정합니다. 즉 구매 가격과 고정된 가격 차이 (takeProfitValue).
MACD 밸리 탐지 전략은 MACD 지표의 계곡을 탐지하는 것을 기반으로 한 거래 전략이다. MACD 지표의 계곡을 캡처함으로써 전략은 잠재적 인 반전 기회를 찾고 구매를 시도합니다. 전략은 신호를 확인하고 고정된 수익을 얻는 가격을 설정하기 위해 여러 조건을 사용합니다. 이 전략은 널리 사용되는 MACD 지표와 다조건 확인을 활용하는 것과 같은 특정 장점이 있지만 지연, 고정 매개 변수, 명확한 스톱-손실 부족 등 일부 위험과 한계도 있습니다. 전략을 개선하기 위해 동적 스톱-손실, 매개 변수 최적화, 필터링을위한 다른 지표와 결합하고 동적 수익을 얻는 방법을 고려 할 수 있습니다. 전반적으로 MACD 밸리 탐지 전략은 반전 기회를 캡처하기위한 아이디어를 제공하지만 여전히 실제 시장 조건과 필요에 따라 최적화 및 개선해야합니다.
/*backtest start: 2024-03-12 00:00:00 end: 2024-04-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © freditansari //@version=5 //@version=5 strategy("MACD Valley Detector", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD rsi = ta.rsi(close, 14) atr = ta.atr(14) qty=1 takeProfitValue =7 // stopLossValue = 1 // close[0] < close[1] and close[1] > close[2] is_valley= delta[0] > delta[1] and delta[1]<delta[2]? 1:0 // plot(is_valley , "valley?") if(is_valley==1 and MACD<=-0.4 and delta <0) takeProfit = close +takeProfitValue action = "buy" // strategy.entry("long", strategy.long, qty=qty) // // strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit) // strategy.exit("exit", "long", limit=takeProfit) alert('{"TICKER":"'+syminfo.ticker+'","ACTION":"'+action+'","PRICE":"'+str.tostring(close)+'","TAKEPROFIT":"'+str.tostring(takeProfit)+'","QTY":"'+str.tostring(qty)+'"}') if (ta.crossover(delta, 0)) stopLoss = low -0.3 takeProfit = high +0.3 strategy.entry("MacdLE", strategy.long,qty=qty, comment="MacdLE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit long", "MacdLE", stop=stopLoss, limit=takeProfit) if (ta.crossunder(delta, 0)) stopLoss = high + 0.3 takeProfit = low - 0.3 strategy.entry("MacdSE", strategy.short,qty=qty, comment="MacdSE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit short", "MacdSE", stop=stopLoss, limit=takeProfit) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)