
Chiến lược MACD Valley Detector là một chiến lược giao dịch dựa trên chỉ số MACD. Chiến lược này tạo ra tín hiệu mua bằng cách phát hiện đáy của chỉ số MACD.
Trung tâm của chiến lược MACD Valley Detector là sử dụng chỉ số MACD để nắm bắt cơ hội đảo ngược tiềm năng. Chỉ số MACD được tính bằng chênh lệch giữa hai chỉ số chuyển động trung bình (EMA), phản ánh sự thay đổi động lực của giá. Khi chỉ số MACD hình thành đáy thung lũng, nó cho thấy động lực giảm giá có thể giảm đi và có khả năng đảo ngược.
Chiến lược này sử dụng các điều kiện sau để xác định đáy của MACD:
Khi các điều kiện trên được đáp ứng cùng một lúc, chiến lược cho rằng đáy thung lũng MACD đã xuất hiện và phát tín hiệu mua. Đồng thời, chiến lược đặt giá dừng cố định, tức là giá mua cộng với giá chênh lệch cố định ((takeProfitValue)
Chiến lược MACD Valley Detector là một chiến lược giao dịch dựa trên việc phát hiện đáy của MACD. Bằng cách nắm bắt đáy của chỉ số MACD, chiến lược cố gắng tìm kiếm cơ hội đảo ngược tiềm năng và mua. Chiến lược sử dụng nhiều điều kiện để xác nhận tín hiệu và đặt giá dừng cố định. Mặc dù chiến lược này có một số lợi thế, chẳng hạn như sử dụng chỉ số MACD được sử dụng rộng rãi và xác nhận nhiều điều kiện, nhưng cũng có một số rủi ro và hạn chế, chẳng hạn như trì trệ, tham số cố định, thiếu dừng rõ ràng.
/*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)