Chiến lược kiểm soát rủi ro dựa trên Super Trend và MACD


Ngày tạo: 2024-03-11 11:24:20 sửa đổi lần cuối: 2024-03-11 11:24:20
sao chép: 0 Số nhấp chuột: 699
1
tập trung vào
1617
Người theo dõi

Chiến lược kiểm soát rủi ro dựa trên Super Trend và MACD

Tổng quan

Chiến lược này kết hợp các chỉ số siêu xu hướng và MACD để thu lợi nhuận bằng cách nắm bắt các xu hướng nhỏ. Chiến lược sử dụng các chỉ số siêu xu hướng để đánh giá xu hướng thị trường hiện tại, đồng thời sử dụng MACD như một điều kiện hỗ trợ cho nhập cảnh và xuất cảnh.

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

  1. Sử dụng hàm ta.supertrend để tính toán chỉ số siêu xu hướng, tham số là chu kỳ ATR và nhân số.
  2. Xu hướng đa luồng được đánh giá dựa trên sự thay đổi hướng của chỉ số xu hướng siêu, được coi là xu hướng tăng khi hướng thay đổi từ lớn hơn 0 đến nhỏ hơn bằng 0; ngược lại, được coi là xu hướng giảm.
  3. Sử dụng hàm request.security để lấy giá trị chỉ số MACD trong chu kỳ 30 phút, bao gồm đường MACD, đường tín hiệu và biểu đồ cột.
  4. Trong xu hướng tăng, nếu MACD lớn hơn 0, mở thêm vị trí và xóa vị trí trống trước đó.
  5. Trong xu hướng giảm, nếu MACD nhỏ hơn 0, hãy mở một vị trí trống và xóa các vị trí dư thừa trước đó.

Phân tích lợi thế

  1. Kết hợp theo dõi xu hướng và chỉ số động lực, nó có thể thích ứng tốt hơn với các tình trạng thị trường khác nhau.
  2. Sử dụng chỉ số MACD có chu kỳ dài hơn như một điều kiện phụ, có thể lọc một số tín hiệu giả hiệu quả.
  3. Lập luận của chiến lược rất đơn giản, dễ hiểu và dễ thực hiện, phù hợp với người mới bắt đầu.
  4. Các tham số chiến lược có thể điều chỉnh và tối ưu hóa cho các thị trường và giống khác nhau.

Phân tích rủi ro

  1. Chiến lược: Có thể có nhiều tín hiệu giao dịch trong thị trường bất ổn, dẫn đến giao dịch thường xuyên và chi phí điểm trượt cao.
  2. Chỉ số siêu xu hướng nhạy cảm với các tham số, và các thiết lập tham số khác nhau có thể có kết quả khác nhau.
  3. Các chỉ số MACD có thể bị lệch với giá, dẫn đến tín hiệu giao dịch sai.
  4. Chiến lược thiếu các biện pháp dừng lỗ, có thể chịu rủi ro lớn hơn trong trường hợp tình hình kinh tế không ổn định hoặc bất ngờ.

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

  1. Bạn có thể xem xét thêm các điều kiện lọc, chẳng hạn như giá vượt qua mức hỗ trợ hoặc kháng cự quan trọng, thay đổi khối lượng giao dịch, để tăng độ tin cậy của tín hiệu.
  2. Đối với thị trường chấn động, bạn có thể xem xét sử dụng chỉ số MACD có chu kỳ ngắn hơn hoặc các chỉ số khác phù hợp với thị trường chấn động để đánh giá xu hướng.
  3. Các biện pháp dừng lỗ có thể được thêm vào, chẳng hạn như dừng số điểm cố định, dừng di chuyển, v.v., để kiểm soát rủi ro tối đa cho một giao dịch.
  4. Các tham số có thể được tối ưu hóa cho các thị trường và giống khác nhau để tìm ra sự kết hợp phù hợp nhất.

Tóm tắt

Chiến lược này là một chiến lược toàn diện và cân bằng hơn bằng cách kết hợp các chỉ số siêu xu hướng và chỉ số MACD, cũng xem xét tính bền vững của xu hướng trong khi bắt được xu hướng nhỏ. Ưu điểm của chiến lược là rõ ràng về logic, dễ hiểu và thực hiện, đồng thời có thể lọc một số tín hiệu giả hiệu quả bằng cách sử dụng chỉ số MACD có chu kỳ dài hơn làm điều kiện phụ.

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

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")