کثیر جہتی K-قریب ترین پڑوسی الگورتھم اور کینڈل سٹک پیٹرن والیوم کی قیمت کا تجزیہ تجارتی حکمت عملی

SMA KNN RSI VOL MA SD
تخلیق کی تاریخ: 2025-01-17 16:10:07 آخر میں ترمیم کریں: 2025-01-17 16:10:07
کاپی: 0 کلکس کی تعداد: 436
1
پر توجہ دیں
1617
پیروکار

کثیر جہتی K-قریب ترین پڑوسی الگورتھم اور کینڈل سٹک پیٹرن والیوم کی قیمت کا تجزیہ تجارتی حکمت عملی

جائزہ

حکمت عملی ایک جامع تجارتی نظام ہے جو K-nearest پڑوسی (KNN) مشین لرننگ الگورتھم، کینڈل سٹک پیٹرن کی شناخت، اور حجم کے تجزیہ کو یکجا کرتا ہے۔ یہ حکمت عملی کثیر جہتی تجزیہ کے طریقوں کے ذریعے مارکیٹ کے لیے تین جہتی تجزیہ کا فریم ورک تشکیل دیتی ہے، جس میں موونگ ایوریج چینلز، حجم کی حد کی تصدیق اور امکانی اعدادوشمار شامل ہیں، اس طرح ممکنہ تجارتی مواقع کو حاصل کرنا۔

حکمت عملی کا اصول

حکمت عملی کی بنیادی منطق درج ذیل کلیدی عناصر پر مبنی ہے:

  1. زیادہ خریدی ہوئی اور زیادہ فروخت شدہ علاقوں کی نشاندہی کرنے کے لیے پرائس چینلز بنانے کے لیے موونگ ایوریج (SMA) اور معیاری انحراف کا استعمال کریں۔
  2. پروگرام کے لحاظ سے بیان کردہ حالات کے ذریعے نو کلاسک کینڈل سٹک پیٹرن کی شناخت کریں، بشمول ہتھوڑا، شوٹنگ اسٹار، اینگلفنگ وغیرہ۔
  3. قیمتوں کے تاریخی رجحانات جاننے کے لیے KNN الگورتھم متعارف کروائیں اور مستقبل میں قیمت کے ممکنہ رجحانات کی پیشن گوئی کریں
  4. تجارتی حجم کو سگنل کی تصدیق کے اشارے کے طور پر استعمال کرنے کے لیے ضروری ہے کہ سگنل کے متحرک ہونے پر تجارتی حجم مقررہ حد سے زیادہ ہونا چاہیے۔
  5. عروج و زوال کے امکانات کی تقسیم کا حساب لگائیں اور اسے سگنل فلٹرنگ کی شرائط میں سے ایک کے طور پر استعمال کریں۔

اسٹریٹجک فوائد

  1. ملٹی لیول سگنل کی تصدیق کا طریقہ کار لین دین کی وشوسنییتا کو نمایاں طور پر بہتر بناتا ہے۔
  2. KNN الگورتھم کا تعارف روایتی تکنیکی تجزیہ کے لیے مشین لرننگ کا نقطہ نظر فراہم کرتا ہے۔
  3. حجم کی تصدیق کا طریقہ کار مؤثر طریقے سے غلط کامیابیوں سے بچتا ہے۔
  4. سپورٹ اور ریزسٹنس لائنوں کی ڈائنامک ڈرائنگ قیمت کی اہم سطحوں کی شناخت میں مدد کرتی ہے۔
  5. ایک جامع الرٹ سسٹم اس بات کو یقینی بناتا ہے کہ آپ اہم تجارتی مواقع سے محروم نہیں ہوں گے۔
  6. حکمت عملی کے پیرامیٹرز انتہائی ایڈجسٹ ہوتے ہیں اور مارکیٹ کے مختلف ماحول کے مطابق ڈھال سکتے ہیں۔

