
Chiến lược này sử dụng nguyên tắc giao thoa hai đường bằng phẳng, kết hợp với phán đoán xu hướng của chỉ số MACD và điểm giao thoa nổi bật nền, hỗ trợ với điểm hình dạng, nhằm mục đích chụp xu hướng trung bình của thị trường. Logic chính là vào khi chuyển đổi theo hướng bằng phẳng, đi qua điểm giao thoa nổi bật của màu nền MACD, kết hợp với phán đoán thay đổi màu sắc của đồ thị đường thẳng MACD.
Chiến lược sử dụng EMA nhanh và EMA chậm để xây dựng hai đường trung bình, đường nhanh và đường chậm để xác định hướng xu hướng. Đồng thời, tính toán MACD và Signal, điểm chênh lệch của nó được vẽ như một đồ thị thẳng.
Dựa trên mã, chiều dài đường nhanh là 12, chiều dài đường chậm là 26, thể hiện xu hướng ngắn hạn và dài hạn. Dài Signal là 9, xử lý mịn thêm.
Lập luận chéo
Địa điểm giao nhau:
Hình chữ nhật thay đổi màu sắc để xác định mức độ xu hướng:
Sử dụng đường hai chiều để xác định hướng xu hướng trung hạn, tránh bị nhiễu bởi tiếng ồn thị trường ngắn hạn
Chỉ số MACD hỗ trợ xác định xu hướng và cường độ ngắn hạn, tăng khả năng kiếm lợi nhuận
Sự thay đổi màu sắc của đồ thị thẳng đứng xác định kích thước, có thể nắm bắt thời gian nhập cảnh tốt hơn
Các điểm giao nhau được đánh dấu bằng màu nền.
Có thể tùy chỉnh chu kỳ trung bình để thích ứng với các môi trường thị trường khác nhau
Có thể điều chỉnh các tham số MACD để tối ưu hóa hiệu quả của chỉ số
Cung cấp nhiều cách xác nhận nhập cảnh: hướng đồng tuyến, giao điểm, đột phá hình dạng
Bi-equilibrium đánh giá xu hướng trung hạn không nhạy cảm với biến động ngắn hạn, có thể bỏ lỡ cơ hội đường ngắn
Các tham số MACD được thiết lập không đúng, chỉ số không hiệu quả, phát ra tín hiệu sai
Chỉ với đường trung bình và tín hiệu MACD, có một số mù lòa
Không tính đến các cơ chế rút khỏi lỗ hổng, có nguy cơ mở rộng lỗ hổng
Thiếu quản lý quỹ và kiểm soát vị trí nghiêm ngặt
Các giải pháp có thể:
Kết hợp với các chỉ số khác giới hạn phạm vi biến động ngắn hạn, kiểm soát rủi ro
Tối ưu hóa các tham số MACD để kiểm tra hiệu quả của các thị trường khác nhau
Thêm hình dạng, các yếu tố như Momentum để xác nhận tín hiệu
Thiết lập các cơ chế ngăn chặn thiệt hại để tránh tổn thất quá lớn
Tham gia mô-đun quản lý tiền để kiểm soát các vị trí đơn theo quy mô tiền
Kiểm tra tối ưu hóa các tham số đường trung bình để phù hợp với nhiều tình huống thị trường hơn
Thử các loại đường trung bình khác nhau như VWAP, đường trung bình và các loại khác
Cân nhắc tăng lượng giao thông, tránh đột phá giả
Kết hợp các chỉ số như RSI, xác nhận quá mua quá bán
Thiết lập các cơ chế ngăn chặn thiệt hại, chẳng hạn như ngăn chặn di chuyển, ngăn chặn rung động
Tham gia vào cơ chế quản lý vị trí, kiểm soát vị trí đơn theo quy mô vốn
Có thể xem xét tối ưu hóa tham số kết hợp với thuật toán học máy
Chiến lược mở rộng Universe, hướng đi đầu tư sâu hơn trong danh mục đầu tư
Chiến lược này tích hợp phán đoán xu hướng hai đường đồng nhất và chỉ số động lực MACD, thêm các đặc điểm hình dạng, xây dựng một chiến lược giao dịch trung hạn tương đối ổn định. Ưu điểm cốt lõi là nắm bắt hướng xu hướng chính và tránh bị nhiễu bởi tiếng ồn thị trường ngắn hạn.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Histogram MacD MVP_V2.1", shorttitle="Histogram MacD MVP_2.1")
//Plot Inputs
res = input.timeframe("", "Indicator TimeFrame")
fast_length = input.int(title="Fast Length", defval=12)
slow_length = input.int(title="Slow Length", defval=26)
src = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Show Plots T/F
show_macd = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")
//show_trend = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd = input.color(#FF6D00, "MACD Line ", group="Color Settings", inline="CS1")
col_signal = input.color(#2962FF, "Signal Line ", group="Color Settings", inline="CS1")
col_trnd_Up = input.color(#4BAF4F, "Trend Up ", group="Color Settings", inline="CS2")
col_trnd_Dn = input.color(#B71D1C, "Trend Down ", group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above Grow", group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#FF5252, "Fall", group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow", group="Histogram Colors", inline="Hist20")
col_fall_below = input.color(#f8f524, "Fall", group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up = macd > signal
trend_dn = macd < signal
cross_UP = signal[1] >= macd[1] and signal < macd
cross_DN = signal[1] <= macd[1] and signal > macd
cross_UP_A = (signal[1] >= macd[1] and signal < macd) and macd > 0
cross_DN_B = (signal[1] <= macd[1] and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na
//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp := hist == hist[1] ? histA_IsUp[1] : hist > hist[1] and hist > 0
histA_IsDown := hist == hist[1] ? histA_IsDown[1] : hist < hist[1] and hist > 0
histB_IsDown := hist == hist[1] ? histB_IsDown[1] : hist < hist[1] and hist <= 0
histB_IsUp := hist == hist[1] ? histB_IsUp[1] : hist > hist[1] and hist <= 0
hist_col = histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver
// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd and signal ? signal : na, title="Signal", color=color.new(col_signal, 0), style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd and macd ? macd : na, title="MACD", color=color.new(trend_col, 0), style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
//Alerts
if alert_Long and cross_UP
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short and cross_DN
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short_B and cross_DN_B
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)
if (histA_IsUp)
strategy.entry("buy", strategy.long, comment="buy")
if (histA_IsDown)
strategy.entry("sell", strategy.short, comment="sell")