یہ حکمت عملی قیمت کی اتار چڑھاؤ کی بنیاد پر قیمت کے بینڈ پیدا کرتی ہے ، اور جب قیمت بینڈ کو توڑتی ہے تو تجارتی سگنل تیار کرتی ہے۔
حکمت عملی سب سے پہلے ایک خاص مدت کے دوران قیمت کی اوسط اتار چڑھاؤ کی حد کا حساب لگاتی ہے ، پھر ہموار اتار چڑھاؤ پیدا کرنے کے لئے ایک اشاریہ دار حرکت پذیر اوسط کا استعمال کرتے ہوئے اتار چڑھاؤ کی حد کو ہموار کرتی ہے۔ ہموار اتار چڑھاؤ ایک عنصر سے ضرب دیتا ہے جس سے بینڈ کی حد ملتی ہے۔ جب قیمت اوپری بینڈ سے اوپر ہوتی ہے تو ، خرید کا اشارہ پیدا ہوتا ہے۔ جب قیمت نچلی بینڈ سے نیچے ہوتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔
خاص طور پر ، ہموار اتار چڑھاؤ smrng کو smoothhrng فنکشن کے ذریعہ حساب کیا جاتا ہے۔ اس کے بعد قیمت کے بینڈوں کے اوپری بینڈ hband اور نچلے بینڈ lband کا حساب smrng کی بنیاد پر کیا جاتا ہے۔ اس کی بنیاد پر لانگ شرط longCondition اور شارٹ شرط shortCondition مرتب کی جاتی ہے۔ جب longCondition پوری ہوجاتی ہے تو ، خرید کا سگنل تیار کیا جاتا ہے۔ جب شارٹ شرط پوری ہوجاتی ہے تو ، فروخت کا سگنل تیار کیا جاتا ہے۔
اس حکمت عملی کے فوائد یہ ہیں:
تجارتی سگنل بنانے کے لئے قیمت کی اتار چڑھاؤ کا استعمال مارکیٹ میں ہونے والی تبدیلیوں کو مؤثر طریقے سے ٹریک کرسکتا ہے۔
ایکسپونینشل چلتی اوسط کے ساتھ اتار چڑھاؤ کو ہموار کرنا شور کو فلٹر کرسکتا ہے اور زیادہ قابل اعتماد تجارتی سگنل پیدا کرسکتا ہے۔
بینڈ کی حد کو اتار چڑھاؤ کے ضارب کے ذریعے ایڈجسٹ کیا جاسکتا ہے ، جس سے حکمت عملی زیادہ لچکدار ہوتی ہے۔
اس کے ساتھ ساتھ بریکآؤٹ فیصلے کے ساتھ مل کر، جب رجحان کی تبدیلی واقع ہوتی ہے تو یہ بروقت تجارتی مواقع کو پکڑ سکتا ہے.
اس حکمت عملی میں کچھ خطرات بھی ہیں:
غیر معمولی مارکیٹ کی اتار چڑھاؤ میں ، ہموار اتار چڑھاؤ اصل اتار چڑھاؤ کو درست طریقے سے ظاہر کرنے میں ناکام ہوسکتا ہے ، جس سے غلط سگنل پیدا ہوتے ہیں۔ ماڈل کو بہتر بنانے کے لئے پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔
بینڈ رینج کی غلط ترتیب سے اوور ٹریڈنگ یا ناکافی سگنل ہوسکتے ہیں۔ زیادہ سے زیادہ حد تلاش کرنے کے لئے مختلف پیرامیٹرز کی جانچ کی جاسکتی ہے۔
بریک آؤٹ سگنلز میں وقت کی تاخیر ہوتی ہے ، جس کی وجہ سے قبل از وقت داخلے یا دیر سے داخلے کا سبب بن سکتا ہے۔ تصدیق کے لئے دوسرے اشارے متعارف کرائے جاسکتے ہیں۔
حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
اتار چڑھاؤ کا حساب لگانے کے لئے سب سے مناسب مدت تلاش کرنے کے لئے مختلف قیمت ڈیٹا سائیکلوں کا تجربہ کرنا۔
مختلف حرکت پذیر اوسط الگورتھم کی کوشش کر رہے ہیں جیسے وزن شدہ حرکت پذیر اوسط.
بریکآؤٹ سگنل کی تصدیق کے لیے تجارتی حجم یا دیگر اشارے متعارف کرانا۔
ہر تجارت میں نقصانات کو کنٹرول کرنے کے لئے سٹاپ نقصان یا ٹریلنگ سٹاپ کی ترتیب.
زیادہ سے زیادہ بینڈ رینج کا تعین کرنے کے لئے اتار چڑھاؤ ضابطہ ضرب کو بہتر بنانا.
اس حکمت عملی کی مجموعی منطق واضح ہے ، قیمتوں میں اتار چڑھاؤ کا استعمال بینڈ بنانے اور قیمتوں میں توڑنے کے لئے تجارتی سگنل پیدا کرنے کے لئے کیا جاتا ہے ، جو مارکیٹ کے رجحان کی تبدیلیوں کو مؤثر طریقے سے ٹریک کرسکتے ہیں۔ لیکن حکمت عملی کو زیادہ مضبوط بنانے کے لئے پیرامیٹر کی اصلاح ، سگنل کی تصدیق وغیرہ کے ذریعے بہتری کی گنجائش ہے۔
/*backtest start: 2023-01-22 00:00:00 end: 2024-01-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true) // Source src = input(defval=close, title="Source") // Sampling Period per = input(defval=100, minval=1, title="Sampling Period") // Range Multiplier mult = input(defval=3.0, minval=0.1, title="Range Multiplier") // Smooth Average Range smoothrng(x, t, m) => wper = (t * 2) - 1 avrng = ema(abs(x - x[1]), t) smoothrng = ema(avrng, wper) * m smoothrng smrng = smoothrng(src, per, mult) // Range Filter rngfilt(x, r) => rngfilt = x rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r)) rngfilt filt = rngfilt(src, smrng) // Filter Direction upward = 0.0 upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1]) downward = 0.0 downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1]) // Target Bands hband = filt + smrng lband = filt - smrng // Breakouts longCondition = (src > filt) and (src > src[1]) and (upward > 0) shortCondition = (src < filt) and (src < src[1]) and (downward > 0) strategy.entry("Buy", strategy.long, when = longCondition) strategy.entry("Sell", strategy.short, when = shortCondition) // Plotting plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter") hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target") lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target") // Fills fill(hbandplot, lbandplot, color=color.aqua, title="Target Range") // Bar Color barcolor(longCondition ? color.green : shortCondition ? color.red : na) // Alerts alertcondition(longCondition, title="Buy Alert", message="BUY") alertcondition(shortCondition, title="Sell Alert", message="SELL")