
اس حکمت عملی میں ایک سے زیادہ چلتی اوسط ((MA) کو بطور بنیادی ٹریڈنگ سگنل استعمال کیا جاتا ہے اور اوسط سمت اشاریہ ((ADX) کو بطور فلٹر استعمال کیا جاتا ہے۔ حکمت عملی کا بنیادی نظریہ یہ ہے کہ تیزی سے ایم اے ، سست ایم اے اور اوسط ایم اے کے تعلقات کا موازنہ کرکے ممکنہ کثیر اور خالی سر مواقع کی نشاندہی کی جائے۔ اس کے ساتھ ہی ، ٹریڈنگ سگنل کی وشوسنییتا کو بڑھانے کے لئے ایڈ ایکس اشارے کا استعمال کرتے ہوئے کافی حد تک رجحان کی طاقت والے بازار کے ماحول کو فلٹر کریں۔
اوسط سمت انڈیکس فلٹر پر مبنی یکساں لائن رد حکمت عملی متعدد ایم اے اور اے ڈی ایکس اشارے استعمال کرتی ہے تاکہ ممکنہ تجارتی مواقع کی نشاندہی کی جاسکے اور کم معیار کے تجارتی سگنل کو فلٹر کیا جاسکے۔ حکمت عملی کی منطق واضح ، سمجھنے اور اس پر عمل درآمد کرنا آسان ہے ، لیکن عملی اطلاق میں مارکیٹ کے ماحول میں ہونے والی تبدیلیوں پر دھیان دینے کی ضرورت ہے ، اور دیگر تکنیکی اشارے اور خطرے کے انتظام کے اقدامات کے ساتھ مل کر اس کی اصلاح کی ضرورت ہے۔
/*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")