اسٹریٹجک رسک

  1. غیر مستحکم مارکیٹوں میں KNN الگورتھم پیچھے رہ سکتا ہے۔
  2. بہت زیادہ سگنل فلٹرنگ حالات کچھ تجارتی مواقع کو کھونے کا باعث بن سکتے ہیں۔
  3. مقررہ حجم کی حد کو مختلف ادوار میں متحرک طور پر ایڈجسٹ کرنے کی ضرورت پڑ سکتی ہے۔
  4. سائیڈ وے مراحل کے دوران بہت زیادہ غلط سگنلز پیدا ہو سکتے ہیں۔ تجویز کردہ:
  • متحرک طور پر الگورتھم پیرامیٹرز کو ایڈجسٹ کریں۔
  • مارکیٹ کے ماحول کی شناخت کا طریقہ کار متعارف کرانا
  • زیادہ سے زیادہ نقصان کی حد مقرر کریں۔
  • گودام کے انتظام کا نظام قائم کریں۔

حکمت عملی کی اصلاح کی سمت

  1. مارکیٹ کے حالات کے مطابق پیرامیٹرز کو خود بخود ایڈجسٹ کرنے کی حکمت عملی کو فعال کرنے کے لیے ایک انکولی پیرامیٹر ایڈجسٹمنٹ میکانزم کا تعارف
  2. پیشن گوئی کی درستگی کو بہتر بنانے کے لیے گہری سیکھنے کے الگورتھم کو مربوط کریں۔
  3. مزید مارکیٹ مائکرو اسٹرکچر اشارے شامل کرنا
  4. تجارتی حجم کی حد کے متحرک حساب کے طریقہ کار کو بہتر بنانا
  5. زیادہ مکمل رسک کنٹرول سسٹم قائم کریں۔

خلاصہ کریں۔

یہ حکمت عملی روایتی تکنیکی تجزیہ کو جدید مشین سیکھنے کے طریقوں کے ساتھ ملا کر ایک مضبوط تجارتی نظام تیار کرتی ہے۔ حکمت عملی کا کثیر جہتی تجزیہ فریم ورک اور سخت سگنل کی تصدیق کا طریقہ کار تجارتی فیصلوں کے لیے ایک قابل اعتماد بنیاد فراہم کرتا ہے۔ مسلسل اصلاح اور رسک کنٹرول کے ذریعے، حکمت عملی سے مارکیٹ کے مختلف ماحول میں مستحکم کارکردگی کو برقرار رکھنے کی توقع ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Candle Pattern Analyzer with Volume", overlay=true)

// Input parameters
length = input.int(20, "Channel Length", minval=1)
mult = input.float(2.0, "Volatility Multiplier", minval=0.1)
candleLength = input.int(5, "Candle Length", minval=1)
k = input.int(5, "KNN Neighbors", minval=1)
volumeThreshold = input.int(100000, "Volume Threshold", minval=1)

// Calculate channel
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// Plot channel
plot(basis, color=color.blue)
plot(upper, color=color.green)
plot(lower, color=color.red)

// Identify candle patterns
isBullish = close > open
isBearish = close < open

// Pre-calculate SMAs
smaLow = ta.sma(low, candleLength)
smaHigh = ta.sma(high, candleLength)
smaClose = ta.sma(close, candleLength)

// Hammer pattern
isHammer = isBullish and 
           low < smaLow and 
           close > smaClose and 
           (close - low) / (high - low) > 0.6 and
           low < low[1]

// Shooting Star pattern
isShootingStar = isBearish and 
                 high > smaHigh and 
                 close < smaClose and 
                 (high - close) / (high - low) > 0.6 and
                 high > high[1]

// Inverse Hammer pattern
isInverseHammer = isBullish and 
                   high > smaHigh and 
                   close < smaClose and 
                   (high - close) / (high - low) > 0.6 and
                   high > high[1]

// Bullish Engulfing pattern
isBullishEngulfing = isBullish and 
                      close > high[1] and 
                      open < low[1]

// Bearish Engulfing pattern
isBearishEngulfing = isBearish and 
                      close < low[1] and 
                      open > high[1]

// Morning Star pattern
isMorningStar = isBullish and close[2] < open[2] and close[1] < open[1] and  close > open[1]

// Evening Star pattern
isEveningStar = isBearish and  close[2] > open[2] and  close[1] > open[1] and  close < open[1]

