Chiến lược cây quyết định đa chỉ số: IMACD, EMA và bảng cân bằng đầu tiên


Ngày ra đời: 2024-01-22 11:25:56 Sau khi sửa đổi: 2024-01-22 11:25:56
Tác giả: 0 Số lần nhấp: 341
1
Quan tâm
1105
Người quan tâm

多指标决策树策略:IMACD、EMA和一目均衡表

Thông tin chi tiết

Chiến lược này sử dụng một số chỉ số kỹ thuật như IMACD, EMA và bảng cân bằng đầu tiên để xây dựng một mô hình cây quyết định toàn diện để gửi tín hiệu mua và bán.

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

  1. IMACD: Tăng cường MACD, nắm bắt tốt hơn xu hướng thị trường thông qua ImpulseMACD và ImpulseHisto
  2. Bảng cân bằng đầu tiên: vẽ đường thay đổi, đường chuẩn, đường tiên phong A, đường tiên phong B, và các vị trí hỗ trợ và kháng cự
  3. EMA 40: hỗ trợ đánh giá xu hướng
  4. Giao tiếp cụ thể giữa IMACD, các thành phần biểu đồ đám mây và EMA 40

Làm nhiều tín hiệu: làm nhiều hơn khi IMACD là màu cho một điều kiện cụ thể và EMA 40 cao hơn so với biểu đồ mây

Báo hiệu không hoạt động: Báo hiệu không hoạt động khi IMACD màu đỏ và EMA 40 thấp hơn đường hầm của biểu đồ mây

Phân tích ưu thế

  1. Kết hợp nhiều chỉ số, đánh giá toàn diện xu hướng thị trường, nâng cao độ chính xác của quyết định
  2. Mô hình cây quyết định được phân loại rõ ràng, các tín hiệu giao dịch được tạo rõ ràng
  3. Độ dài EMA có thể điều chỉnh, giúp bạn quyết định linh hoạt hơn
  4. Kết hợp với biểu đồ đám mây và các chỉ số xu hướng để xác định rõ hơn mức hỗ trợ và kháng cự

Phân tích rủi ro

  1. Sự kết hợp nhiều chỉ số, cài đặt các tham số phức tạp hơn
  2. EMA không được thiết lập đúng chiều dài, có thể dẫn đến tín hiệu giao dịch sai
  3. Cần phải tập trung vào nhiều chỉ số cùng một lúc, điều này rất khó khăn.

Giải quyết rủi ro: tối ưu hóa cài đặt tham số, điều chỉnh chiều dài EMA, đơn giản hóa quy trình hoạt động.

Định hướng tối ưu

  1. Tối ưu hóa cài đặt tham số, tăng tính ổn định chiến lược
  2. Tăng chiến lược dừng lỗ, kiểm soát lỗ đơn
  3. Phân tích dữ liệu lớn để cải thiện chất lượng tín hiệu
  4. Kết hợp các thuật toán học máy để xây dựng cây quyết định thích nghi

Tóm lại

Chiến lược này sử dụng một cách tổng hợp các xu hướng nhận diện nhiều chỉ số, xây dựng mô hình cây quyết định để tạo ra tín hiệu giao dịch. Ưu điểm là chất lượng tín hiệu cao, độ chính xác cao và phù hợp với tối ưu hóa từng bước.

Mã nguồn chiến lược
                
                    /*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)

                
            
Nhiều hơn nữa