ڈبل رینج فلٹر مومنٹم ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-04-01 10:54:47
ٹیگز:

img

جائزہ

یہ حکمت عملی دوہری رینج فلٹر پر مبنی ایک رفتار کی تجارتی حکمت عملی ہے۔ حکمت عملی ایک جامع رینج فلٹر حاصل کرنے کے لئے تیز اور سست ادوار کے لئے ہموار حدود کا حساب لگاتی ہے ، جو موجودہ قیمت کے رجحان کا تعین کرنے کے لئے استعمال ہوتی ہے۔ جب قیمت اس حد سے اوپر / نیچے عبور کرتی ہے تو ، حکمت عملی خرید / فروخت کے سگنل پیدا کرتی ہے۔ اس کے علاوہ ، حکمت عملی خطرہ کو کنٹرول کرنے اور منافع میں مقفل کرنے کے لئے چار گریڈیئنٹ ٹیک منافع کی سطح اور ایک اسٹاپ نقصان کی سطح طے کرتی ہے۔

حکمت عملی کا اصول

  1. تیز اور سست ادوار کے لئے ہموار حدود کا حساب لگائیں۔ تیز حد ایک مختصر مدت اور ایک چھوٹا سا ضرب استعمال کرتی ہے ، جبکہ سست حد ایک طویل مدت اور ایک بڑا ضرب استعمال کرتی ہے۔
  2. جامع رینج فلٹر (ٹی آر ایف) کے طور پر تیز اور سست رینج کا اوسط استعمال کریں۔
  3. موجودہ قیمت کو پچھلی قیمت سے موازنہ کرکے اوپر اور نیچے کے رجحانات کا تعین کریں۔
  4. رجحان کے لئے حوالہ کے طور پر متحرک اوپری (FUB) اور نچلے (FLB) بینڈ کا حساب لگائیں۔
  5. اختتامی قیمت اور TRF کے درمیان تعلقات کی بنیاد پر خرید اور فروخت کے سگنل تیار کریں۔
  6. چار گریڈیئنٹ ٹیک منافع کی سطح اور ایک سٹاپ نقصان کی سطح مقرر کریں، جو مختلف پوزیشن فی صد اور منافع / نقصان فی صد کے مطابق ہے.

فوائد کا تجزیہ

  1. ڈبل رینج فلٹر تیز رفتار اور سست مدت کو یکجا کرتا ہے، جس سے حکمت عملی کو مختلف مارکیٹ کی رفتار کو اپنانے اور زیادہ تجارتی مواقع پر قبضہ کرنے کے قابل بناتا ہے.
  2. متحرک اوپری اور نچلے بینڈ کے ڈیزائن سے حکمت عملی کو موجودہ رجحان کے مطابق بنانے میں مدد ملتی ہے اور غلط سگنل کو کم کیا جاتا ہے۔
  3. چار گریڈیئنٹ ٹیک منافع کی سطح حکمت عملی کو زیادہ منافع حاصل کرنے کی اجازت دیتی ہے جب رجحان جاری رہتا ہے جبکہ رجحان کے الٹ جانے پر جزوی فوائد میں مقفل ہوتا ہے۔
  4. سٹاپ نقصان کی ترتیب تجارت فی زیادہ سے زیادہ نقصان کو کنٹرول کرنے میں مدد دیتی ہے اور اکاؤنٹ کی حفاظت کرتی ہے۔

خطرے کا تجزیہ

  1. مارکیٹ میں اتار چڑھاؤ یا رینج سے منسلک حالات کے دوران، حکمت عملی بہت سے غلط سگنل پیدا کر سکتی ہے، جس سے تجارتی اور کمیشن کے نقصانات میں اضافہ ہوتا ہے.
  2. گریڈیئنٹ ٹیک منافع کی ترتیبات اس وجہ سے ہوسکتی ہیں کہ کچھ منافع پہلے سے ہی مقفل ہوجائیں ، جس سے حکمت عملی کو رجحان کی نقل و حرکت سے مکمل فائدہ اٹھانے سے روک دیا جائے۔
  3. اسٹاپ نقصان کی ترتیب سے بلیک سوان واقعات کی وجہ سے انتہائی نقصانات کو مکمل طور پر نہیں روکا جاسکتا ہے۔