// Three Black Crows pattern
isThreeBlackCrows = isBearish and 
                     close < close[1] and 
                     close[1] < close[2] and 
                     close[2] < close[3]

// Three White Soldiers pattern
isThreeWhiteSoldiers = isBullish and close > close[1] and  close[1] > close[2] and  close[2] > close[3]

// Compare previous candles
prevCandleUp = close[1] > open[1]
prevCandleDown = close[1] < open[1]

// Calculate probability
probUp = ta.sma(close > open ? 1 : 0, candleLength) / candleLength
probDown = ta.sma(close < open ? 1 : 0, candleLength) / candleLength

// Generate signals
buySignal = isHammer and prevCandleDown and probUp > probDown and volume > volumeThreshold
sellSignal = isShootingStar and prevCandleUp and probDown > probUp and volume > volumeThreshold

// Highlight patterns
color candleColor = na
if (isHammer)
    candleColor := color.green
    label.new(bar_index, high, "Hammer", color=color.green, style=label.style_label_up)

else if (isShootingStar)
    candleColor := color.red
    label.new(bar_index, low, "Shooting Star", color=color.red, style=label.style_label_down)
else if (isInverseHammer)
    candleColor := color.blue
    label.new(bar_index, high, "Inverse Hammer", color=color.blue, style=label.style_label_up)
else if (isBullishEngulfing)
    candleColor := color.yellow
    label.new(bar_index, high, "Bullish Engulfing", color=color.yellow, style=label.style_label_up)
else if (isBearishEngulfing)
    candleColor := color.purple
    label.new(bar_index, low, "Bearish Engulfing", color=color.purple, style=label.style_label_down)

else if (isMorningStar)
    candleColor := color.orange
    label.new(bar_index, high, "Morning Star", color=color.orange, style=label.style_label_up)

else if (isEveningStar)
    candleColor := color.new(color.red, 80)
    label.new(bar_index, low, "Evening Star", color=color.new(color.red, 80), style=label.style_label_down)

else if (isThreeBlackCrows)
    candleColor := color.black
    label.new(bar_index, low, "Three Black Crows", color=color.black, style=label.style_label_down)

else if (isThreeWhiteSoldiers)
    candleColor := color.white
    label.new(bar_index, high, "Three White Soldiers", color=color.white, style=label.style_label_up)


// Plot candles
barcolor(candleColor)

// KNN algorithm
var float[] knnData = array.new_float(k, na)
var float[] knnLabels = array.new_float(k, na) // Create an array to store KNN labels
array.set(knnLabels, 0, 1.0) // Label for "up" movement

// Shift KNN dataset to make room for new data point
for i = 1 to k-1
    array.set(knnData, i, array.get(knnData, i-1))
    array.set(knnLabels, i, array.get(knnLabels, i-1))

// Predict next movement using KNN algorithm
float prediction = 0.0
for i = 0 to k-1
    float distance = math.abs(close - array.get(knnData, i))
    prediction += array.get(knnLabels, i) / distance

prediction /= k

// Plot prediction
// line.new(bar_index, close, bar_index + 1, prediction, color=color.purple)

// Plot resistance and support lines
float resistance = ta.sma(high, length)
float support = ta.sma(low, length)
// line.new(bar_index, resistance, bar_index + 1, resistance, color=color.green, style=line.style_dashed)
// line.new(bar_index, support, bar_index + 1, support, color=color.red, style=line.style_dashed)

// Plot buy and sell signals with prices
if (buySignal)
    // label.new(bar_index, low, "Buy at " + str.tostring(low), color=color.green, style=label.style_label_up)
    strategy.entry("Buy", strategy.long, comment="Buy at " + str.tostring(low))
if (sellSignal)
    // label.new(bar_index, high, "Sell at " + str.tostring(high), color=color.red, style=label.style_label_down)
    strategy.entry("Sell", strategy.short, comment="Sell at " + str.tostring(high))

// Create alerts
alertcondition(buySignal, title="Buy Signal", message="Buy signal generated!")
alertcondition(sellSignal, title="Sell Signal", message="Sell signal generated!")