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.
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.
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.
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:
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ỗ.
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.
Giải pháp rủi ro:
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)