ڈبل ایم اے ٹرینڈ بریک آؤٹ حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جو رجحان کا تعین کرنے اور انٹری سگنل پیدا کرنے کے لئے مختلف ادوار کے دو چلتے ہوئے اوسط کا استعمال کرتی ہے۔ یہ بنیادی طور پر سست ایم اے کے ذریعہ مجموعی رجحان کی سمت کا فیصلہ کرتی ہے اور انٹری فلٹرنگ کے لئے تیز ایم اے کا استعمال کرتی ہے۔ جب بڑے ٹائم فریم کے رجحان کی سمت مستقل ہوتی ہے تو ، یہ اعلی جیت کی شرح اور منافع بخش ہونے کے لئے داخل ہونے کے لئے الٹ بار کا انتخاب کرتی ہے۔
حکمت عملی میں مندرجہ ذیل اہم حصے شامل ہیں:
رجحان کا فیصلہ: 21 پیریڈ ایم اے کا حساب لگاتا ہے ، جسے سست ایم اے کے طور پر بیان کیا جاتا ہے۔ اس کی پوزیشن نسبتا stable مستحکم ہے اور اس کا استعمال مجموعی رجحان کی سمت کا فیصلہ کرنے کے لئے کیا جاسکتا ہے۔ جب قیمتیں اس ایم اے کے قریب بڑھتی ہیں تو ، یہ ایک بڑھتی ہوئی رجحان ہے۔ جب قیمتیں اس ایم اے کے قریب گرتی ہیں تو ، یہ ایک نیچے کا رجحان ہے۔
اندراج فلٹرنگ: 5 پیریڈ ایم اے کا حساب لگاتا ہے ، جسے فاسٹ ایم اے کے طور پر بیان کیا جاتا ہے۔ صرف اس وقت جب قیمت سست ایم اے اور فاسٹ ایم اے دونوں کو توڑتی ہے ، تب ہی تجارتی سگنل ٹرگر ہوتا ہے۔ یہ ڈیزائن بنیادی طور پر جھوٹے بریک آؤٹ کے امکان کو مزید فلٹر کرتا ہے۔
شمع فلٹرنگ: یہ حکمت عملی صرف اس وقت لمبی ہوتی ہے جب موجودہ موم بتی bearish ہوتی ہے ، یا جب موجودہ موم بتی تیزی سے ہوتی ہے تو مختصر ہوجاتی ہے۔ اس پر غور کیا جاتا ہے کہ داخلے کے لئے الٹ بار کا استعمال کرتے ہوئے زیادہ کامیابی کی شرح حاصل کی جاسکتی ہے۔ یہ زیادہ سے زیادہ خریدی یا زیادہ فروخت شدہ علاقوں میں داخل ہونے سے بچنے کے لئے فاسٹ آر ایس آئی اشارے کو بھی جوڑتا ہے۔
پرامائڈنگ فلٹر: کریپٹو مارکیٹ کے لئے، حکمت عملی میں اہم ڈاؤن ٹرینڈز میں oversold مواقع پر قبضہ کرنے کے لئے تین گنا اتار چڑھاؤ بریک آؤٹ کی شرط بھی شامل ہے۔
سٹاپ نقصان: اس حکمت عملی میں اسٹاپ نقصان کو منتقل کرنے کی حمایت کی جاتی ہے۔ پوزیشن کھولنے کے بعد ، مقررہ فیصد کی بنیاد پر اسٹاپ نقصان کو حقیقی وقت میں اپ ڈیٹ کیا جائے گا۔
اس حکمت عملی کے فوائد میں شامل ہیں:
اس حکمت عملی میں کچھ خطرات بھی ہیں:
ان خطرات سے نمٹنے کے لئے، مندرجہ ذیل پہلوؤں میں اصلاحات کی جا سکتی ہیں:
اس حکمت عملی کو بہتر بنانے کے اہم پہلوؤں میں شامل ہیں:
پیرامیٹر کی اصلاح: مؤثر طریقے سے تیز رفتار اور سست ایم اے مدت کے مجموعے کو تلاش کرنے کے لئے منظم طریقے سے بیک ٹسٹ کریں تاکہ خطرے سے ایڈجسٹ شدہ منافع کو بہتر بنایا جاسکے.
نمونہ کی پہچان: مزید قابل اعتماد الٹ سگنل کی نشاندہی کرنے کے لئے KDJ، MACD جیسے دیگر اشارے شامل کریں۔
سٹاپ نقصان کی اصلاح: روکنے کے امکانات کو کم کرنے کے لئے فلوٹنگ یا ٹریلنگ اسٹاپ نقصان الگورتھم تیار کریں.
مشین لرننگ: ML کا استعمال کرتے ہوئے خود کار طریقے سے تجارتی قوانین پیدا کرنے کے لئے مزید تاریخی ڈیٹا جمع اور لیبل کریں.
پوزیشن سائزنگ: مارکیٹ کے حالات کی بنیاد پر پوزیشن سائزنگ کو متحرک طور پر ایڈجسٹ کریں۔
ڈبل ایم اے ٹرینڈ بریک آؤٹ حکمت عملی عام طور پر ایک آسان اور عملی رجحان کی پیروی کرنے والی حکمت عملی ہے۔ پیچیدہ مشین لرننگ الگورتھم کے مقابلے میں ، اس حکمت عملی کی ترجمانی اور مہارت حاصل کرنا آسان ہے ، جس میں زیادہ وشوسنییتا ہے۔ پیرامیٹر ٹوننگ ، فیچر کی توسیع اور ایم ایل میں اضافہ کے ساتھ ، اس حکمت عملی میں بہتری کی بڑی صلاحیت ہے اور یہ مقداری تجارت کے لئے ایک بہترین نقطہ اغاز ہے۔
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-07 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") src = useohlc4 == true ? ohlc4 : close //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Fast RSI fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //CryptoBottom mac = sma(close, 10) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 up2 = high < center and high < center2 and bar == -1 ? 1 : 0 dn2 = low > center and low > center2 and bar == 1 ? 0 : 0 //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)