
Chiến lược này là một hệ thống giao dịch dựa trên cung cấp và nhu cầu và đường trung tâm đảo ngược, hoạt động trên khung thời gian 5 phút. Nó giao dịch bằng cách nhận ra tín hiệu đảo ngược khi xu hướng quay trở lại vị trí đường trung tâm và đặt điểm dừng ở khu vực cung cấp và nhu cầu được xác định trước. Chiến lược kết hợp với đường trung bình di chuyển (SMA) để xác định hướng xu hướng, sử dụng điểm trung tâm của khu vực cung cấp và nhu cầu như một mức giá quan trọng.
Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:
Chiến lược đảo ngược đường trung tâm của cung và nhu cầu động là một hệ thống giao dịch kết hợp nhiều chiều phân tích kỹ thuật để nắm bắt cơ hội thị trường bằng cách kết hợp cung và nhu cầu, xu hướng và hình dạng giá. Ưu điểm cốt lõi của chiến lược này là khung logic rõ ràng và hệ thống quản lý rủi ro hoàn thiện, nhưng đồng thời cũng đòi hỏi các nhà giao dịch phải theo dõi chặt chẽ sự thay đổi của môi trường thị trường và điều chỉnh các tham số đặt ra kịp thời.
/*backtest
start: 2025-02-16 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bommytarton
//@version=6
strategy("Midline Rejection Entry with TP/SL at Supply/Demand", overlay=true)
// User inputs for Swing Length and Length for Supply/Demand Zones
length = input.int(50, title="Swing Length", minval=1)
midlineLength = input.int(20, title="Midline Length for Trend", minval=1) // Moving average length for trend
// Identify swing highs (Supply Zone) and swing lows (Demand Zone)
supplyZone = ta.highest(high, length) // Supply Zone (resistance)
demandZone = ta.lowest(low, length) // Demand Zone (support)
// Calculate the midpoint between supply and demand zones
midpoint = (supplyZone + demandZone) / 2
// Trend Detection: Use a simple moving average (SMA) for trend direction
smaTrend = ta.sma(close, midlineLength)
// Variables to store Supply/Demand Zones at the time of entry
var float entrySupplyZone = na
var float entryDemandZone = na
var float entryMidpoint = na
// Entry Conditions
// 1. Price in an uptrend (close above SMA)
longCondition = close > smaTrend and close < midpoint and close > open and open < close[1] and close[1] < open[1]
// 1. Price in a downtrend (close below SMA)
shortCondition = close < smaTrend and close > midpoint and close < open and open > close[1] and close[1] > open[1]
// Close any open trades before opening a new one
if (longCondition or shortCondition)
strategy.close_all()
// Execute the entry logic
if (longCondition)
entrySupplyZone := supplyZone // Store Supply Zone for Take Profit
entryDemandZone := demandZone // Store Demand Zone for Stop Loss
entryMidpoint := midpoint // Store Midpoint
strategy.entry("Long", strategy.long)
label.new(bar_index, low, "Open Long", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
if (shortCondition)
entrySupplyZone := supplyZone // Store Supply Zone for Stop Loss
entryDemandZone := demandZone // Store Demand Zone for Take Profit
entryMidpoint := midpoint // Store Midpoint
strategy.entry("Short", strategy.short)
label.new(bar_index, high, "Open Short", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)
// Define Take Profit and Stop Loss Levels for Long/Short Trades
if (strategy.opentrades > 0)
// For Long trades, use Supply Zone for Take Profit and Demand Zone for Stop Loss
if (strategy.position_size > 0)
strategy.exit("Take Profit", "Long", limit=entrySupplyZone) // Take Profit at Supply Zone
strategy.exit("Stop Loss", "Long", stop=entryDemandZone) // Stop Loss at Demand Zone
// For Short trades, use Demand Zone for Take Profit and Supply Zone for Stop Loss
if (strategy.position_size < 0)
strategy.exit("Take Profit", "Short", limit=entryDemandZone) // Take Profit at Demand Zone
strategy.exit("Stop Loss", "Short", stop=entrySupplyZone) // Stop Loss at Supply Zone
// Re-Plot Supply, Midpoint, and Demand Zones after Trade Closure
plot(supplyZone, title="Supply Zone", color=color.red, linewidth=2, style=plot.style_line)
plot(demandZone, title="Demand Zone", color=color.green, linewidth=2, style=plot.style_line)
plot(midpoint, title="Midpoint", color=color.blue, linewidth=1, style=plot.style_line)