Quadratic Momentum Double Indicators Chiến lược thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-04
Tags:

img

Tổng quan

Chiến lược này hợp nhất chỉ số SuperTrend với lý thuyết Elliott Wave để xây dựng một công cụ giao dịch kỹ thuật mạnh mẽ. Nó sử dụng phân tích xu hướng đa cấp để cung cấp một quan điểm thị trường toàn diện hơn có thể bắt đầu sớm đảo ngược xu hướng tiềm năng và chuyển động giá đáng kể.

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

Ý tưởng cốt lõi nằm trong cách tiếp cận đa cấp:

  1. Sử dụng 4 chỉ số SuperTrend, mỗi chỉ số có chiều dài và nhân ATR khác nhau để đánh giá xu hướng từ ngắn đến dài hạn
  2. Xác định các tín hiệu dài và ngắn mạnh mẽ thông qua hội tụ chỉ số
  3. Đề cập đến phương pháp nhận dạng mẫu Elliott Wave để xác định hành vi thị trường tương tự để xác nhận tín hiệu giao dịch

Do đó, nó sử dụng nhiều chỉ số và thêm nhận dạng mẫu để làm cho chiến lược mạnh mẽ hơn.

Phân tích lợi thế

  1. Thiết kế nhiều chỉ số cung cấp đánh giá toàn diện
  2. Sự truyền cảm hứng của lý thuyết sóng làm tăng sự ổn định thông qua nhận dạng mô hình
  3. Điều chỉnh hướng thời gian thực thích nghi với những thay đổi trên thị trường
  4. Các tham số có thể cấu hình phù hợp với các sản phẩm và khung thời gian khác nhau

Phân tích rủi ro

  1. Cài đặt tham số dựa trên kinh nghiệm, yêu cầu điều chỉnh để xác định sự kết hợp tham số tối ưu
  2. Thiết kế nhiều chỉ số phức tạp, tăng tải tính toán
  3. Không thể tránh hoàn toàn việc tạo tín hiệu không chính xác

Các thông số có thể được tối ưu hóa để dần dần xác định tối ưu; điện toán đám mây có thể cải thiện hiệu suất tính toán; dừng lỗ có thể kiểm soát rủi ro.

Hướng dẫn tối ưu hóa

Tối ưu hóa có thể được thực hiện trong một số khía cạnh:

  1. Thêm mô-đun điều chỉnh tham số thích nghi để điều chỉnh động các tham số dựa trên điều kiện thị trường
  2. Kết hợp các mô hình học máy để hỗ trợ đánh giá độ tin cậy tín hiệu
  3. Kết hợp các chỉ số tâm lý, các sự kiện tin tức vv để xác định chế độ thị trường
  4. Hỗ trợ các mẫu tham số đa sản phẩm để giảm khối lượng công việc thử nghiệm

Điều này sẽ làm cho các thông số chiến lược thông minh hơn, phán đoán chính xác hơn và ứng dụng thực tế thuận tiện hơn.

Tóm lại

Chiến lược xem xét cả hai chiều xu hướng và mô hình một cách toàn diện, đảm bảo tính mạnh mẽ của phán đoán trong khi tăng tính linh hoạt. Nhiều chỉ số và cài đặt tham số đảm bảo khả năng áp dụng đầy đủ trên thị trường. Với việc kết hợp thêm các phương pháp thông minh và tự động, tính thực tế của chiến lược có thể được tăng cường đáng kể. Nó cung cấp nguồn cảm hứng và tham chiếu có giá trị cho sự tiến bộ của giao dịch kỹ thuật.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")



Thêm nữa