Chiến lược này kết hợp chỉ số MACD và chỉ số trung bình di chuyển để thực hiện nhiều giao dịch khi cả hai cung cấp tín hiệu đồng chiều.
Các giao dịch được thực hiện theo các logic sau:
Tính toán giá trị FAST MACD, thường lấy chỉ số di chuyển trung bình 12 ngày
Tính toán giá trị SLOW MACD, thường lấy chỉ số chuyển động trung bình 26 ngày
MACD là FAST trừ SLOW
Tính MACD của đường tín hiệu, thường lấy đường trung bình di chuyển 9 ngày
Tính trung bình di chuyển 9 và 26 ngày
Hãy cân nhắc nhiều hơn khi sử dụng MACD
Khi bạn đi trên đường trung bình 9 ngày, bạn đi trên đường trung bình 26 ngày.
Khi MACD vượt qua đường tín hiệu và vượt qua đường trung bình 9 ngày dưới đường trung bình 26 ngày, vị trí yên
Chiến lược này sử dụng đầy đủ khả năng theo dõi xu hướng của MACD về phán đoán mua bán quá mức và đường trung bình, kết hợp cả hai để giao dịch để tăng tỷ lệ thành công.
MACD đánh giá quá mua quá bán, đường trung bình đánh giá xu hướng
Sự hợp nhất của hai điều này đã được chứng minh, tạo ra nhiều cơ hội làm việc có khả năng cao.
Quy tắc hoạt động rõ ràng và dễ thực hiện
Cần thử nghiệm nhiều lần để xác định các tham số tối ưu
Làm nhiều hơn, không thể tận dụng cơ hội rảnh rỗi
Những người làm nhiều hơn có thể làm tổn thất lớn hơn
Chiến lược này tận dụng lợi thế của MACD và chỉ số đường trung bình, kết hợp cả hai để đánh giá nhịp độ thị trường. Tuy nhiên, chỉ cần chú ý đến các vấn đề như làm nhiều hơn và tối ưu hóa tham số.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MACD Cross+MA", overlay=true)
//@version=4
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot
plot(sma(close,9),color=color.red)
plot(sma(close,26),color=color.green)
//Condition
BMacdcondition= (macd>signal)
SMacdcondition= (macd<signal)
longCondition = crossover(sma(close, 9), sma(close, 26))
shortCondition = crossunder(sma(close, 9), sma(close, 26))
//entry
if (BMacdcondition) and window()
(longCondition)
strategy.entry("LONG", strategy.long)
if (shortCondition) and window()
(SMacdcondition)
strategy.close("LONG", qty_percent=100 , comment="หนีตาย")