Chiến lược này kết hợp chỉ số MACD với đường trung bình động, đi dài khi cả hai cung cấp tín hiệu phù hợp.
Lý do là:
Tính toán FAST MACD, EMA 12 ngày thông thường
Tính toán MACD chậm, EMA thường là 26 ngày
MACD là nhanh trừ chậm
Đường tín hiệu thường là MA 9 ngày của MACD
Tính toán MAs 9 ngày và 26 ngày
Xem xét dài khi MACD vượt qua đường tín hiệu
Đi dài khi MA 9 ngày vượt trên MA 26 ngày
Đóng dài khi MACD vượt dưới đường tín hiệu và MA 9 ngày vượt dưới MA 26 ngày
Chiến lược này khai thác chỉ số mua quá nhiều của MACD và khả năng theo xu hướng của MA, kết hợp cả hai cho các giao dịch tỷ lệ cược cao hơn.
MACD đánh giá quá mua / quá bán, MA xác định xu hướng
Sự kết hợp cung cấp cơ hội dài hạn có khả năng cao
Quy tắc rõ ràng dễ thực hiện
Cần tối ưu hóa để xác định các thông số tốt nhất
Không thể sử dụng các cơ hội ngắn hạn
Các giao dịch theo xu hướng có thể làm tăng lỗ
Chiến lược này sử dụng điểm mạnh của MACD và MA
/*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="หนีตาย")