Tài nguyên đang được tải lên... tải...

Tác giả:ChaoZhang, Ngày: 2024-01-22 17:34:05
Tags:

img

Tổng quan

Chiến lược này kết hợp các chỉ số động lực và trung bình động để xác định xu hướng thị trường và điểm đảo ngược cho giao dịch khi xu hướng thay đổi hướng. Nó thuộc về các chiến lược giao dịch theo xu hướng và phản xu hướng. Các thành phần chính bao gồm các vùng cung và nhu cầu, EMA, các vùng HH, LL, LH, HL dài và ngắn, ATR trailing stop loss v.v.

Chiến lược logic

1. Xác định nguồn cung và cầu

Phân biệt mối quan hệ cung và cầu dựa trên phạm vi cao và thấp của Kline. Các khu vực màu đỏ cho thấy cung vượt quá các khu vực cung cầu. Các khu vực màu xanh lá cây cho thấy nhu cầu vượt quá các khu vực cung cầu.

2. Đánh giá xu hướng của EMA

Chụp EMA khoảng thời gian 200 và xác định xu hướng tăng và giảm bằng cách so sánh giá với EMA. Giá trên EMA được coi là xu hướng tăng, trong khi giá dưới EMA là xu hướng giảm.

3. Đánh dấu khu vực dài và ngắn

Xác định các vùng đảo ngược dựa trên hai điểm cao và thấp của nến gần đây:

  • Khu vực HH (Vùng cao hơn) - 2 ngọn nến cao nhất liên tiếp làm cho cao hơn cao hơn
  • LL Zone (Lower Low Zone) - 2 ngọn nến liên tiếp làm cho thấp hơn thấp hơn
  • LH Zone (Lower High Zone) - Chuyển đổi gần đây từ mức cao hơn sang mức thấp hơn
  • Khu vực HL (Vùng thấp hơn) - Chuyển đổi thấp hơn gần đây sang thấp hơn

4. ATR Trailing Stop Loss

Tính toán giá trị ATR 14 giai đoạn sẽ được nhân với nhân 2 để lấy mức dừng lỗ.

5. Entry và Stop Loss Exit

Theo dõi mối quan hệ giá với các điểm cao / thấp của nến trước. Tín hiệu dài được kích hoạt khi giá vượt qua mức cao trước. Tín hiệu ngắn được kích hoạt khi giá vượt qua mức thấp trước. Đợi xác nhận tín hiệu nhập cảnh cho đến nến thứ 3 để tránh các tín hiệu sai. Ra đi với stop loss khi giá kéo trở lại vượt quá mức stop loss theo dõi ATR.

Phân tích lợi thế

  1. Sử dụng nhiều chỉ số để xác định xu hướng và các khu vực đảo ngược chính để cải thiện tỷ lệ lợi nhuận.
  2. ATR stop loss có thể hạn chế hiệu quả rủi ro lỗ trên mỗi giao dịch.
  3. Sự xác nhận tín hiệu nhập cảnh chậm trễ làm giảm thiểu giao dịch sai.

Phân tích rủi ro

  1. Chỉ dựa vào các chỉ số kỹ thuật mà không xem xét thông tin cơ bản có thể dẫn đến thất bại giao dịch do thiếu dữ liệu chính.
  2. ATR dừng lỗ có thể bị vượt quá trong sự biến động lớn dẫn đến tổn thất.
  3. Các tín hiệu đảo ngược EMA thường xuyên trong các thị trường dao động có thể dẫn đến giao dịch quá mức.

Giải pháp rủi ro:

  1. Hoàn chỉnh với dữ liệu kinh tế và đánh giá chính sách.
  2. Cho phép đệm rộng hơn cho hệ số nhân ATR.
  3. Điều chỉnh tham số thời gian ATR để tránh độ nhạy trong phạm vi.

Cơ hội gia tăng

  1. Hoàn chỉnh với các chỉ số kỹ thuật như MACD, RSI vv để cải thiện thời gian.
  2. Kiểm tra lại các kết hợp tham số thời gian và nhân khác nhau để tối ưu hóa.
  3. Hãy xem xét thêm bộ lọc để tránh tín hiệu bị hỏng.
  4. Sử dụng máy học vv để tối ưu hóa các thông số một cách năng động.

Kết luận

Chiến lược này kết hợp phân tích nguồn cung / nhu cầu, xác định xu hướng, xác định đảo ngược và các mô-đun quản lý rủi ro hiệu quả để phát hiện các cơ hội đảo ngược thị trường ở các lĩnh vực chính. Đây là một hệ thống mạnh mẽ để theo dõi xu hướng và thiết lập xu hướng ngược. Kiểm tra liên tục, tối ưu hóa và đánh giá kinh nghiệm con người là rất quan trọng cho lợi nhuận ổn định dài hạn.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)


Thêm nữa