Chiến lược kiểm soát rủi ro động mô hình Engulfing nâng cao của Supertrend

ATR SL TP CANDLE supertrend ENGULFING
Ngày tạo: 2025-02-20 15:32:32 sửa đổi lần cuối: 2025-02-20 15:32:32
sao chép: 6 Số nhấp chuột: 319
2
tập trung vào
319
Người theo dõi

Chiến lược kiểm soát rủi ro động mô hình Engulfing nâng cao của Supertrend Chiến lược kiểm soát rủi ro động mô hình Engulfing nâng cao của Supertrend

Tổng quan

Đây là một chiến lược giao dịch cao cấp kết hợp chỉ số Supertrend và hình thức ăn uống. Chiến lược này xác định định hướng xu hướng của xu hướng bằng cách xác định mô hình vẽ hình thức ăn uống trong thị trường và kết hợp với chỉ số Supertrend để có thể lọc các tín hiệu giao dịch chính xác. Chiến lược này cũng tích hợp các thiết lập dừng lỗ và lợi nhuận động để kiểm soát rủi ro hiệu quả và đảm bảo lợi nhuận.

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

Chiến lược này dựa trên những nguyên tắc cốt lõi sau:

  1. Sử dụng ATR để tính toán chỉ số Supertrend để xác định xu hướng thị trường tổng thể.
  2. Chọn các hình thức nuốt có hiệu quả bằng cách đặt Boring Candle Threshold và Engulfing Candle Threshold.
  3. Chỉ đặt vị trí khi hướng xu hướng Supertrend phù hợp với hướng hình dạng ăn mòn.
  4. Sử dụng thiết lập điểm dừng và lợi nhuận động, tính theo tỷ lệ dựa trên giá mở vị trí.
  5. Sử dụng quản lý vị trí chiến lược để đảm bảo chỉ có một hướng giao dịch tại một thời điểm.

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

  1. Chất lượng tín hiệu được kiểm soát chặt chẽ, tăng độ chính xác bằng cách xác nhận kép ((trend + form)
  2. Tiêu chuẩn này được sử dụng để lọc các tín hiệu giả.
  3. Tính năng tính toán Supertrend dựa trên ATR giúp chiến lược có khả năng thích ứng tốt với thị trường.
  4. Cơ chế quản lý lỗ hổng và lợi nhuận tốt, kiểm soát rủi ro và khóa lợi nhuận.
  5. Hình ảnh được làm rất tốt, tín hiệu giao dịch, điểm dừng lỗ và mục tiêu lợi nhuận đều được hiển thị rõ ràng.

Rủi ro chiến lược

  1. Các tín hiệu phá vỡ giả có thể xảy ra thường xuyên trong thị trường bất ổn.
  2. Các thiết lập dừng lỗ và lợi nhuận cố định có thể không phù hợp với tất cả các môi trường thị trường.
  3. Có thể sẽ có một sự rút lui lớn hơn nếu xu hướng thay đổi.
  4. Cài đặt tham số nhạy cảm, tham số không phù hợp có thể dẫn đến hoạt động không tốt của chiến lược.
  5. Trong một thị trường ít lưu động, có thể có nguy cơ trượt.

Hướng tối ưu hóa chiến lược

  1. Có thể giới thiệu chỉ số giao thông như tín hiệu xác nhận.
  2. Cân nhắc tham gia cơ chế điều chỉnh ATR nhân động.
  3. Tỷ lệ dừng lỗ và lợi nhuận được điều chỉnh theo biến động của thị trường.
  4. Thêm bộ lọc thời gian để tránh giao dịch trong khoảng thời gian không phù hợp.
  5. Xem xét thêm bộ lọc cường độ xu hướng để cải thiện chất lượng giao dịch.

Tóm tắt

Đây là một chiến lược được thiết kế nghiêm ngặt, logic rõ ràng, thông qua kết hợp các chỉ số kỹ thuật và phân tích hình dạng, thực hiện kiểm soát chất lượng tín hiệu tốt. Cơ chế quản lý rủi ro của chiến lược được hoàn thiện, hiệu quả trực quan xuất sắc, phù hợp để thử nghiệm và tối ưu hóa thực tế.

Mã nguồn chiến lược
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)