Chiến lược cân bằng động dài-ngắn trong ngày kết hợp đường trung bình động và siêu xu hướng


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

Chiến lược cân bằng động dài-ngắn trong ngày kết hợp đường trung bình động và siêu xu hướng

Tổng quan về chiến lược

Chiến lược cân bằng động đa luồng trong ngày kết hợp với xu hướng trung bình và siêu xu hướng là một chiến lược giao dịch định lượng được viết dựa trên Pine Script TM 5. Chiến lược này sử dụng chỉ số MACD và chỉ số siêu xu hướng để nắm bắt cơ hội theo xu hướng của thị trường, đồng thời kiểm soát rủi ro thông qua chuyển đổi đa luồng động và dừng lỗ.

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

Cốt lõi của chiến lược này là kết hợp các chỉ số MACD và chỉ số siêu xu hướng để đánh giá xu hướng của thị trường.

  1. Sử dụng chỉ số siêu xu hướng để đánh giá xu hướng hiện tại. Khi chỉ số siêu xu hướng thay đổi, nó cho thấy xu hướng đã bị đảo ngược.
  2. Sử dụng biểu đồ trụ của MACD để đánh giá sự thay đổi động lực. Khi biểu đồ trụ của MACD được điều chỉnh âm, nó cho thấy tăng năng lượng va chạm lên; Khi biểu đồ trụ của MACD được điều chỉnh dương, nó cho thấy tăng năng lượng va chạm xuống.
  3. Khi chỉ số siêu xu hướng và chỉ số MACD đồng thời phát tín hiệu nhiều, mở nhiều vị trí; khi chỉ số siêu xu hướng và chỉ số MACD đồng thời phát tín hiệu giảm, mở vị trí trống.
  4. Xóa tất cả các vị trí tại một thời gian nhất định trong mỗi ngày giao dịch (ví dụ như 15:15), tránh rủi ro qua đêm.
  5. Vào ngày giao dịch mới (ví dụ như 9:30), mở lại vị trí theo chỉ dẫn của chỉ số siêu xu hướng và MACD.

Bằng cách chuyển đổi đa luồng động, chiến lược này có thể thích ứng với sự thay đổi của thị trường và nắm bắt cơ hội theo xu hướng. Đồng thời, thiết kế vị trí trơn thời gian cố định cũng giúp kiểm soát rủi ro.

Lợi thế chiến lược

  1. Theo dõi xu hướng: Bằng cách kết hợp các chỉ số siêu xu hướng và MACD, chiến lược này có thể nắm bắt hiệu quả các cơ hội xu hướng của thị trường.
  2. Chuyển đổi đa luồng động: Chiến lược này sẽ thay đổi hướng vị trí theo các chỉ số thay đổi động, thích ứng với sự thay đổi của thị trường.
  3. Kiểm soát rủi ro: Chiến lược này có thể kiểm soát rủi ro tốt hơn bằng cách giữ vị trí bằng phẳng trong thời gian cố định và chuyển đổi động nhiều không gian.
  4. Tính linh hoạt của các tham số: Các tham số của chiến lược (như chu kỳ ATR, yếu tố, v.v.) có thể được điều chỉnh theo đặc điểm thị trường và sở thích cá nhân, với một mức độ linh hoạt.

Rủi ro chiến lược

  1. Rủi ro thất bại của chỉ số: Trong một số môi trường thị trường, chỉ số MACD và chỉ số siêu xu hướng có thể phát tín hiệu sai, dẫn đến thất bại của chiến lược.
  2. Rủi ro tối ưu hóa tham số: Hiệu suất của chiến lược phụ thuộc vào lựa chọn tham số, tham số không phù hợp có thể dẫn đến hiệu suất chiến lược kém.
  3. Rủi ro dừng lỗ: Chiến lược này không có logic dừng lỗ rõ ràng, điều này có thể dẫn đến tổn thất lớn hơn trong môi trường thị trường cực đoan.
  4. Rủi ro qua đêm: Mặc dù chiến lược này sẽ xóa vị trí trong ngày, nhưng có thể vẫn có nguy cơ bị lỗ hổng qua đêm khi mở vị trí qua đêm.

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

  1. Tăng logic dừng lỗ: Thêm logic dừng lỗ rõ ràng vào chiến lược, chẳng hạn như dừng phần trăm cố định hoặc dừng ATR, để kiểm soát rủi ro hơn nữa.
  2. Tối ưu hóa tham số: Tối ưu hóa các tham số quan trọng của chiến lược, chẳng hạn như chu kỳ ATR, yếu tố, tham số MACD, v.v., để cải thiện sự ổn định và lợi nhuận của chiến lược.
  3. Bộ lọc tín hiệu: Thêm thêm các điều kiện lọc tín hiệu, chẳng hạn như giá phá vỡ, khối lượng giao dịch, để tăng độ tin cậy của tín hiệu.
  4. Thử nghiệm đa thị trường: Thử nghiệm chiến lược trên các thị trường và giống khác nhau để đánh giá tính phù hợp và ổn định của nó.

Tóm tắt

Phương pháp cân bằng động trong ngày nhiều không gian kết hợp với xu hướng trung bình và siêu xu hướng là một chiến lược giao dịch dựa trên theo dõi xu hướng và phán đoán động lực. Bằng cách kết hợp các chỉ số siêu xu hướng và chỉ số MACD, chiến lược này có thể điều chỉnh hướng vị trí của vị trí bằng cách thích ứng với sự thay đổi của thị trường và nắm bắt cơ hội xu hướng.

Tuy nhiên, chiến lược này cũng có một số rủi ro và thiếu sót, chẳng hạn như rủi ro thất bại chỉ số, rủi ro tối ưu hóa tham số, rủi ro dừng lỗ, v.v. Để hoàn thiện chiến lược hơn nữa, bạn có thể xem xét thêm logic dừng lỗ, tham số tối ưu hóa, thêm các điều kiện lọc tín hiệu và thử nghiệm trên nhiều thị trường.

Nhìn chung, chiến lược cân bằng động lực đa luồng trong ngày kết hợp với xu hướng siêu cung cấp một suy nghĩ theo dõi xu hướng và kiểm soát rủi ro. Trong ứng dụng thực tế, các thương nhân nên kết hợp với sở thích rủi ro của mình và đặc điểm thị trường, để điều chỉnh và tối ưu hóa chiến lược một cách thích hợp, sử dụng thận trọng. Chiến lược giao dịch định lượng mặc dù có thể cung cấp suy nghĩ giao dịch, nhưng thị trường thay đổi rất nhanh, không có chiến lược nào đảm bảo lợi nhuận.

Mã nguồn chiến lược
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


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

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

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 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


// 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-----------------////////////////