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


تخلیق کی تاریخ: 2023-11-27 17:03:08 آخر میں ترمیم کریں: 2023-11-27 17:03:08
کاپی: 0 کلکس کی تعداد: 689
1
پر توجہ دیں
1617
پیروکار

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

جائزہ

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

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

اس حکمت عملی میں مندرجہ ذیل اجزاء شامل ہیں:

  1. رجحانات کا تعین: قیمتوں کے رجحانات کا تعین کرنے کے لئے MACD کا استعمال کریں ، کثیر اور خالی سر کے رجحانات میں فرق کریں۔

  2. رینج فلٹرنگ: قیمتوں میں اتار چڑھاو کی حد کا تعین کرنے کے لئے برلن چینل کا استعمال کریں ، اور حد سے تجاوز نہ کرنے والے سگنل کو فلٹر کریں۔

  3. ڈبل میڈین لائن کی تصدیق: تیز رفتار ای ایم اے اور سست رفتار ای ایم اے پر مشتمل ڈبل میڈین لائن ، جو رجحان سگنل کی تصدیق کے لئے استعمال ہوتی ہے۔ خریداری کا سگنل صرف اس وقت پیدا ہوتا ہے جب تیز رفتار ای ایم اے> سست رفتار ای ایم اے ہو۔

  4. اسٹاپ نقصان کا طریقہ کار: اسٹاپ نقصان کا مقام طے کریں ، اور جب قیمت منفی سمت میں اسٹاپ نقصان کے مقام کو توڑ دیتی ہے تو اس کی پوزیشن بند کردیں۔

اس کے علاوہ ، یہ بھی کہا گیا ہے کہ:

  1. MACD اوپر کی طرف بڑھ رہا ہے
  2. قیمتوں میں بلین چینل کو توڑنے کی کوشش
  3. تیز EMA سست EMA سے زیادہ ہے

جب مذکورہ بالا تینوں شرائط ایک ساتھ ملیں تو خریدنے کا سگنل پیدا ہوتا ہے۔

فلیٹ پوزیشن کی منطق دو طرح کی ہوتی ہے ، فلیٹ پوزیشن کو روکنا اور فلیٹ پوزیشن کو روکنا۔ فلیٹ پوزیشن کو روکنے کے لئے داخلے کی قیمت کو ایک خاص تناسب سے ضرب دیا جاتا ہے ، اور فلیٹ پوزیشن کو داخلے کی قیمت کے لئے ایک خاص تناسب سے ضرب دیا جاتا ہے۔ جب قیمت ان میں سے کسی ایک نقطہ کو توڑ دیتی ہے۔ فلیٹ پوزیشن

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے۔

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

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات بھی ہیں:

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

ان خطرات کے لئے ، آپ کو پیرامیٹرز کو بہتر بنانے ، اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کرنے وغیرہ کے ذریعہ اصلاح اور بہتری لائی جاسکتی ہے۔

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

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

مختلف پیرامیٹرز کی ترتیبات کی جانچ پڑتال کرکے ، منافع اور شارپ تناسب کا اندازہ لگایا جاسکتا ہے تاکہ اس حکمت عملی کی بہترین حالت کا پتہ لگایا جاسکے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Range Filter Buy and Sell Strategies", shorttitle="Range Filter Strategies", overlay=true,pyramiding = 5)

// Original Script > @DonovanWall
// Adapted Version > @guikroth
// 
// Updated PineScript to version 5
// Republished by > @tvenn
// Strategizing by > @RonLeigh
//////////////////////////////////////////////////////////////////////////
// Settings for 5min chart, BTCUSDC. For Other coin, change the parameters
//////////////////////////////////////////////////////////////////////////



SS = input.bool(false,"Percentage Take Profit Stop Loss")


longProfitPerc = input.float(title='LongProfit(%)', minval=0.0, step=0.1, defval=1.5) * 0.01

shortProfitPerc = input.float(title='ShortProfit(%)', minval=0.0, step=0.1, defval=1.5) * 0.01


longLossPerc = input.float(title='LongStop(%)', minval=0.0, step=0.1, defval=1.5) * 0.01

shortLossPerc = input.float(title='ShortStop(%)', minval=0.0, step=0.1, defval=1.5) * 0.01


