یہ حکمت عملی ایک جامع تجارتی نظام ہے جس میں K-Nearest Neighbors (KNN) مشین لرننگ الگورتھم ، موم بتی کے نمونوں کی شناخت ، اور حجم تجزیہ کو یکجا کیا گیا ہے۔ متحرک اوسط چینلز ، حجم کی حد کی توثیق ، اور امکان کے اعدادوشمار سمیت کثیر جہتی تجزیہ کے طریقوں کے ذریعے ، حکمت عملی ممکنہ تجارتی مواقع کو حاصل کرنے کے لئے تین جہتی تجزیہ کا فریم ورک تشکیل دیتی ہے۔
حکمت عملی کا بنیادی منطق کئی اہم عناصر پر بنایا گیا ہے: 1. زیادہ خریدنے اور زیادہ فروخت کرنے والے علاقوں کی نشاندہی کے لئے قیمت چینلز کی تعمیر کے لئے سادہ چلتی اوسط (ایس ایم اے) اور معیاری انحراف کا استعمال 2۔ پروگرام کے ذریعے متعین حالات کے ذریعے نو کلاسیکی موم بتی کے نمونوں کی نشاندہی کرنا، بشمول ہیمر، شوٹنگ اسٹار، نگلنگ پیٹرن وغیرہ۔ تاریخی قیمتوں کی نقل و حرکت سے سیکھنے اور مستقبل کی قیمتوں کی سمت کی پیش گوئی کے لئے KNN الگورتھم کو شامل کرنا سگنل کی تصدیق کے اشارے کے طور پر حجم کا استعمال کرتے ہوئے، سگنل ٹرگر ہونے پر حجم مقررہ حد سے زیادہ ہونا ضروری ہے سگنل فلٹرنگ کے حالات میں سے ایک کے طور پر اوپر اور نیچے کی نقل و حرکت کے لئے امکان تقسیم کا حساب
یہ حکمت عملی روایتی تکنیکی تجزیہ کو جدید مشین لرننگ طریقوں کے ساتھ جوڑ کر ایک مضبوط تجارتی نظام تیار کرتی ہے۔ حکمت عملی کے کثیر جہتی تجزیہ کے فریم ورک اور سخت سگنل کی تصدیق کے طریقہ کار سے تجارتی فیصلوں کی قابل اعتماد بنیاد فراہم ہوتی ہے۔ مسلسل اصلاح اور رسک کنٹرول کے ذریعے ، حکمت عملی سے توقع کی جاتی ہے کہ وہ مارکیٹ کے مختلف حالات میں مستحکم کارکردگی برقرار رکھے گی۔
/*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!")