
یہ ایک ایسی حکمت عملی ہے جو رجحان کا فیصلہ کرنے کے لئے مساوی لائن اور برلن چینل کا استعمال کرتی ہے اور اس میں فلٹرنگ اور اسٹاپ نقصان کے اصولوں کو توڑنے کے ساتھ ملتی ہے۔ یہ رجحان میں تبدیلی کے وقت سگنل کو بروقت پکڑ سکتا ہے ، غلط سگنل کو کم کرنے کے لئے ڈبل مساوی لائن فلٹرنگ کے ذریعہ ، اور خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی ترتیب دے سکتا ہے۔
اس حکمت عملی میں مندرجہ ذیل اجزاء شامل ہیں:
رجحانات کا تعین: قیمتوں کے رجحانات کا تعین کرنے کے لئے MACD کا استعمال کریں ، کثیر اور خالی سر کے رجحانات میں فرق کریں۔
رینج فلٹرنگ: قیمتوں میں اتار چڑھاو کی حد کا تعین کرنے کے لئے برلن چینل کا استعمال کریں ، اور حد سے تجاوز نہ کرنے والے سگنل کو فلٹر کریں۔
ڈبل میڈین لائن کی تصدیق: تیز رفتار ای ایم اے اور سست رفتار ای ایم اے پر مشتمل ڈبل میڈین لائن ، جو رجحان سگنل کی تصدیق کے لئے استعمال ہوتی ہے۔ خریداری کا سگنل صرف اس وقت پیدا ہوتا ہے جب تیز رفتار ای ایم اے> سست رفتار ای ایم اے ہو۔
اسٹاپ نقصان کا طریقہ کار: اسٹاپ نقصان کا مقام طے کریں ، اور جب قیمت منفی سمت میں اسٹاپ نقصان کے مقام کو توڑ دیتی ہے تو اس کی پوزیشن بند کردیں۔
اس کے علاوہ ، یہ بھی کہا گیا ہے کہ:
جب مذکورہ بالا تینوں شرائط ایک ساتھ ملیں تو خریدنے کا سگنل پیدا ہوتا ہے۔
فلیٹ پوزیشن کی منطق دو طرح کی ہوتی ہے ، فلیٹ پوزیشن کو روکنا اور فلیٹ پوزیشن کو روکنا۔ فلیٹ پوزیشن کو روکنے کے لئے داخلے کی قیمت کو ایک خاص تناسب سے ضرب دیا جاتا ہے ، اور فلیٹ پوزیشن کو داخلے کی قیمت کے لئے ایک خاص تناسب سے ضرب دیا جاتا ہے۔ جب قیمت ان میں سے کسی ایک نقطہ کو توڑ دیتی ہے۔ فلیٹ پوزیشن
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
ان خطرات کے لئے ، آپ کو پیرامیٹرز کو بہتر بنانے ، اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کرنے وغیرہ کے ذریعہ اصلاح اور بہتری لائی جاسکتی ہے۔
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
مختلف پیرامیٹرز کی ترتیبات کی جانچ پڑتال کرکے ، منافع اور شارپ تناسب کا اندازہ لگایا جاسکتا ہے تاکہ اس حکمت عملی کی بہترین حالت کا پتہ لگایا جاسکے۔
یہ ایک مقداری حکمت عملی ہے جو رجحانات کا اندازہ لگانے ، رینج فلٹرنگ ، ڈبل مساوی لائن کی تصدیق اور اسٹاپ نقصان کی سوچ کا استعمال کرتی ہے۔ یہ رجحانات کی سمت کا مؤثر انداز میں اندازہ لگانے اور منافع کو زیادہ سے زیادہ بنانے اور خطرے کو کنٹرول کرنے کے مابین توازن تلاش کرنے کے قابل ہے۔ اس حکمت عملی میں بہتری کی گنجائش ہے ، جس میں پیرامیٹرز کی اصلاح اور مشین لرننگ وغیرہ کے ذریعہ بہتری کی گنجائش ہے۔
/*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)