यह रणनीति तरलता-भारित चलती औसत पर आधारित एक ट्रेडिंग प्रणाली है, जो मूल्य आंदोलन और व्यापारिक मात्रा के बीच संबंध के माध्यम से बाजार की तरलता को मापती है। यह तेजी से रेखा के ऊपर पार होने पर खरीद संकेत और धीमी रेखा के नीचे पार होने पर बिक्री संकेत उत्पन्न करने के लिए तेज़ और धीमी गति से चलती औसत का निर्माण करती है। यह रणनीति विशेष रूप से असामान्य तरलता घटनाओं पर केंद्रित है, अधिक सटीक व्यापारिक अवसरों के लिए एक सरणी में प्रमुख मूल्य स्तरों को रिकॉर्ड करती है।
मूल तंत्र बाजार की तरलता को मूल्य आंदोलन के लिए मात्रा के अनुपात के माध्यम से मापने पर निर्भर करता है। कार्यान्वयन निम्नलिखित चरणों का पालन करता हैः 1. तरलता सूचक की गणना करें: बंद और खुले मूल्य के बीच पूर्ण अंतर से विभाजित मात्रा 2. तरलता सीमा निर्धारित करें: ईएमए और मानक विचलन का उपयोग करके असामान्य तरलता की पहचान करें 3. मूल्य सरणी बनाए रखें: तरलता सीमा का उल्लंघन होने पर कीमतों का रिकॉर्ड रखें 4. चलती औसत का निर्माण करें: तरलता की घटनाओं के आधार पर तेज़ और धीमे ईएमए की गणना करें 5. ट्रेडिंग सिग्नल उत्पन्न करें: चलती औसत क्रॉसओवर के माध्यम से प्रवेश और निकास बिंदु निर्धारित करें
यह अभिनव रणनीति तरलता विश्लेषण को तकनीकी संकेतकों के साथ जोड़ती है, बाजार की तरलता विसंगतियों की निगरानी करके पारंपरिक चलती औसत क्रॉसओवर प्रणालियों का अनुकूलन करती है। जबकि यह विशिष्ट बाजार स्थितियों में आशाजनक परिणाम दिखाता है, स्थिरता और प्रयोज्य में सुधार के लिए आगे अनुकूलन की आवश्यकता है। व्यापारियों को लाइव कार्यान्वयन से पहले पूरी तरह से परीक्षण करना चाहिए और अधिक मजबूत ट्रेडिंग प्रणाली के लिए अन्य संकेतकों के साथ संयोजन पर विचार करना चाहिए।
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //Liquidity ignoring price location //@version=6 strategy("Liquidity Weighted Moving Averages [AlgoAlpha]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // Inputs outlierThreshold = input.int(10, "Outlier Threshold Length") fastMovingAverageLength = input.int(50, "Fast MA Length") slowMovingAverageLength = input.int(100, "Slow MA Length") start_date = input(timestamp("2018-01-01 00:00"), title="Start Date") end_date = input(timestamp("2069-12-31 23:59"), title="End Date") // Define liquidity based on volume and price movement priceMovementLiquidity = volume / math.abs(close - open) // Calculate the boundary for liquidity to identify outliers liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold) // Initialize an array to store liquidity values when they cross the boundary var liquidityValues = array.new_float(5) // Check if the liquidity crosses above the boundary and update the array if ta.crossover(priceMovementLiquidity, liquidityBoundary) array.insert(liquidityValues, 0, close) if array.size(liquidityValues) > 5 array.pop(liquidityValues) // Calculate the Exponential Moving Averages for the close price at the last liquidity crossover fastEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, fastMovingAverageLength) slowEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, slowMovingAverageLength) // Trading Logic in_date_range = true buy_signal = ta.crossover(fastEMA, slowEMA) and in_date_range sell_signal = ta.crossunder(fastEMA, slowEMA) and in_date_range // Strategy Entry and Exit if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.close("Buy") // Plotting fastPlot = plot(fastEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Fast EMA") slowPlot = plot(slowEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Slow EMA") // Create a fill between the fast and slow EMA plots with appropriate color based on crossover fill(fastPlot, slowPlot, fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50))