یہ حکمت عملی ایلرز ایلیگنٹ آسکیلیٹر ، ایلرز ڈی سائیکلر ، ایلرز فوری ٹرینڈ لائن اور ایلرز سپیئرمین رینک کنکشن گتانک کو ایک حکمت عملی میں جوڑتی ہے ، جس سے ایک مقداری تجارتی حکمت عملی تشکیل ملتی ہے جو رجحانات ، اتار چڑھاؤ ، رفتار اور قیمت اور حجم کی خصوصیات کو مکمل طور پر گرفت میں لیتی ہے۔ حکمت عملی کا نام
اس حکمت عملی میں فیصلے کے لیے چار اہم اشارے استعمال کیے گئے ہیں۔
ایہلرز کا رجحان لکیری اوسکیلیٹر ہے ، جس میں ایکسپونینشل حرکت پذیر اوسط کے ذریعہ ہموار اصل لائن اور سگنل لائن کے مابین فرق موجودہ رجحان کی سمت اور طاقت کا تعین کرسکتا ہے۔ دوسرا ، ایہلرز ڈی سائیکلر ، جو مؤثر طریقے سے سائیکل کے نچلے مقامات کی نشاندہی کرسکتا ہے اور اس بات کا تعین کرسکتا ہے کہ آیا اہم رجحان الٹ رہا ہے۔ اس کے بعد ، ایہلرز انسٹنٹین ٹرینڈ لائن قلیل مدتی رجحان کی سمتوں کا فیصلہ کرنے کے لئے تیز رفتار اوسط کو ٹریک کرتی ہے۔ آخر میں ، ایہلرز اسپیئر مین رینک ارتباط گتانک قیمت حجم تعلقات کا فیصلہ کرتا ہے ، جو مؤثر طریقے سے جھوٹے بریکآؤٹس کو فلٹر کرسکتا ہے۔
خاص طور پر ، حکمت عملی کے لئے داخلہ کی چار شرائط یہ ہیں: خوبصورت آسکیلیٹر سگنل لائن اور ڈی سائیکلر سگنل لائن بیک وقت 0 سے اوپر توڑ رہی ہے۔ اصل لائن ڈی سائیکلر لائن سے اوپر توڑ رہی ہے۔ اصل لائن بڑھتی ہوئی فوری ٹرینڈ لائن سے زیادہ ہے۔ اور ایک مثبت سپیئر مین رینک کنکشن گتانک۔
باہر نکلنے کی شرائط بہت آسان ہیں: جب اصل لائن فوری ٹرینڈ لائن سے نیچے آجاتی ہے تو باہر نکلنا۔
مختصر شرائط لمبی شرائط کی طرح ہیں، صرف الٹ.
اس حکمت عملی کا سب سے بڑا فائدہ اشارے کے مناسب امتزاج میں ہے ، جو ہر اشارے کی طاقتوں کو مؤثر طریقے سے فائدہ اٹھا سکتا ہے ، باہمی تصدیق کرسکتا ہے ، جھوٹے مثبت نتائج سے بچ سکتا ہے ، بہت زیادہ شور کو فلٹر کرسکتا ہے ، اور زیادہ قابل اعتماد سگنل تیار کرسکتا ہے۔
خاص طور پر ، خوبصورت آسکیلیٹر رجحان کی سمت اور طاقت کا فیصلہ کرسکتا ہے ، ڈی سائیکلر سائیکل موڑ کے مقامات کا فیصلہ کرسکتا ہے ، فوری رجحان لائن قلیل مدتی رجحانات کا فیصلہ کرسکتا ہے ، اور سپیئر مین رینک قیمت حجم کے تعلقات کا فیصلہ کرسکتا ہے۔ ان چاروں کا مجموعہ رجحان ، سائیکل ، رفتار اور قیمت حجم کے لحاظ سے مارکیٹ کی خصوصیات کا جامع اندازہ کرسکتا ہے ، اس طرح انتہائی قابل اعتماد تجارتی سگنل تیار کرتا ہے۔
اس کے علاوہ ، صرف درمیانی مدت کی قیمتوں کا حوالہ دیتے ہوئے ، حکمت عملی قلیل مدتی مارکیٹ شور سے مداخلت سے گریز کرتی ہے اور غیر ضروری الٹ ٹریڈنگ کو کم کرتی ہے۔ نیز ، کم سگنل اور آسان باہر نکلنے کے قواعد کے ساتھ ، تجارتی تعدد کو بہت کم کیا جاسکتا ہے ، جس سے زیادہ تجارت کے مسائل سے بچنا پڑتا ہے۔
اس حکمت عملی کا سب سے بڑا خطرہ اسٹاپ نقصان کے طریقہ کار کی کمی ہے۔ مارکیٹ میں پرتشدد حرکت کی صورت میں ، وقت میں نقصان کو روکنے میں ناکامی زیادہ نقصانات کا باعث بن سکتی ہے۔ اس میں ڈونچیان چینلز اور توانائی کے اشارے جیسے اضافی فلٹرز کا بھی فقدان ہے جو کسی حد تک غلط مثبت تجارت کا باعث بن سکتے ہیں۔
ان خطرات کو کم کرنے کے لئے ، جب نقصانات کچھ سطحوں سے تجاوز کرتے ہیں تو خود بخود نقصان کو روکنے کے لئے حفاظتی اسٹاپ نقصان مقرر کیا جاسکتا ہے۔ اس کے علاوہ ، غلط بریک آؤٹ کے خطرات سے بچنے کے لئے ثانوی تصدیق کے لئے ایم اے سی ڈی جیسے اشارے شامل کیے جاسکتے ہیں۔
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
خطرے کے انتظام کے سٹاپ نقصان کے طریقہ کار میں شامل کریں. مناسب سٹاپ نقصان کی سطح مقرر کرنے کے لئے زیادہ سے زیادہ تاریخی ڈراؤونگ کا حساب لگائیں.
مزید فلٹرز شامل کریں۔ غلط سگنل کو مزید کم کرنے کے لیے مزید فلٹرنگ کے لیے MACD، بولنگر بینڈ جیسے اشارے شامل کریں۔
مزید ٹائم فریم شامل کریں۔ فی الحال پیرامیٹرز کا صرف ایک سیٹ استعمال کیا جاتا ہے۔ استحکام کو بہتر بنانے کے لئے ملٹی ٹائم فریم کی تصدیق کے لئے مزید ٹائم فریم شامل کیے جاسکتے ہیں۔
پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں۔ موافقت کو بہتر بنانے کے لئے بدلتے ہوئے مارکیٹ کے حالات کی بنیاد پر اشارے کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے کے لئے پیرامیٹر کی اصلاح شامل کریں۔
کراس اثاثہ اربیٹریج۔ خطرات کو بہتر طور پر کنٹرول کرنے کے لئے اربیٹریج کے مواقع تلاش کرنے کے لئے مختلف اثاثوں پر حکمت عملی کا اطلاق کریں۔
یہ حکمت عملی 4 اہم ایلرز اشارے کو ذہانت سے جوڑ کر ایک حکمت عملی تشکیل دیتی ہے جو ہر پہلو میں رجحانات ، سائیکل ، رفتار اور قیمت کے حجم کا جائزہ لیتی ہے۔ اس میں شور فلٹرنگ کی عمدہ صلاحیتیں ہیں اور اعلی معیار کے سگنل تیار کرسکتی ہیں۔ لیکن اسٹاپ نقصان اور معاون اشارے فلٹرنگ کی کمی اس کو کچھ خطرات کا سامنا کرتی ہے۔ اسٹاپ نقصانات ، فلٹرز ، مزید ٹائم فریم وغیرہ شامل کرکے ، اسے زیادہ استحکام اور وشوسنییتا کے ل effectively مؤثر طریقے سے بہتر بنایا جاسکتا ہے۔
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 2h 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/ // © simwai //@version=5 strategy('Ehlers Elegant Oscillator + Ehlers Decycler + Ehlers Instantaneous + Ehlers Spearman Rank', 'Ehlers Combo', overlay=true, margin_long=100, margin_short=100) // -- Inputs -- inp = input(title='Source', defval=close) res = input.timeframe(title='Resolution', defval='') bar = input(title='Allow Bar Color Change?', defval=true) src = inp length = input.int(title='Length', defval=20, minval=2, maxval=300) rmsLength = input.int(title='Rms Length', defval=50, minval=2) decyclerLength = length // -- Calculation -- // Ehlers Elegant Oscillator a1 = math.exp(-1.414 * math.pi / length) b1 = 2 * a1 * math.cos(1.414 * math.pi / length) c2 = b1 c3 = -a1 * a1 c1 = 1 - c2 - c3 deriv = src - nz(src[2]) rms = math.avg(math.pow(deriv, 2), rmsLength) rms := rms != 0 ? math.sqrt(rms) : 0 nDeriv = rms != 0 ? deriv / rms : 0 iFish = nDeriv != 0 ? (math.exp(2 * nDeriv) - 1) / (math.exp(2 * nDeriv) + 1) : 0 ss = 0.0 ss := bar_index < 3 ? 0 : (c1 * ((iFish + nz(iFish[1])) / 2)) + (c2 * nz(ss[1])) + (c3 * nz(ss[2])) ssSig = ta.wma(ss, length) slo = ss - ssSig sig = slo > 0 ? slo > nz(slo[1]) ? 2 : 1 : slo < 0 ? slo < nz(slo[1]) ? -2 : -1 : 0 eoColor = sig > 1 ? color.green : sig > 0 ? color.lime : sig < -1 ? color.maroon : sig < 0 ? color.red : color.black hline(0) plot(ssSig, title='EO', color=eoColor, linewidth=2) // Ehlers Decycler pi = 2 * math.asin(1) twoPiPrd = 2 * pi / decyclerLength alpha = (math.cos(twoPiPrd) + math.sin(twoPiPrd) - 1) / math.cos(twoPiPrd) dec = 0.0 dec := ((alpha / 2) * (src + nz(src[1]))) + ((1 - alpha) * nz(dec[1])) decyclerSig = src > dec ? 1 : src < dec ? -1 : 0 decColor = decyclerSig > 0 ? color.green : decyclerSig < 0 ? color.red : color.black plot(dec, title='Decycler', color=decColor, linewidth=2) // Ehlers Instantaneous Trendline getItrend(src, alpha) => Price = src Smooth = 0.0 ITrend = 0.0 Trigger = 0.0 ITrend := (alpha - alpha * alpha / 4) * Price + .5 * alpha * alpha * Price[1] - (alpha - .75 * alpha * alpha) * Price[2] + 2 * (1 - alpha) * nz(ITrend[1]) - (1 - alpha) * (1 - alpha) * nz(ITrend[2]) if(bar_index < 7) ITrend := (Price + 2 * Price[1] + Price[2]) / 4 Trigger := 2 * ITrend - ITrend[2] [ITrend, Trigger] itrendAlpha = 2 / (length + 1) / 2 [iT, Tr] = getItrend(src, itrendAlpha) iTColor = Tr > iT ? color.aqua : color.maroon plot(iT, 'Instantaneous Trend', iTColor, 2) // Ehlers Spearman Rank priceArray = array.new_float(300, 0.0) rank = array.new_float(300, 0.0) for i = 1 to length array.set(priceArray, i, nz(src[i - 1])) array.set(rank, i, i) for i = 1 to length count = length + 1 - i for j = 1 to length - count if array.get(priceArray, j + 1) < array.get(priceArray, j) tempPrice = array.get(priceArray, j) tempRank = array.get(rank, j) array.set(priceArray, j, array.get(priceArray, j + 1)) array.set(rank, j, array.get(rank, j + 1)) array.set(priceArray, j + 1, tempPrice) array.set(rank, j + 1, tempRank) sum = 0.0 for i = 1 to length sum := sum + math.pow(i - array.get(rank, i), 2) signal = 2 * (0.5 - (1 - ((6 * sum) / (length * (math.pow(length, 2) - 1))))) spearmanSlo = signal - nz(signal[1]) spearmanSig = spearmanSlo > 0 or signal > 0 ? spearmanSlo > nz(spearmanSlo[1]) ? 2 : 1 : spearmanSlo < 0 or signal < 0 ? spearmanSlo < nz(spearmanSlo[1]) ? -2 : -1 : 0 // -- Signals -- bool enterLong = ta.crossover(sig, 0) and ta.crossover(decyclerSig, 0) and ta.crossover(src, dec) and (src > iT) and iT[1] < iT and spearmanSig > 0 bool enterShort = ta.crossunder(sig, 0) and ta.crossunder(decyclerSig, 0) and ta.crossunder(src, dec) and (src < iT) and iT[1] > iT and spearmanSig < 0 bool exitLong = ta.crossunder(src[100], iT) bool exitShort = ta.crossover(src[100], iT) barcolor(bar and strategy.position_size > 0 ? color.green : bar and strategy.position_size < 0 ? color.red : color.gray) // -- Long Exits -- strategy.close('long', when=exitLong and strategy.position_size > 0, comment='EXIT_LONG') // -- Short Exits -- strategy.close('short', when=exitShort and strategy.position_size < 0, comment='EXIT_SHORT') bool isStrategyEntryEnabled = true // -- Long Entries -- if (isStrategyEntryEnabled) strategy.entry('long', strategy.long, when=enterLong, comment='ENTER_LONG') else strategy.order('long', strategy.long, when=enterLong, comment='ENTER_LONG') // -- Short Entries -- if (isStrategyEntryEnabled) strategy.entry('short', strategy.short, when=enterShort, comment='ENTER_SHORT') else strategy.order('short', strategy.short, when=enterShort, comment='ENTER_SHORT')