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

Tác giả:ChaoZhang, Ngày: 2024-03-11 11:33:47
Tags:

img

Tổng quan chiến lược

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

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 chỉ số MACD và chỉ số Supertrend để xác định hướng xu hướng của thị trường.

  1. Sử dụng chỉ số Supertrend để xác định hướng xu hướng hiện tại. Khi chỉ số Supertrend thay đổi, nó chỉ ra sự đảo ngược xu hướng.
  2. Sử dụng biểu đồ của chỉ số MACD để đánh giá sự thay đổi trong động lượng. Khi biểu đồ MACD chuyển từ âm sang dương, nó chỉ ra sự gia tăng động lượng tăng; khi biểu đồ MACD chuyển từ dương sang âm, nó chỉ ra sự gia tăng động lượng giảm.
  3. Mở một vị trí dài khi cả chỉ số Supertrend và chỉ số MACD cung cấp tín hiệu dài; mở một vị trí ngắn khi cả chỉ số Supertrend và chỉ số MACD cung cấp tín hiệu ngắn.
  4. Đóng tất cả các vị trí vào một thời gian cố định (chẳng hạn như 15:15) trong mỗi ngày giao dịch để tránh rủi ro qua đêm.
  5. Mở lại các vị trí vào một ngày giao dịch mới (chẳng hạn như 9:30), theo chỉ số Supertrend và chỉ số MACD.

Thông qua chuyển đổi dài ngắn năng động, chiến lược có thể thích nghi với những thay đổi trên thị trường và nắm bắt các cơ hội xu hướng.

Ưu điểm chiến lược

  1. Theo dõi xu hướng: Bằng cách kết hợp chỉ số Supertrend và chỉ số MACD, chiến lược có thể nắm bắt hiệu quả các cơ hội xu hướng trên thị trường.
  2. Chuyển đổi dài ngắn động: Chiến lược điều chỉnh động hướng vị trí theo những thay đổi trong các chỉ số, thích nghi với những thay đổi của thị trường.
  3. Kiểm soát rủi ro: Thông qua việc đóng vị trí thời gian cố định và chuyển đổi ngắn dài năng động, chiến lược có thể kiểm soát rủi ro tương đối tốt.
  4. Sự linh hoạt của các tham số: Các tham số của chiến lược (như thời gian 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, cung cấp một sự linh hoạt nhất định.

Rủi ro chiến lược

  1. Nguy cơ thất bại chỉ số: Trong một số môi trường thị trường, chỉ số MACD và chỉ số Supertrend có thể đưa ra tín hiệu sai, dẫn đến thất bại 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 sự lựa chọn các tham số và các 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 không có logic dừng lỗ rõ ràng, có thể dẫn đến tổn thất đáng kể trong môi trường thị trường cực đoan.
  4. Rủi ro qua đêm: Mặc dù chiến lược đóng các vị trí trong ngày, nhưng nó vẫn có thể phải đối mặt với rủi ro lỗ hổng qua đêm khi mở các vị trí qua đêm.

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

  1. Thêm logic stop-loss: Thêm logic stop-loss rõ ràng vào chiến lược, chẳng hạn như stop-loss phần trăm cố định hoặc ATR stop-loss, để 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ố chính của chiến lược, chẳng hạn như thời gian ATR, yếu tố, tham số MACD, vv, để cải thiện độ vững chắc 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ư đột phá giá, khối lượng giao dịch, v.v., để cải thiện độ tin cậy của tín hiệu.
  4. Kiểm tra nhiều thị trường: Kiểm tra chiến lược trên các thị trường và công cụ khác nhau để đánh giá tính áp dụng và ổn định của nó.

Tóm lại

Chiến lược cân bằng dài ngắn trong ngày động kết hợp trung bình chuyển động 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à đánh giá động lực. Bằng cách kết hợp chỉ số siêu xu hướng và chỉ số MACD và điều chỉnh động hướng vị trí, chiến lược có thể thích nghi với những thay đổi trên thị trường và nắm bắt các cơ hội xu hướng.

Tuy nhiên, chiến lược 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ỗ, vv Để cải thiện thêm chiến lược, người ta có thể xem xét thêm logic dừng lỗ, tối ưu hóa tham số, thêm nhiều đ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ắn hạn trong ngày động kết hợp trung bình chuyển động và siêu xu hướng cung cấp một cách 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 nhà giao dịch nên thực hiện điều chỉnh và tối ưu hóa phù hợp cho chiến lược dựa trên sở thích rủi ro và đặc điểm thị trường của riêng họ và sử dụng nó một cách thận trọng. Các chiến lược giao dịch định lượng có thể cung cấp ý tưởng giao dịch, nhưng thị trường luôn thay đổi, và không có chiến lược nào có thể đảm bảo lợi nhuận. Các nhà đầu tư phải hiểu các nguyên tắc và rủi ro của chiến lược, kiểm soát hợp lý các vị trí, nghiêm ngặt dừng lỗ và luôn cảnh giác để tồn tại trên thị trường trong thời gian dài.


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



Thêm nữa