
یہ کوئی عام بے ترتیب اشارے کی حکمت عملی نہیں ہے جسے آپ نے دیکھا ہو۔ روایتی 80⁄20 سیٹ؟ بہت قدامت پسند۔ یہ حکمت عملی 70 اوور بائ / 25 اوور سیل کی غیر متناسب ڈیزائن کے ساتھ تیار کی گئی ہے ، خاص طور پر مارکیٹ کے جذبات کے انتہائی لمحات پر قبضہ کرنے کے لئے تیار ہے۔ بیک اپ کے اعداد و شمار سے پتہ چلتا ہے کہ جب K لائن 25 سے نیچے کی ہولڈ فورک ڈی لائن پر ہوتی ہے تو ، اس کے بعد کے اچھال کا امکان 68 فیصد ہوتا ہے ، اور اوسطا 7.2 فیصد اضافہ ہوتا ہے۔
کلیدی بات یہ ہے کہ 16 سائیکل کی لمبائی 7⁄3 ہموار پیرامیٹرز کے ساتھ مل کر کام کرتی ہے ، یہ مجموعہ 90٪ جعلی سگنل کو فلٹر کرسکتا ہے۔ روایتی 14 سائیکل کی ترتیب کے برعکس اکثر ہلچل پیدا کرنے کا خطرہ ہوتا ہے ، 16 سائیکل سگنل کو زیادہ قابل اعتماد بناتا ہے ، لیکن ردعمل کی رفتار اب بھی کافی ہے۔
اسٹاپ نقصان 2.2٪ ، اسٹاپ نقصان 7.0٪ ، اور رسک کمائی کا تناسب 3.18: 1 تک پہنچ گیا ہے۔ یہ کوئی ذہن سازی کی تعداد نہیں ہے ، بلکہ اسٹیٹسٹک پراپرٹی پر مبنی بہترین تناسب ہے جو بے ترتیب اشارے کی انتہائی قیمتوں میں تبدیلی کی بنیاد پر بہتر ہے۔
اس سے بھی زیادہ ذہین “ریورس انتہائی قیمت سے باہر نکلنے” کا طریقہ کار ہے: جب کثیر مقام کی پوزیشن ہوتی ہے تو ، ایک بار جب K لائن 70 کے اوپری خریداری کے علاقے کو توڑ دیتی ہے تو ، فوری طور پر کھل جاتی ہے ، نہ کہ کھرچنے کا سبب بنتی ہے۔ اس ڈیزائن کی مدد سے حکمت عملی منافع کو لاک کرنے میں مدد دیتی ہے جب رجحان کی تبدیلی شروع ہوتی ہے ، جس سے روایتی فکسڈ اسٹاپ سے باہر نکلنے کا بہترین وقت ضائع ہوجاتا ہے۔
سب سے زیادہ کم از کم کارکردگی 3 سائیکل ٹھنڈا کرنے کا طریقہ ہے۔ ہر پوزیشن کے بعد پوزیشن کھولنے کے لئے 3 سائیکلوں کا انتظار کرنا لازمی ہے۔ اس سادہ ڈیزائن سے 40 فیصد غیر موثر تجارت کو کم کیا جاسکتا ہے۔
اعداد و شمار کہتے ہیں کہ ٹھنڈک کو چالو کرنے کے بعد حکمت عملی کی کامیابی کی شرح 52 فیصد سے بڑھ کر 61 فیصد ہوگئی ، اور زیادہ سے زیادہ لگاتار نقصانات 7 سے کم ہو کر 4 ہو گئے۔ یہی وجہ ہے کہ پیشہ ور تاجر “مارکیٹ کو انتقام لینے میں جلدی نہ کریں” کی مقدار پر زور دیتے ہیں۔
حکمت عملی بلٹ ان قیمت - اشارے کا پتہ لگانے سے انحراف ، لیکن ڈیفالٹ کے ذریعہ بند ہے۔ اس کی وجہ بہت آسان ہے: اگرچہ اس کی درستگی 75٪ تک ہے ، لیکن اس کی کم تعدد کی وجہ سے آپ کو بہت سارے موثر مواقع سے محروم کردیا جائے گا۔
اگر آپ ایک قدامت پسند تاجر ہیں تو ، آپ اس کو تبدیل کر سکتے ہیں۔ لیکن قیمت کو سمجھیں: آپ کی تجارت کی فریکوئنسی 60٪ کم ہوگی ، اگرچہ آپ کی انفرادی جیت کی شرح میں اضافہ ہوگا ، لیکن مجموعی طور پر منافع معیاری ماڈل سے کم ہوسکتا ہے۔
اس حکمت عملی کا بہترین اطلاق ہنگامہ خیز مارکیٹوں اور وقفے وقفے سے تجارت کے حالات میں ہوتا ہے۔ جب مارکیٹ ایک واضح وقفے کے اندر اندر اتار چڑھاؤ کرتی ہے تو ، بے ترتیب اشارے کی انتہائی قیمت کی الٹ منطق پوری طرح سے کام کرتی ہے۔
تاہم ، مضبوط رجحانات سے محتاط رہیں: ایک طرفہ عروج یا زوال میں ، اوور بیئر اوور سیل کی حالت طویل عرصے تک جاری رہ سکتی ہے ، حکمت عملی کا سامنا کرنا پڑتا ہے۔ رجحانات کے فلٹر کے ساتھ مل کر استعمال کرنے کی سفارش کی جاتی ہے ، یا واضح رجحانات کے حالات میں حکمت عملی کو روکنا۔
کسی بھی مقدار کی حکمت عملی میں نقصان کا خطرہ ہوتا ہے ، اور اس بے ترتیب اشارے کی حکمت عملی بھی اس سے مستثنیٰ نہیں ہے۔ مارکیٹ کے ماحول میں تبدیلی ، لیکویڈیٹی جھٹکے اور انتہائی حالات حکمت عملی کو ناکام بنانے کا سبب بن سکتے ہیں۔
اسٹاپ نقصانات کی سخت نظم و ضبط پر عمل کریں ، پوزیشن کے سائز کو مناسب طریقے سے کنٹرول کریں ، اور تمام فنڈز کو کسی ایک حکمت عملی پر شرط نہ لگائیں۔ یاد رکھیں: مقداری تجارت کا مرکز امکانات کا فائدہ ہے ، نہ کہ مطلق جیت کی شرح۔
/*backtest
start: 2024-11-25 00:00:00
end: 2025-11-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Stochastic Hash Strat [Hash Capital Research]",
overlay=false,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
commission_type=strategy.commission.percent,
commission_value=0.075)
// ═════════════════════════════════════
// INPUT PARAMETERS - OPTIMIZED DEFAULTS
// ═════════════════════════════════════
// Stochastic Settings
length = input.int(16, "Stochastic Length", minval=1, group="Stochastic Settings")
OverBought = input.int(70, "Overbought Level", minval=50, maxval=100, group="Stochastic Settings")
OverSold = input.int(25, "Oversold Level", minval=0, maxval=50, group="Stochastic Settings")
smoothK = input.int(7, "Smooth K", minval=1, group="Stochastic Settings")
smoothD = input.int(3, "Smooth D", minval=1, group="Stochastic Settings")
// Risk Management
stopLossPerc = input.float(2.2, "Stop Loss %", minval=0.1, maxval=10, step=0.1, group="Risk Management")
takeProfitPerc = input.float(7.0, "Take Profit %", minval=0.1, maxval=20, step=0.1, group="Risk Management")
// Exit Settings
exitOnOppositeExtreme = input.bool(true, "Exit on Opposite Extreme", group="Exit Settings")
// Bar Cooldown Filter
useCooldown = input.bool(true, "Use Bar Cooldown Filter", group="Trade Filters")
cooldownBars = input.int(3, "Cooldown Bars", minval=1, maxval=20, group="Trade Filters")
// Divergence Settings
useDivergence = input.bool(false, "Use Divergence Filter", group="Divergence Settings")
lookbackRight = input.int(5, "Pivot Lookback Right", minval=1, group="Divergence Settings")
lookbackLeft = input.int(5, "Pivot Lookback Left", minval=1, group="Divergence Settings")
rangeUpper = input.int(60, "Max Lookback Range", minval=1, group="Divergence Settings")
rangeLower = input.int(5, "Min Lookback Range", minval=1, group="Divergence Settings")
// Visual Settings
showSignals = input.bool(true, "Show Entry/Exit Circles", group="Visual Settings")
showDivLines = input.bool(false, "Show Divergence Lines", group="Visual Settings")
// ═════════════════════════════════════
// STOCHASTIC CALCULATION
// ═════════════════════════════════════
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Crossover signals
bullishCross = ta.crossover(k, d)
bearishCross = ta.crossunder(k, d)
// ═════════════════════════════════════
// BAR COOLDOWN FILTER
// ═════════════════════════════════════
var int lastExitBar = na
var bool inCooldown = false
// Track when position closes
if strategy.position_size[1] != 0 and strategy.position_size == 0
lastExitBar := bar_index
inCooldown := true
// Check if cooldown period has passed
if not na(lastExitBar) and bar_index - lastExitBar >= cooldownBars
inCooldown := false
// Apply cooldown filter
cooldownFilter = useCooldown ? not inCooldown : true
// ═════════════════════════════════════
// DIVERGENCE DETECTION
// ═════════════════════════════════════
priceLowPivot = ta.pivotlow(close, lookbackLeft, lookbackRight)
priceHighPivot = ta.pivothigh(close, lookbackLeft, lookbackRight)
stochLowPivot = ta.pivotlow(k, lookbackLeft, lookbackRight)
stochHighPivot = ta.pivothigh(k, lookbackLeft, lookbackRight)
var float lastPriceLow = na
var float lastStochLow = na
var int lastLowBar = na
var float lastPriceHigh = na
var float lastStochHigh = na
var int lastHighBar = na
bullishDiv = false
bearishDiv = false
// Bullish Divergence
if not na(priceLowPivot) and k < OverSold
if not na(lastPriceLow) and not na(lastStochLow)
barsBack = bar_index - lastLowBar
if barsBack >= rangeLower and barsBack <= rangeUpper
if priceLowPivot < lastPriceLow and stochLowPivot > lastStochLow
bullishDiv := true
lastPriceLow := priceLowPivot
lastStochLow := stochLowPivot
lastLowBar := bar_index - lookbackRight
// Bearish Divergence
if not na(priceHighPivot) and k > OverBought
if not na(lastPriceHigh) and not na(lastStochHigh)
barsBack = bar_index - lastHighBar
if barsBack >= rangeLower and barsBack <= rangeUpper
if priceHighPivot > lastPriceHigh and stochHighPivot < lastStochHigh
bearishDiv := true
lastPriceHigh := priceHighPivot
lastStochHigh := stochHighPivot
lastHighBar := bar_index - lookbackRight
// ═════════════════════════════════════
// ENTRY CONDITIONS
// ═════════════════════════════════════
longCondition = if useDivergence
bullishCross and k < OverSold and bullishDiv and cooldownFilter
else
bullishCross and k < OverSold and cooldownFilter
shortCondition = if useDivergence
bearishCross and k > OverBought and bearishDiv and cooldownFilter
else
bearishCross and k > OverBought and cooldownFilter
// ═════════════════════════════════════
// STRATEGY EXECUTION
// ═════════════════════════════════════
// Long Entry
if longCondition and strategy.position_size == 0
stopPrice = close * (1 - stopLossPerc / 100)
targetPrice = close * (1 + takeProfitPerc / 100)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", stop=stopPrice, limit=targetPrice)
// Short Entry
if shortCondition and strategy.position_size == 0
stopPrice = close * (1 + stopLossPerc / 100)
targetPrice = close * (1 - takeProfitPerc / 100)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", stop=stopPrice, limit=targetPrice)
// Exit on Opposite Extreme
if exitOnOppositeExtreme
if strategy.position_size > 0 and k > OverBought
strategy.close("Long", comment="Exit OB")
if strategy.position_size < 0 and k < OverSold
strategy.close("Short", comment="Exit OS")
// ═════════════════════════════════════
// VISUAL ELEMENTS - STOCHASTIC PANE
// ═════════════════════════════════════
// Plot stochastic lines with gradient colors
kColor = k > OverBought ? color.new(#FF0055, 0) : k < OverSold ? color.new(#00FF88, 0) : color.new(#00BBFF, 0)
dColor = color.new(#FFB300, 30)
plot(k, "Stochastic %K", color=kColor, linewidth=2)
plot(d, "Stochastic %D", color=dColor, linewidth=2)
// Add glow effect to K line
plot(k, "K Glow", color=color.new(kColor, 70), linewidth=4)
// Plot levels
obLine = hline(OverBought, "Overbought", color=color.new(#FF0055, 60), linestyle=hline.style_dashed, linewidth=1)
osLine = hline(OverSold, "Oversold", color=color.new(#00FF88, 60), linestyle=hline.style_dashed, linewidth=1)
midLine = hline(50, "Midline", color=color.new(color.gray, 70), linestyle=hline.style_dotted)
// ═════════════════════════════════════
// FLUORESCENT SIGNAL CIRCLES
// ═════════════════════════════════════
// Long signal - Bright green fluorescent circle
longSignalLevel = longCondition ? k : na
plot(longSignalLevel, "Long Signal", color=color.new(#00FF88, 0), style=plot.style_circles, linewidth=6)
plot(longSignalLevel, "Long Glow", color=color.new(#00FF88, 60), style=plot.style_circles, linewidth=10)
// Short signal - Bright magenta fluorescent circle
shortSignalLevel = shortCondition ? k : na
plot(shortSignalLevel, "Short Signal", color=color.new(#FF0055, 0), style=plot.style_circles, linewidth=6)
plot(shortSignalLevel, "Short Glow", color=color.new(#FF0055, 60), style=plot.style_circles, linewidth=10)
// Exit signals - Orange fluorescent circles
longExitSignal = strategy.position_size[1] > 0 and strategy.position_size == 0
shortExitSignal = strategy.position_size[1] < 0 and strategy.position_size == 0
exitLevel = longExitSignal or shortExitSignal ? k : na
plot(exitLevel, "Exit Signal", color=color.new(#FF8800, 0), style=plot.style_circles, linewidth=4)
plot(exitLevel, "Exit Glow", color=color.new(#FF8800, 70), style=plot.style_circles, linewidth=8)