یہ حکمت عملی متعدد حرکت پذیر اوسط (ایم اے) کو بنیادی تجارتی سگنلز کے طور پر استعمال کرتی ہے اور فلٹر کے طور پر اوسط سمت انڈیکس (اے ڈی ایکس) کو شامل کرتی ہے۔ حکمت عملی کے پیچھے بنیادی خیال یہ ہے کہ تیز رفتار ایم اے ، سست ایم اے اور اوسط ایم اے کے مابین تعلقات کا موازنہ کرکے ممکنہ طویل اور مختصر مواقع کی نشاندہی کی جائے۔ بیک وقت ، اے ڈی ایکس اشارے کا استعمال مارکیٹ کے ماحول کو کافی حد تک مضبوط رجحان کے ساتھ فلٹر کرنے کے لئے کیا جاتا ہے ، جس سے تجارتی سگنلز کی وشوسنییتا میں اضافہ ہوتا ہے۔
اے ڈی ایکس فلٹر کے ساتھ ایم اے مسترد کرنے کی حکمت عملی ممکنہ تجارتی مواقع کی نشاندہی کرنے اور کم معیار کے تجارتی سگنلز کو فلٹر کرنے کے لئے متعدد ایم اے اور اے ڈی ایکس اشارے کا استعمال کرتی ہے۔ حکمت عملی کا منطق واضح اور سمجھنے اور نافذ کرنے میں آسان ہے۔ تاہم ، عملی طور پر حکمت عملی کا اطلاق کرتے وقت ، مارکیٹ کے ماحول میں ہونے والی تبدیلیوں پر غور کرنا ضروری ہے اور اصلاح کے ل other دوسرے تکنیکی اشارے اور رسک مینجمنٹ اقدامات کو جوڑنا ضروری ہے۔
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gavinc745 //@version=5 strategy("MA Rejection Strategy with ADX Filter", overlay=true) // Input parameters fastMALength = input.int(10, title="Fast MA Length", minval=1) slowMALength = input.int(50, title="Slow MA Length", minval=1) averageMALength = input.int(20, title="Average MA Length", minval=1) adxLength = input.int(14, title="ADX Length", minval=1) adxThreshold = input.int(20, title="ADX Threshold", minval=1) // Calculate moving averages fastMA = ta.wma(close, fastMALength) slowMA = ta.wma(close, slowMALength) averageMA = ta.wma(close, averageMALength) // Calculate ADX manually dmPlus = high - high[1] dmMinus = low[1] - low trueRange = ta.tr dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength) dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength) trSmoothed = ta.wma(trueRange, adxLength) diPlus = dmPlusSmoothed / trSmoothed * 100 diMinus = dmMinusSmoothed / trSmoothed * 100 adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength) // Identify potential levels potentialLongLevel = low < slowMA and close > slowMA potentialShortLevel = high > slowMA and close < slowMA // Confirm levels confirmedLongLevel = potentialLongLevel and close > fastMA confirmedShortLevel = potentialShortLevel and close < fastMA // Entry signals longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold // Exit signals longExit = ta.crossunder(close, slowMA) shortExit = ta.crossover(close, slowMA) // Plot signals plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green) plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red) // Plot moving averages and ADX plot(fastMA, title="Fast MA", color=color.blue) plot(slowMA, title="Slow MA", color=color.red) plot(averageMA, title="Average MA", color=color.orange) // plot(adx, title="ADX", color=color.purple) // hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed) // Execute trades if longEntry strategy.entry("Long", strategy.long) else if longExit strategy.close("Long") if shortEntry strategy.entry("Short", strategy.short) else if shortExit strategy.close("Short")