यह रणनीति एक व्यापक ट्रेडिंग सिस्टम है जो के-निकटतम पड़ोसियों (केएनएन) मशीन लर्निंग एल्गोरिथ्म, कैंडलस्टिक पैटर्न मान्यता और वॉल्यूम विश्लेषण को जोड़ती है। चलती औसत चैनलों, वॉल्यूम थ्रेशोल्ड सत्यापन और संभावना सांख्यिकी सहित बहु-आयामी विश्लेषण विधियों के माध्यम से, रणनीति संभावित व्यापारिक अवसरों को पकड़ने के लिए एक त्रि-आयामी विश्लेषण ढांचा बनाती है।
इस रणनीति का मूल तर्क कई प्रमुख तत्वों पर आधारित हैः 1. अधिक खरीदे और अधिक बेचे गए क्षेत्रों की पहचान के लिए मूल्य चैनलों का निर्माण करने के लिए सरल चलती औसत (एसएमए) और मानक विचलन का उपयोग करना 2. कार्यक्रमात्मक रूप से परिभाषित परिस्थितियों के माध्यम से नौ क्लासिक कैंडलस्टिक पैटर्न की पहचान करना, जिसमें हैमर, शूटिंग स्टार, एंगुलिंग पैटर्न आदि शामिल हैं। 3. ऐतिहासिक मूल्य आंदोलनों से सीखने और भविष्य की मूल्य दिशाओं का अनुमान लगाने के लिए KNN एल्गोरिथ्म को शामिल करना 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!")