اصلاح کی سمت

  1. غلط اشاروں کو کم کرنے کے لئے رجحان کا تعین کرنے کے لئے اضافی شرائط کے طور پر زیادہ تکنیکی اشارے یا مارکیٹ کے جذبات کے اشارے شامل کرنے پر غور کریں۔
  2. منافع لینے اور سٹاپ نقصان کی ترتیبات کے لئے، حکمت عملی کی موافقت کو بہتر بنانے کے لئے مختلف مارکیٹ کے ماحول اور تجارتی آلات کے مطابق ان کو متحرک طور پر ایڈجسٹ کریں.
  3. بیک ٹسٹنگ کے نتائج کی بنیاد پر ، پیرامیٹر کی ترتیبات کو مزید بہتر بنائیں ، جیسے تیز اور سست رینج کے ادوار کا انتخاب ، اور منافع لینے اور اسٹاپ نقصان کی سطحوں کے لئے فیصد کی ترتیبات ، تاکہ حکمت عملی کی استحکام اور منافع میں اضافہ ہو۔

خلاصہ

ڈوئل رینج فلٹر رفتار ٹریڈنگ کی حکمت عملی تیز اور سست ادوار سے ہموار حدود کا استعمال کرتے ہوئے ایک جامع فلٹر تیار کرتی ہے ، جس میں متحرک اوپری اور نچلے بینڈ کے ساتھ مل کر قیمت کے رجحانات کا تعین اور خرید / فروخت کے سگنل پیدا ہوتے ہیں۔ حکمت عملی میں خطرہ کو کنٹرول کرنے اور منافع کو مقفل کرنے کے لئے چار گریڈیئنٹ ٹیک منافع کی سطح اور ایک اسٹاپ نقصان کی سطح بھی طے کی جاتی ہے۔ یہ حکمت عملی رجحان سازی کی منڈیوں میں استعمال کے لئے موزوں ہے لیکن اتار چڑھاؤ والی منڈیوں میں زیادہ غلط سگنل پیدا کرسکتی ہے۔ مستقبل میں ، مزید اشارے متعارف کرانے ، منافع اور اسٹاپ نقصان کی ترتیبات کو بہتر بنانے ، اور حکمت عملی کی موافقت اور استحکام کو بہتر بنانے کے لئے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے پر غور کریں۔


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
strategy(title='2"Twin Range Filter', overlay=true)
strat_dir_input = input.string(title='İşlem Yönü', defval='Alis', options=['Alis', 'Satis', 'Tum'])
strat_dir_value = strat_dir_input == 'Alis' ? strategy.direction.long : strat_dir_input == 'Satis' ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

////////////////////////////

// Backtest inputs
BaslangicAy = input.int(defval=1, title='İlk ay', minval=1, maxval=12)
BaslangicGun = input.int(defval=1, title='İlk Gün', minval=1, maxval=31)
BaslangicYil = input.int(defval=2023, title='İlk Yil', minval=2000)
SonAy = input.int(defval=1, title='Son Ay', minval=1, maxval=12)
SonGun = input.int(defval=1, title='Son Gün', minval=1, maxval=31)
SonYil = input.int(defval=9999, title='Son Yıl', minval=2000)

start = timestamp(BaslangicYil, BaslangicAy, BaslangicGun, 00, 00)  // backtest start window
finish = timestamp(SonYil, SonAy, SonGun, 23, 59)  // backtest finish window
window() => true

