Chiến lược giao dịch đường trung bình động kép dựa trên chỉ báo MACD


Ngày tạo: 2023-12-18 12:25:13 sửa đổi lần cuối: 2023-12-18 12:25:13
sao chép: 1 Số nhấp chuột: 806
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch đường trung bình động kép dựa trên chỉ báo MACD

Tổng quan

Chiến lược này có tên làChiến lược theo dõi đường hai chiều của MACD, sử dụng MACD chỉ số của Binary Equity Gold Forks Dead Forks như là một tín hiệu giao dịch, kết hợp với giá thấp nhất ngày hôm qua như là điểm dừng lỗ, theo dõi giá cổ phiếu đường ngắn di chuyển.

Nguyên tắc chiến lược

  1. Tính toán đường nhanh EMA ((close, 5), đường chậm EMA ((close, 8) và đường tín hiệu SMA ((MACD, 3)
  2. Định nghĩa tín hiệu đa đầu: làm nhiều hơn khi đi qua dây chậm trên dây nhanh
  3. Định nghĩa tín hiệu đầu trống: Đường nhanh dưới đường đi qua đường chậm hoặc khống chế khi giá đóng cửa trong ngày thấp hơn giá thấp nhất ngày hôm qua
  4. Số lượng nắm giữ là $ 2000 vốn ban đầu chia cho giá đóng cửa
  5. Nhiều đầu dừng sử dụng tín hiệu không đầu bằng phẳng

Phân tích lợi thế

  1. Sử dụng chỉ số MACD để đánh giá khu vực quá mua quá bán của thị trường, kết hợp với tín hiệu giao dịch hình thành đường hai ngang, tránh phá vỡ giả
  2. Theo dõi xu hướng ngắn hạn, dừng lỗ kịp thời
  3. Cải chỉnh động lực nắm giữ để tránh tổn thất đơn lẻ quá lớn

Phân tích rủi ro

  1. Chỉ số MACD bị tụt hậu, có thể bỏ lỡ cơ hội rút ngắn
  2. Tín hiệu giao dịch song song có thể tạo ra tín hiệu giả
  3. Điểm dừng quá cấp tiến, có thể có quá nhiều điểm dừng

Hướng tối ưu hóa

  1. Tối ưu hóa sự kết hợp các tham số MACD, nâng cao độ nhạy của chỉ số
  2. Tăng khả năng đánh giá xu hướng, tránh các tín hiệu giả tạo từ thị trường rung động
  3. Kết hợp với chỉ số biến động để đánh giá biến động của thị trường, điều chỉnh điểm dừng lỗ

Tóm tắt

Chiến lược này sử dụng chỉ số kết hợp hai đường ngang của MACD cổ điển để đánh giá khoảng mua quá mức, tạo ra tín hiệu giao dịch, đồng thời giới thiệu số lượng nắm giữ động và thiết kế điểm dừng lỗ của giá thấp nhất ngày trước, thu được các đặc điểm dao động ngắn của giá cổ phiếu, ý tưởng chiến lược tổng thể rõ ràng và dễ hiểu, đáng để kiểm tra và tối ưu hóa hơn nữa.

Mã nguồn chiến lược
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-13 02:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// macd/cam v1 strategizing Chris Moody Macd indicator https://www.tradingview.com/script/OQx7vju0-MacD-Custom-Indicator-Multiple-Time-Frame-All-Available-Options/
// macd/cam v2 changing to macd 5,8,3
// macd/cam v2.1 
//      Sell when lower than previous day low. 
//      Initial capital of $2k. Buy/sell quantity of initial capital / close price
//      Quitar short action
//      Note: custom 1-week resolution seems to put AMD at 80% profitable

strategy(title="MACD/CAM 2.1", shorttitle="MACD/CAM 2.1") //
source = close
//get inputs from options
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")
venderLowerPrev = input(true,title="Vender cuando closing price < previous day low?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(5, minval=1), slowLength=input(8,minval=1)
signalLength=input(3,minval=1)

// find exponential moving average of price as x and fastLength var as y
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
// simple moving average
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)

circleCondition = sd and cross(outMacD, outSignal)

// Determine long and short conditions
longCondition  = circleCondition and macd_color == lime

redCircle = circleCondition and macd_color == red
redCirclePrevLow = redCircle or low<low[1]
shortCondition = redCircle
if (venderLowerPrev)
    shortCondition = redCirclePrevLow

strategy.initial_capital = 20000
// Set quantity to initial capital / closing price
cantidad = strategy.initial_capital/close

// Submit orders
strategy.entry(id="long", long=true, qty=cantidad, when=longCondition)
strategy.close(id="long", when=shortCondition)
plot(circleCondition ? circleYPosition : na, title="Cross", style=cross, linewidth=10, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)