
Chiến lược này dựa trên chỉ số MACD để thực hiện giao dịch theo dõi xu hướng. Chiến lược sử dụng chỉ số MACD để xác định hướng xu hướng, kết hợp với dừng động để khóa lợi nhuận.
Tính toán các chỉ số đường nhanh, đường chậm và MACD. Đường nhanh sử dụng chỉ số di chuyển trung bình 12 chu kỳ, đường chậm sử dụng chỉ số di chuyển trung bình 26 chu kỳ. MACD là chênh lệch giữa đường nhanh và đường chậm.
Thiết lập đường mua và đường bán. Khi MACD đi qua đường mua, nó sẽ tạo ra tín hiệu mua; Khi MACD đi qua đường bán, nó sẽ tạo ra tín hiệu bán.
Thiết lập dừng động sau khi mở vị trí, theo dõi đường dừng. Giá trị ban đầu của đường dừng là 95% giá mở vị trí, để khóa lợi nhuận khi giá di chuyển trên đường dừng.
Khi kích hoạt dấu hiệu dừng hoặc đảo ngược.
Sử dụng chỉ số MACD để xác định xu hướng, có thể theo dõi xu hướng hiệu quả.
Các cơ chế dừng lỗ động có thể khóa lợi nhuận liên tục và tránh tổn thất mở rộng.
Chiến lược logic đơn giản và rõ ràng, dễ hiểu thực hiện, phù hợp với việc thực hiện tự động giao dịch định lượng.
Chỉ số MACD bị tụt hậu và có thể bỏ lỡ sự đảo ngược xu hướng ngắn hạn.
Nếu dừng lỗ quá nhẹ, bạn có thể bỏ lỡ một phần lợi nhuận, và nếu quá nghiêm ngặt, bạn có thể dừng lỗ quá sớm.
Vấn đề về điều chỉnh tham số, tham số MACD và đường mua bán cần được kiểm tra và tối ưu hóa liên tục.
Trong một thời gian dài, các nhà đầu tư có thể có những kết quả tốt trong một thời gian xu hướng, và có nguy cơ mất mát trong một thời gian chấn động.
Tối ưu hóa các tham số MACD, tìm kiếm sự kết hợp tham số tốt nhất.
Kiểm tra các phương thức dừng khác nhau, chẳng hạn như dừng điểm, dừng ATR, v.v.
Thêm các điều kiện lọc, sử dụng các chỉ số khác để tránh giao dịch sai. Ví dụ: Bollinger Bands, RSI, v.v.
Kết hợp các chỉ số đánh giá xu hướng, xác định xu hướng và biến động, tham số chiến lược điều chỉnh động.
Chiến lược này có ý tưởng tổng thể rõ ràng, sử dụng chỉ số MACD theo dõi xu hướng và sử dụng dừng động để khóa lợi nhuận, có thể theo dõi hiệu quả các hoạt động của xu hướng. Tuy nhiên, chỉ số MACD có vấn đề về sự chậm trễ, thiết lập điểm dừng cũng cần được tối ưu hóa. Bước tiếp theo sẽ kiểm tra thêm các tham số thiết lập, tối ưu hóa cơ chế dừng lỗ và lọc với các chỉ số khác để làm cho chiến lược phù hợp hơn với các hoạt động khác nhau, tăng sự ổn định của chiến lược.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average", defval = 12, minval = 7)
slowMA = input(title="Slow moving average", defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)
//MACD
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// 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(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD
//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)
//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)
//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100
//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)
//Order Entries
strategy.entry("long", strategy.long, when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)