// Color variables
upColor   = color.white
midColor  = #90bff9
downColor = color.blue

// Source
src = input(defval=close, title="Source")

// Sampling Period
// Settings for 5min chart, BTCUSDC. For Other coin, change the paremeters
per = input.int(defval=100, minval=1, title="Sampling Period")

// Range Multiplier
mult = input.float(defval=3.0, minval=0.1, title="Range Multiplier")

// Smooth Average 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
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

// Colors
filtcolor = upward > 0 ? upColor : downward > 0 ? downColor : midColor
barcolor = src > filt and src > src[1] and upward > 0 ? upColor :
   src > filt and src < src[1] and upward > 0 ? upColor : 
   src < filt and src < src[1] and downward > 0 ? downColor : 
   src < filt and src > src[1] and downward > 0 ? downColor : midColor

filtplot = plot(filt, color=filtcolor, linewidth=2, title="Range Filter")

// Target
hbandplot = plot(hband, color=color.new(upColor, 70), title="High Target")
lbandplot = plot(lband, color=color.new(downColor, 70), title="Low Target")

// Fills
fill(hbandplot, filtplot, color=color.new(upColor, 90), title="High Target Range")
fill(lbandplot, filtplot, color=color.new(downColor, 90), title="Low Target Range")

// Bar Color
barcolor(barcolor)

// Break Outs
longCond = bool(na)
shortCond = bool(na)
longCond := src > filt and src > src[1] and upward > 0 or 
   src > filt and src < src[1] and upward > 0
shortCond := src < filt and src < src[1] and downward > 0 or 
   src < filt and src > src[1] and downward > 0

CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1



// alertcondition(longCondition, title="Buy alert on Range Filter", message="Buy alert on Range Filter")
// alertcondition(shortCondition, title="Sell alert on Range Filter", message="Sell alert on Range Filter")
// alertcondition(longCondition or shortCondition, title="Buy and Sell alert on Range Filter", message="Buy and Sell alert on Range Filter")


////////////// 副

sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='FastEMA Length')
slowLength = input(40, title='SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
multt = input(2.0, title='BB Stdev Multiplier')

DEAD_ZONE = nz(ta.rma(ta.tr(true), 100)) * 3.7

calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

calc_BBUpper(source, length, multt) =>
    basis = ta.sma(source, length)
    dev = multt * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, multt) =>
    basis = ta.sma(source, length)
    dev = multt * ta.stdev(source, length)
    basis - dev

t1 = (calc_macd(close, fastLength, slowLength) - calc_macd(close[1], fastLength, slowLength)) * sensitivity

e1 = calc_BBUpper(close, channelLength, multt) - calc_BBLower(close, channelLength, multt)

trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

duoad = trendUp > 0 and trendUp > e1

kongad = trendDown > 0 and trendDown > e1



duo =  longCondition and duoad

kong = shortCondition and kongad


//Alerts
plotshape(longCondition  and trendUp > e1 and  trendUp > 0 , title="Buy Signal", text="Buy", textcolor=color.white, style=shape.labelup, size=size.small, location=location.belowbar, color=color.new(#aaaaaa, 20))
plotshape(shortCondition  and trendDown > e1 and  trendDown > 0 , title="Sell Signal", text="Sell", textcolor=color.white, style=shape.labeldown, size=size.small, location=location.abovebar, color=color.new(downColor, 20))




if  longCondition and trendUp > e1 and  trendUp > 0 
    strategy.entry('Long',strategy.long, comment = "buy" )

if  shortCondition and trendDown > e1 and  trendDown > 0 
    strategy.entry('Short',strategy.short, comment = "sell" )




longlimtPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortlimtPrice = strategy.position_avg_price * (1 - shortProfitPerc)
   
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)



if (strategy.position_size > 0)  and SS == true
    
    strategy.exit(id="Long",comment_profit = "Profit",comment_loss = "StopLoss", stop=longStopPrice,limit = longlimtPrice)
    

if (strategy.position_size < 0)  and SS == true
    
    strategy.exit(id="Short",comment_profit = "Profit",comment_loss = "StopLoss", stop=shortStopPrice,limit = shortlimtPrice)