source = input(defval=close, title='Source')
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
per1 = input.int(defval=27, minval=1, title='Fast period')
mult1 = input.float(defval=1.6, minval=0.1, title='Fast range')
per2 = input.int(defval=55, minval=1, title='Slow period')
mult2 = input.float(defval=2, minval=0.1, title='Slow range')
smoothrng(x, t, m) =>
    wper = t * 2 - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper) * m
    smoothrng
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
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(source, smrng)
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])
STR = filt + smrng
STS = filt - smrng
FUB = 0.0
FUB := STR < nz(FUB[1]) or close[1] > nz(FUB[1]) ? STR : nz(FUB[1])
FLB = 0.0
FLB := STS > nz(FLB[1]) or close[1] < nz(FLB[1]) ? STS : nz(FLB[1])
TRF = 0.0
TRF := nz(TRF[1]) == FUB[1] and close <= FUB ? FUB : nz(TRF[1]) == FUB[1] and close >= FUB ? FLB : nz(TRF[1]) == FLB[1] and close >= FLB ? FLB : nz(TRF[1]) == FLB[1] and close <= FLB ? FUB : FUB
al = ta.crossover(close, TRF)
sat = ta.crossunder(close, TRF)
plotshape(showsignals and al, title='Long', text='BUY', style=shape.labelup, textcolor=color.white, size=size.tiny, location=location.belowbar, color=color.rgb(0, 19, 230))
plotshape(showsignals and sat, title='Short', text='SELL', style=shape.labeldown, textcolor=color.white, size=size.tiny, location=location.abovebar, color=color.rgb(0, 19, 230))
alertcondition(al, title='Long', message='Long')
alertcondition(sat, title='Short', message='Short')
Trfff = plot(TRF)
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = close > TRF ? color.green : na
shortFillColor = close < TRF ? color.red : na
fill(mPlot, Trfff, title='UpTrend Highligter', color=longFillColor, transp=90)
fill(mPlot, Trfff, title='DownTrend Highligter', color=shortFillColor, transp=90)

//////////////////////



renk1 = input(true, "Mum Renk Ayarları?")
mumrenk = input(true,title="Trend Bazlı Mum Rengi Değişimi?")
htaColor = renk1 ? (al ? color.rgb(224, 230, 57) : #E56337) : #c92626
barcolor(color = mumrenk ? (renk1 ? htaColor : na) : na)
if (al) and window()
    strategy.entry("Al", strategy.long)
if (sat) and window()
    strategy.entry("Sat", strategy.short)


per1(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
zarkesmgb = input.float(title='Zarar Kes Yüzdesi', defval=100, minval=0.01)
zarkeslos = per1(zarkesmgb)
q1 = input.int(title='Satış Lot Sayısı 1.Kısım %', defval=5, minval=1)
q2 = input.int(title='Satış Lot Sayısı 2.Kısım %', defval=8, minval=1)
q3 = input.int(title='Satış Lot Sayısı 3.Kısım %', defval=13, minval=1)
q4 = input.int(title='Satış Lot Sayısı 4.Kısım %', defval=21, minval=1)
tp1 = input.float(title='Kar Yüzdesi 1.Kısım', defval=13, minval=0.01)
tp2 = input.float(title='Kar Yüzdesi 2.Kısım', defval=21, minval=0.01)
tp3 = input.float(title='Kar Yüzdesi 3.Kısım', defval=29, minval=0.01)
tp4 = input.float(title='Kar Yüzdesi 4.Kısım', defval=34, minval=0.01)
strategy.exit('✨KS1', qty_percent=q1, profit=per1(tp1), loss=zarkeslos)
strategy.exit('✨KS2', qty_percent=q2, profit=per1(tp2), loss=zarkeslos)
strategy.exit('✨KS3', qty_percent=q3, profit=per1(tp3), loss=zarkeslos)
strategy.exit('✨KS4', qty_percent=q4, profit=per1(tp4), loss=zarkeslos)



مزید