
روایتی ہلچل کی حکمت عملی کے ساتھ کیا مسئلہ ہے؟ بہت زیادہ سگنل ، متضاد معیار ، اور اکثر جعلی توڑ۔ یہ حکمت عملی براہ راست درد کی جگہ کو حل کرتی ہے۔ہر سگنل کو 1-5 پوائنٹس کا معیار دیا جاتا ہے ، صرف 4 پوائنٹس سے زیادہ اعلی معیار کے سگنل کی تجارت کی جاتی ہے。
بنیادی منطق سادہ اور کھردری ہے: ہائی لو (Higher Low) اور لوئر ہائی (Lower High) کی شناخت کریں اور پھر سگنل کو 4 جہتوں میں اسکور کریں۔کم از کم 4 منٹ میں ذخیرہ کرنے کے لئے، براہ راست 80٪ گندگی سگنل کو فلٹر کریں。
1 بنیادی سکوراس کی تصدیق: ٹرانزیکشن کی تصدیق + 1 پوائنٹ20 سے زیادہ ٹرانزیکشنز کی اوسط قیمت میں 1.2 گنا اضافہ ، جس سے ظاہر ہوتا ہے کہ فنڈ کی شناخت ہے RSI پوزیشن + 1 پوائنٹآر ایس آئی 30 سے 70 کے درمیان ہے، اوور بیو اور اوور سیل کے جھوٹے اشارے سے بچیں K لائن ہستی + 1 پوائنٹان کا کہنا تھا کہ ‘یہ 60 فیصد سے زیادہ ہے، لیکن یہ یقینی بنائیں کہ یہ ‘کراس اسٹار’ جیسی ہچکچاہٹ والی شکلیں نہیں ہیں’۔ ٹرینڈ لائن اپ + 1 پوائنٹقیمت: ایم اے 20، ایم اے 50، تینوں کی سمت ایک جیسی ہے
نتیجہ: 5 پوائنٹس مکمل سگنل کی سب سے زیادہ کامیابی ، 4 پوائنٹس سے زیادہ سگنل قابل تجارت ہے ، 3 پوائنٹس سے کم کو براہ راست نظرانداز کیا جاتا ہے۔。
اس کے نتیجے میں، آپ کو اس طرح کی ایک بہت بڑا نقصان ہو سکتا ہے:
10 کا سائیکل کیوں؟چونکہ اسکیلپنگ حکمت عملی کا بنیادی مقصد قلیل مدتی الٹ پھیر کو پکڑنا ہے ، لہذا 10 سائیکل قیمت کو کافی سانس لینے کی اجازت دیتا ہے اور نہ ہی اس کی روک تھام کی حد کو بہت زیادہ رکھتا ہے۔
حکمت عملی میں ‘ناکامی کے جھولوں’ کی بھی نشاندہی کی گئی ہے:
اس طرح کی ناکامیوں سے اکثر یہ ظاہر ہوتا ہے کہ رجحان میں تیزی آرہی ہے اور یہ ایک بہترین وقت ہے تجارت کو الٹ کرنے کا۔。
جب دو مسلسل K لائنیں ایک ہی سمت میں تصدیق کے اشارے ظاہر کرتی ہیں تو ، ہیرے کے نشان سے ظاہر کریں۔ اس کا مطلب عام طور پر یہ ہے کہ:
مسلسل سگنل کی جیت کی شرح عام طور پر انفرادی سگنل سے 15-20٪ زیادہ ہے。
بہترین کارکردگی ماحول:
منظر نامے سے بچیں:
واضح خطرات:
فنڈ مینجمنٹ کی تجاویز: ایک بار کا خطرہ اکاؤنٹ کا 2٪ سے زیادہ نہیں ہے ، مسلسل 3 نقصانات کے بعد تجارت کو روکنا اور مارکیٹ کی صورتحال کا دوبارہ جائزہ لینا۔
/*backtest
start: 2024-09-09 00:00:00
end: 2025-09-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=6
strategy("Higher Lows, Lower Highs & Failures with Signal Quality Scoring", overlay=true)
// --- Higher Low detection ---
shares = 1
minScore = 4 // Minimum score to take trades
lowPoint = ta.lowest(low, 3)
prevLowPoint = ta.lowest(low[3], 3)
isHigherLow = low == lowPoint and low > prevLowPoint
bullConfirm = isHigherLow and close > open
// --- Lower High detection ---
highPoint = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh = high == highPoint and high < prevHighPoint
bearConfirm = isLowerHigh and close < open
// --- Failures ---
failHigherLow = isHigherLow[1] and low < low[1]
failLowerHigh = isLowerHigh[1] and high > high[1]
// --- 2-in-a-row detection ---
bullSecond = bullConfirm and bullConfirm[1]
bearSecond = bearConfirm and bearConfirm[1]
// --- SIGNAL QUALITY SCORING (1-5 scale) ---
bullScore = if bullConfirm
score = 1 // Base score
// Factor 1: Volume confirmation
avgVolume = ta.sma(volume, 20)
if volume > avgVolume * 1.2
score := score + 1
// Factor 2: RSI positioning
rsi = ta.rsi(close, 14)
if rsi < 70 and rsi > 30
score := score + 1
// Factor 3: Candle strength
bodySize = math.abs(close - open)
candleRange = high - low
bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
if bodyRatio > 0.6
score := score + 1
// Factor 4: Trend alignment
ma20 = ta.sma(close, 20)
ma50 = ta.sma(close, 50)
if ma20 > ma50 and close > ma20
score := score + 1
math.max(1, math.min(5, score))
else
na
bearScore = if bearConfirm
score = 1 // Base score
// Factor 1: Volume confirmation
avgVolume = ta.sma(volume, 20)
if volume > avgVolume * 1.2
score := score + 1
// Factor 2: RSI positioning
rsi = ta.rsi(close, 14)
if rsi > 30 and rsi < 70
score := score + 1
// Factor 3: Candle strength
bodySize = math.abs(close - open)
candleRange = high - low
bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
if bodyRatio > 0.6
score := score + 1
// Factor 4: Trend alignment
ma20 = ta.sma(close, 20)
ma50 = ta.sma(close, 50)
if ma20 < ma50 and close < ma20
score := score + 1
math.max(1, math.min(5, score))
else
na
// --- Plot main signals with score-based styling ---
// Bullish signals
plotshape(bullConfirm and bullScore == 1, "Bull Score 1", shape.triangleup, location.belowbar, color.gray, size=size.tiny)
plotshape(bullConfirm and bullScore == 2, "Bull Score 2", shape.triangleup, location.belowbar, color.orange, size=size.small)
plotshape(bullConfirm and bullScore == 3, "Bull Score 3", shape.triangleup, location.belowbar, color.yellow, size=size.normal)
plotshape(bullConfirm and bullScore == 4, "Bull Score 4", shape.triangleup, location.belowbar, color.lime, size=size.normal)
plotshape(bullConfirm and bullScore == 5, "Bull Score 5", shape.triangleup, location.belowbar, color.green, size=size.large)
// Bearish signals
plotshape(bearConfirm and bearScore == 1, "Bear Score 1", shape.triangledown, location.abovebar, color.gray, size=size.tiny)
plotshape(bearConfirm and bearScore == 2, "Bear Score 2", shape.triangledown, location.abovebar, color.orange, size=size.small)
plotshape(bearConfirm and bearScore == 3, "Bear Score 3", shape.triangledown, location.abovebar, color.yellow, size=size.normal)
plotshape(bearConfirm and bearScore == 4, "Bear Score 4", shape.triangledown, location.abovebar, color.lime, size=size.normal)
plotshape(bearConfirm and bearScore == 5, "Bear Score 5", shape.triangledown, location.abovebar, color.green, size=size.large)
// --- Plot failures ---
plotshape(failHigherLow, "Failed Higher Low", shape.arrowdown, location.abovebar, color.red, size=size.small)
plotshape(failLowerHigh, "Failed Lower High", shape.arrowup, location.belowbar, color.green, size=size.small)
// --- Plot consecutive signals ---
plotshape(bullSecond, "Double Bullish Star", shape.diamond, location.bottom, color.lime, size=size.tiny)
plotshape(bearSecond, "Double Bearish Star", shape.diamond, location.top, color.red, size=size.tiny)
// --- Display score labels ---
if bullConfirm
labelColor = bullScore == 1 ? color.gray : bullScore == 2 ? color.orange : bullScore == 3 ? color.yellow : bullScore == 4 ? color.lime : color.green
label.new(bar_index, low - (high - low) * 0.1, "↑ " + str.tostring(bullScore), style=label.style_label_up, color=labelColor, textcolor=color.white, size=size.small)
if bearConfirm
labelColor = bearScore == 1 ? color.gray : bearScore == 2 ? color.orange : bearScore == 3 ? color.yellow : bearScore == 4 ? color.lime : color.green
label.new(bar_index, high + (high - low) * 0.1, "↓ " + str.tostring(bearScore), style=label.style_label_down, color=labelColor, textcolor=color.white, size=size.small)
// --- Alerts for high-quality signals only ---
alertcondition(bullConfirm and bullScore >= 4, "High Quality Bullish", "Strong Bullish Signal Detected")
alertcondition(bearConfirm and bearScore >= 4, "High Quality Bearish", "Strong Bearish Signal Detected")
// --- STRATEGY LOGIC ---
// Track previous highs and lows for stop levels
var float prevHigh = na
var float prevLow = na
// Update previous high/low when we get signals
if bullConfirm and bullScore >= minScore
prevLow := ta.lowest(low, 10) // Previous 10-bar low for stop
if bearConfirm and bearScore >= minScore
prevHigh := ta.highest(high, 10) // Previous 10-bar high for stop
// Entry conditions (only scores 4 or higher)
longCondition = bullConfirm and bullScore >= minScore
shortCondition = bearConfirm and bearScore >= minScore
// Execute trades
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long, qty=shares)
strategy.exit("Long Exit", "Long", stop=prevLow)
if shortCondition and strategy.position_size == 0
strategy.entry("Short", strategy.short, qty=shares)
strategy.exit("Short Exit", "Short", stop=prevHigh)
// Close opposite position if new signal occurs
if longCondition and strategy.position_size < 0
strategy.close("Short")
strategy.entry("Long", strategy.long, qty=shares)
strategy.exit("Long Exit", "Long", stop=prevLow)
if shortCondition and strategy.position_size > 0
strategy.close("Long")
strategy.entry("Short", strategy.short, qty=shares)
strategy.exit("Short Exit", "Short", stop=prevHigh)
// Plot stop levels for visualization
plot(strategy.position_size > 0 ? prevLow : na, "Long Stop", color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? prevHigh : na, "Short Stop", color.red, linewidth=2, style=plot.style_linebr)