
یہ حکمت عملی ایک رجحان سے باخبر رہنے اور تجارت کے نظام کو تبدیل کرنے کی حکمت عملی ہے جو مرکب اوسط پر مبنی ہے۔ یہ تجارت کے مواقع کی نشاندہی کرنے کے لئے مختلف ادوار کی متحرک اوسط کو جوڑتا ہے ، قیمتوں کے ساتھ اوسط کے ردعمل کے ساتھ مل کر۔ حکمت عملی کا بنیادی مقصد قیمتوں اور اوسط کے مابین تعلقات کو دیکھ کر تجارت کا وقت طے کرنا ہے اور قیمتوں کے ردعمل کو خاص طور پر کم کرنے کے لئے کس طرح رد عمل کا اظہار کرنا ہے۔
حکمت عملی دو مختلف ادوار (ڈیفالٹ 20 اور 30) کے ساتھ ایک وزن یا ریاضی کی اوسط کے ذریعہ ایک جامع اوسط بنانے کے لئے متعدد متحرک اوسط قسموں (ای ایم اے ، ٹی ای ایم اے ، ڈی ای ایم اے ، ڈبلیو ایم اے ، ایس ایم اے) کا مجموعہ استعمال کرتی ہے۔ جب قیمت اوسط سے اوپر ہوتی ہے تو اسے اوپر کی طرف بڑھنے کا رجحان سمجھا جاتا ہے ، اور جب نیچے کی طرف ہوتی ہے تو اسے نیچے کی طرف بڑھنے کا رجحان سمجھا جاتا ہے۔ حکمت عملی رجحان کے قیام کے بعد قیمت کو اوسط کے قریب واپس لانے کا انتظار کرتی ہے۔ (ری ایکشن فیصد پیرامیٹر کنٹرول کے ذریعے) ، اور اگر کوئی الٹ سگنل ہوتا ہے تو تجارت کریں۔ خاص طور پر ، بڑھتے ہوئے رجحان میں ، جب قیمت اوسط سے نیچے کی طرف لوٹ جاتی ہے اور اوسط سے اوپر کی طرف واپس آجاتی ہے تو زیادہ ہوتا ہے۔ نیچے کی طرف ، جب قیمت اوسط سے اوپر کی طرف اچھال جاتی ہے اور نیچے کی طرف کھل جاتی ہے۔
یہ ایک حکمت عملی ہے جو رجحانات کی پیروی اور الٹ ٹریڈنگ کے تصور کو جوڑتی ہے ، اور تجارت کے مواقع کو پکڑنے کے لئے مرکب اوسط لائن اور قیمت کے رد عمل کے طریقہ کار کا استعمال کرتی ہے۔ حکمت عملی کی بنیادی خوبی اس کی لچک اور جعلی سگنل کو فلٹر کرنے کی صلاحیت میں ہے ، لیکن اس کے ساتھ ساتھ مختلف مارکیٹ کے ماحول میں پیرامیٹرز کو بہتر بنانے کے بارے میں بھی دھیان دینا ضروری ہے۔ معقول خطرے پر قابو پانے اور مسلسل اصلاحی بہتری کے ساتھ ، اس حکمت عملی کو حقیقی تجارت میں مستحکم منافع کی توقع ہے۔
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ultrajante MA Reaction Strategy", overlay=true, initial_capital=10000,
default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ===== Custom Functions for DEMA and TEMA =====
dema(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
2 * ema1 - ema2
tema(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)
3 * ema1 - 3 * ema2 + ema3
// ===== Configuration Parameters =====
// MA Type Selection
maType = input.string(title="MA Type", defval="EMA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA"])
// Parameters for composite periods
periodA = input.int(title="Period A", defval=20, minval=1)
periodB = input.int(title="Period B", defval=30, minval=1)
compMethod = input.string(title="Composite Method", defval="Average", options=["Average", "Weighted"])
// Reaction percentage (e.g., 0.5 means 0.5%)
reactionPerc = input.float(title="Reaction %", defval=0.5, step=0.1)
// ===== Composite Period Calculation =====
compPeriod = compMethod == "Average" ? math.round((periodA + periodB) / 2) : math.round((periodA * 0.6 + periodB * 0.4))
// ===== Moving Average Calculation based on selected type =====
ma = switch maType
"SMA" => ta.sma(close, compPeriod)
"EMA" => ta.ema(close, compPeriod)
"WMA" => ta.wma(close, compPeriod)
"DEMA" => dema(close, compPeriod)
"TEMA" => tema(close, compPeriod)
=> ta.ema(close, compPeriod) // Default value
plot(ma, color=color.blue, title="MA")
// ===== Trend Definition =====
trendUp = close > ma
trendDown = close < ma
// ===== Reaction Threshold Calculation =====
// In uptrend: expect the price to retrace to or below a value close to the MA
upThreshold = ma * (1 - reactionPerc / 100)
// In downtrend: expect the price to retrace to or above a value close to the MA
downThreshold = ma * (1 + reactionPerc / 100)
// ===== Quick Reaction Detection =====
// For uptrend: reaction is detected if the low is less than or equal to the threshold and the close recovers and stays above the MA
upReaction = trendUp and (low <= upThreshold) and (close > ma)
// For downtrend: reaction is detected if the high is greater than or equal to the threshold and the close stays below the MA
downReaction = trendDown and (high >= downThreshold) and (close < ma)
// ===== Trade Execution =====
if upReaction
// Close short position if exists and open long position
strategy.close("Short", comment="Close Short due to Bullish Reaction")
strategy.entry("Long", strategy.long, comment="Long Entry due to Bullish Reaction in Uptrend")
if downReaction
// Close long position if exists and open short position
strategy.close("Long", comment="Close Long due to Bearish Reaction")
strategy.entry("Short", strategy.short, comment="Short Entry due to Bearish Reaction in Downtrend")
// ===== Visualization of Reactions on the Chart =====
plotshape(upReaction, title="Bullish Reaction", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small, text="Long")
plotshape(downReaction, title="Bearish Reaction", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small, text="Short")