
ڈبل مساوی کراس متحرک ٹریڈنگ سسٹم ایک متحرک پر مبنی تجارتی حکمت عملی ہے جو کلاسیکی 8⁄21 اشاریہ کی حرکت پذیری اوسط ((EMA) کراسنگ کا استعمال کرتے ہوئے رجحان کی تبدیلی کی شناخت اور ایک کثیر فریم ٹریڈنگ سگنل پیدا کرتی ہے۔ اس حکمت عملی میں بلٹ ان اسٹاپ اور اسٹاپ لاس پیرامیٹرز شامل ہیں جو خود بخود خطرے کا انتظام کرتے ہیں اور منافع کو مقفل کرتے ہیں۔ حکمت عملی کا بنیادی منطق یہ ہے کہ جب 8 سائیکل ای ایم اے اوپر کی طرف 21 سائیکل ای ایم اے کو عبور کرتا ہے تو ایک سے زیادہ سگنل پیدا ہوتا ہے۔
اس حکمت عملی کا بنیادی اصول مارکیٹ کے رجحانات کی تبدیلی کی سمت کا تعین کرنے کے لئے دو مختلف ادوار کی اشاریہ منتقل اوسط کے مابین کراس تعلقات کی بنیاد پر ہے۔ حکمت عملی کو بنیادی طور پر مندرجہ ذیل اہم حصوں کے ذریعے نافذ کیا گیا ہے:
اشارے کا حساب کتاب:
shortEma = ta.ema(close, shortEmaLength)longEma = ta.ema(close, longEmaLength)تجارت کی شرائط:
longCondition = ta.crossover(shortEma, longEma)shortCondition = ta.crossunder(shortEma, longEma)رسک مینجمنٹ:
longTakeProfit = close * (1 + takeProfitPerc / 100)longStopLoss = close * (1 - stopLossPerc / 100)shortTakeProfit = close * (1 - takeProfitPerc / 100)shortStopLoss = close * (1 + stopLossPerc / 100)ٹرانزیکشنز پر عملدرآمد:
noOpenPosition = strategy.position_size == 0یہ ڈیزائن اس بات کو یقینی بناتا ہے کہ حکمت عملی تیزی سے مواقع کو پکڑنے کے لۓ رجحانات کو تبدیل کرنے کے لۓ، جبکہ پہلے سے ہی خطرے کے پیرامیٹرز کے ذریعہ فنڈز کی حفاظت کی حفاظت کرتی ہے.
کوڈ کو گہرائی سے تجزیہ کرنے کے بعد ، اس حکمت عملی کے درج ذیل نمایاں فوائد ہیں:
سادہ اور موثر رجحانات کی شناخت8⁄21 ای ایم اے کراسنگ ایک وسیع پیمانے پر تصدیق شدہ رجحان کی شناخت کا طریقہ ہے جو مارکیٹ کی حرکیات میں تبدیلی کو مؤثر طریقے سے پکڑ سکتا ہے۔
مکمل خطرے کا انتظاماس کے علاوہ ، اس میں ایک اسٹاپ نقصان میکانزم ہے جو خود کار طریقے سے فنڈز کی حفاظت اور منافع کو لاک کرتا ہے ، جس سے جذباتی تجارت کا خطرہ بہت کم ہوجاتا ہے۔
لچکدار پیرامیٹرز ترتیب: صارف مختلف مارکیٹ اور ذاتی خطرے کی ترجیحات کے مطابق ای ایم اے سائیکل کی لمبائی ، اسٹاپ اور اسٹاپ نقصان کی فیصد کو ایڈجسٹ کرسکتا ہے۔
دو طرفہ تجارت کی صلاحیتیہ حکمت عملی ایک ہی وقت میں زیادہ اور کم کام کرنے کی حمایت کرتی ہے ، جس سے مارکیٹ کے مختلف ماحول میں مواقع تلاش کیے جاسکتے ہیں۔
ٹرانزیکشنز کو روکنے کے لئےاسٹریٹجک ڈیزائن اس بات کو یقینی بناتا ہے کہ ایک ٹرانزیکشن مکمل طور پر بند ہونے سے پہلے کوئی نیا ٹرانزیکشن نہیں کھولا جائے ، جس سے زیادہ تجارت اور فنڈز کی تقسیم کا خطرہ ہے۔
واضح بصری: ای ایم اے لائنز اور ٹریڈنگ سگنل کے نشانات کو نقشہ بناتے ہوئے ، تاجر کو حکمت عملی کے عمل کی حالت کو بصری طور پر سمجھنے کی اجازت دیتا ہے۔
وسیع پیمانے پر استعمالحکمت عملی: مختلف قسم کے ٹریڈنگ اقسام اور ٹائم فریموں کے ساتھ ہم آہنگ ، بشمول کریپٹو کرنسی ، غیر ملکی کرنسی ، اسٹاک اور انڈیکس وغیرہ۔
اس حکمت عملی کے معقول ڈیزائن کے باوجود ، مندرجہ ذیل ممکنہ خطرات موجود ہیں:
براڈکاسٹ مارکیٹ کی خراب کارکردگیEMAs: غیر واضح رجحان کے ساتھ ہلچل والی مارکیٹوں میں ، EMA کراس سگنل اکثر سامنے آسکتے ہیں ، جس کی وجہ سے کئی بار اسٹاپ نقصان ہوتا ہے۔
فکسڈ فیصد سٹاپ نقصان کی حد: مختلف مارکیٹوں اور وقت کے دورانیوں میں بہت زیادہ اتار چڑھاؤ ہوتا ہے ، اور مقررہ فیصد اسٹاپ نقصان ہر صورت میں مناسب نہیں ہوسکتا ہے۔
سلائڈ پوائنٹس اور عملدرآمد کا خطرہ: ریئل اسٹیٹ ٹریڈنگ میں ، خاص طور پر کم لیکویڈیٹی والے بازاروں میں ، حکمت عملی کے ذریعہ تیار کردہ قیمتوں پر آرڈر کو درست طریقے سے عملدرآمد کرنا ممکن نہیں ہے۔
تاریخی اعداد و شمار پر زیادہ انحصار: حکمت عملی کے پیرامیٹرز تاریخی اعداد و شمار پر مبنی اصلاحات ہیں ، لیکن مستقبل میں مارکیٹ کے رویے میں تبدیلی آسکتی ہے۔
واحد اشارے پر انحصار: حکمت عملی صرف ای ایم اے کراسنگ پر انحصار کرتی ہے ، جس میں سگنل کی تصدیق کے لئے معاون اشارے استعمال نہیں کیے جاتے ہیں ، جس سے غلط سگنل کا سبب بن سکتا ہے۔
ان خطرات کو کم کرنے کے لئے، یہ مشورہ دیا جاتا ہے کہ:
کوڈ کا تجزیہ کرنے کے بعد ، ممکنہ اصلاحات یہ ہیں:
adxLength = input.int(14, title="ADX Length")
adxThreshold = input.int(25, title="ADX Threshold")
adxValue = ta.adx(high, low, close, adxLength)
isTrending = adxValue > adxThreshold
atrPeriod = input.int(14, title="ATR Period")
atrMultiplierSL = input.float(2.0, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
atrValue = ta.atr(atrPeriod)
dynamicStopLoss = atrValue * atrMultiplierSL
dynamicTakeProfit = atrValue * atrMultiplierTP
ٹریڈنگ ٹائم فلٹر شامل کیا گیا۔: مارکیٹ کے کھلنے اور بند ہونے کے اوقات میں اعلی اتار چڑھاؤ کے اوقات میں تجارت سے گریز کریں۔
جزوی منافع کو لاک کرنے کا طریقہ کار: جب تجارت منافع کی ایک خاص سطح تک پہنچ جاتی ہے تو ، اسٹاپ نقصان کو لاگت کی قیمت پر منتقل کریں یا منافع کو جزوی طور پر بند کردیں۔
ٹرانزیکشن کی تصدیق میں اضافہ: ای ایم اے کراس سگنل کی اثرائت کو ٹریڈ حجم کے اشارے کے ساتھ مل کر تصدیق کی جاتی ہے ، صرف اس وقت تجارت کی جاتی ہے جب تجارت میں اضافہ ہوتا ہے۔
volumeCondition = volume > ta.sma(volume, 20) * 1.2
validLongCondition = longCondition and volumeCondition
یہ اصلاحات نہ صرف حکمت عملی کی استحکام کو بہتر بناتی ہیں بلکہ مارکیٹ کے مختلف حالات کے مطابق بھی اپناتی ہیں ، جس سے مجموعی طور پر منافع میں اضافہ ہوتا ہے اور خطرات کو کم کیا جاتا ہے۔
ڈبل مساوی کراس موشن ٹریڈنگ سسٹم ایک ایسی تجارتی حکمت عملی ہے جو واضح طور پر تشکیل دی گئی ہے اور اسے آسانی سے سمجھنے اور اس پر عمل درآمد کرنے کے لئے آسان ہے۔ یہ 8⁄21 EMA کراس سگنل کا استعمال کرتے ہوئے مارکیٹ میں رجحان کی تبدیلیوں کو پکڑتا ہے ، اور پہلے سے طے شدہ اسٹاپ لاس پیرامیٹرز کے ذریعہ خود بخود خطرے کا انتظام کرتا ہے۔ یہ حکمت عملی متعدد تجارتی اقسام اور وقت کی مدت کے لئے موزوں ہے ، خاص طور پر مارکیٹوں میں نمایاں رجحانات کے ساتھ۔
حکمت عملی کا بنیادی فائدہ اس کی سادہ منطق اور جامع خطرے کے انتظام کے طریقہ کار میں ہے ، جس سے تجارتی عمل انتہائی خودکار ہوجاتا ہے اور جذباتی عوامل کی مداخلت کو کم کیا جاتا ہے۔ اس کے علاوہ ، اس سے زیادہ تجارت کے خطرے سے بھی بچا جاسکتا ہے کیونکہ یہ ایک دوسرے پر تجارت کو روکنے کے لئے ڈیزائن کیا گیا ہے۔
تاہم ، اس حکمت عملی کو ہلچل والی منڈیوں میں چیلنج کا سامنا کرنا پڑ سکتا ہے ، جس میں رجحان فلٹرز اور متحرک اسٹاپ نقصانات جیسے اصلاحی اقدامات کو شامل کرکے اس کی موافقت کو بہتر بنانے کی ضرورت ہے۔ اس کے علاوہ ، تجارت کی مقدار کی تصدیق اور انٹری ٹائمنگ کو بہتر بنانے کے ساتھ مل کر حکمت عملی کی کارکردگی کو بہتر بنانے کا ایک مؤثر طریقہ ہے۔
مجموعی طور پر ، یہ ایک ایسی حکمت عملی ہے جو سادگی اور افادیت کو متوازن کرتی ہے ، جو ابتدائیوں کے لئے خود کار طریقے سے تجارت میں داخل ہونے کے لئے موزوں ہے ، اور تجربہ کار تاجروں کے پورٹ فولیو کے حصے کے طور پر بھی کام کرتی ہے۔ معقول پیرامیٹرز کو ایڈجسٹ کرنے اور مسلسل اصلاح کے ذریعہ ، یہ حکمت عملی مارکیٹ کے مختلف حالات میں مستحکم کارکردگی کا مظاہرہ کرنے میں کامیاب ہے۔
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
//@version=5
strategy("JWs Algo", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
shortEmaLength = input.int(8, title="Short EMA Length")
longEmaLength = input.int(21, title="Long EMA Length")
takeProfitPerc = input.float(2.0, title="Take Profit (%)", step=0.1)
stopLossPerc = input.float(1.0, title="Stop Loss (%)", step=0.1)
// === INDICATORS ===
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
// === CONDITIONS ===
longCondition = ta.crossover(shortEma, longEma)
shortCondition = ta.crossunder(shortEma, longEma)
// === PLOTTING ===
plot(shortEma, title="8 EMA", color=color.orange)
plot(longEma, title="21 EMA", color=color.blue)
// === STRATEGY EXECUTION ===
// Convert percentage inputs into price levels
longTakeProfit = close * (1 + takeProfitPerc / 100)
longStopLoss = close * (1 - stopLossPerc / 100)
shortTakeProfit = close * (1 - takeProfitPerc / 100)
shortStopLoss = close * (1 + stopLossPerc / 100)
// === CHECK FOR OPEN POSITION ===
noOpenPosition = strategy.position_size == 0
if (longCondition and noOpenPosition)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
if (shortCondition and noOpenPosition)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
// === SIGNAL MARKERS ===
plotshape(longCondition and noOpenPosition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCondition and noOpenPosition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)