
اس حکمت عملی میں برن بینڈ اشارے کا استعمال کیا جاتا ہے تاکہ پلاسٹک بریک پوائنٹس کو تلاش کیا جاسکے اور اس کے ساتھ ساتھ ایڈ ایکس اشارے کے ساتھ مل کر نیچے کی اتار چڑھاؤ کو فلٹر کرنے کے لئے ، رجحانات کی پیروی کی جاسکتی ہے۔
یہ حکمت عملی بنیادی طور پر بلین بینڈ اشارے کی بنیاد پر فاریکس ٹریڈنگ کے فوائد کا تعین کرنے کے لئے ہے۔ بلین بینڈ کی مرکزی لائن N دن کے اختتامی قیمتوں کی متحرک اوسط ہے ، اور بینڈوڈتھ کو معیاری فرق کے ذریعہ شمار کیا جاتا ہے۔ جب قیمت ٹوٹ جاتی ہے تو ، اسے ایک کثیر سگنل سمجھا جاتا ہے۔ جب قیمت ٹوٹ جاتی ہے تو ، اسے ایک خالی سر سگنل سمجھا جاتا ہے۔
اس حکمت عملی میں ایڈ ایکس اشارے کو شامل کیا گیا ہے تاکہ غیر رجحان کے رجحان میں ناکامی کے نتیجے میں غلط تجارت سے بچنے کے لئے۔ اس حکمت عملی میں کم اتار چڑھاؤ کے رجحان کو فلٹر کیا گیا ہے۔ خرید و فروخت کا اشارہ صرف اس وقت جاری کیا جاتا ہے جب ایڈ ایکس کی قیمت مقررہ حد سے کم ہو۔ جب ایڈ ایکس کی قیمت حد سے زیادہ ہو تو ، تمام پوزیشنوں کو ختم کردیں اور رجحان کی تبدیلی کا انتظار کریں۔
اس حکمت عملی میں ایک ریڈار اسٹاپ اور ایک اپ ٹریکنگ اسٹاپ بھی شامل ہے۔ خاص طور پر ، ہر پوزیشن کھولنے کے بعد ، اس سمت میں ریڈار اسٹاپ کے طور پر پچھلے N دن کی کم ترین قیمت درج کی جاتی ہے ، اور اس کی اعلی ترین قیمت اپ ٹریکنگ اسٹاپ کے طور پر درج کی جاتی ہے۔ اس سے منافع کو لاک کیا جاسکتا ہے ، اور اس کے ساتھ ساتھ ریڈار سے ہونے والے نقصان کو کم سے کم کرنے کی کوشش کی جاتی ہے۔
کوڈ کی منطق کے مطابق ، حکمت عملی پہلے بلین بینڈ اور ADX اشارے کے پیرامیٹرز کا حساب لگاتی ہے۔ اس کے بعد یہ فیصلہ کیا جاتا ہے کہ آیا قیمت بلین بینڈ کو توڑ کر نیچے کی طرف جارہی ہے یا نہیں ، اور اگر ADX کی قیمت قیمت سے کم ہے تو ، اگر اس کی تکمیل ہوتی ہے تو ، خرید و فروخت کا اشارہ ہوتا ہے۔ اس کے بعد ، پوزیشن رکھنے یا نہ رکھنے اور پوزیشن رکھنے کی سمت کے مطابق ، اصل وقت میں اپ ڈیٹ اور اسٹاپ نقصان کی پوزیشن کو ٹریک کریں۔
VALID کو توڑنے کو یقینی بنانے کے لئے دیگر اشارے کے ساتھ فیصلہ کن صلاحیت کی حمایت کرنے پر غور کیا جاسکتا ہے۔ ADX فلٹرنگ کے حالات کو بہتر بنائیں ، رجحان کی تبدیلی کے نقطہ کو معلوم کرنے کے لئے ADX منحنی خطوط کا استعمال کریں۔ اسٹاپ نقصان کی حد کو مناسب طریقے سے چھوڑیں ، تاکہ اس سے زیادہ قریب سے روکنے سے بچ سکیں۔
اس حکمت عملی کا مجموعی نظریہ واضح اور جامع ہے ، یہ واضح کثیر جہتی بریک سگنل کا فیصلہ کرنے کے لئے برن بینڈ کا استعمال کرتا ہے ، اور رجحانات کو لاک کرنے کے لئے غیر واضح رجحانات کو فلٹر کرنے کے لئے اے ڈی ایکس اشارے کا استعمال کرتا ہے۔ اس کے ساتھ ہی ، خطرے کو کنٹرول کرنے اور منافع کو لاک کرنے کے لئے ری سیٹ اسٹاپ اور ٹریکنگ اسٹاپ کا تعین کیا گیا ہے۔ اس حکمت عملی کو سمجھنا اور اس پر عمل درآمد کرنا آسان ہے ، اور اس کی مزید جانچ اور اصلاح کے قابل ہے ، اور یہ بنیادی رجحانات کی پیروی کرنے والی حکمت عملی بن سکتی ہے۔
/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
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/
// © tweakerID
// This strategy uses Bollinger Bands to buy when the price
// crosses over the lower band and sell when it crosses down
// the upper band. It only takes trades when the ADX is
// below a certain level, and exits all trades when it's above it.
//@version=4
strategy("BB + ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value = 0.04, initial_capital=100)
//Inputs
i_reverse=input(false, title="Reverse Trades")
i_ADXClose=input(true, title="ADX Close")
i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.5, title="SL Expander")
i_TPExpander=input(defval=0, step=.5, title="TP Expander")
//ADX Calculations
adxlen = input(14, title="ADX Smoothing")
dilen = input(20, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
adxlevel=input(30, step=5)
//BB Calculations
BBCALC=input(false, title="-----------BB Inputs-----------")
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
MAlen=input(defval=9)
source = close
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Entry Logic
BUY = crossover(source, lower) and sig < adxlevel
SELL = crossunder(source, upper) and sig < adxlevel
//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? LSL : isshort ? SSL : na
TP= islong ? lTP : isshort ? sTP : na
//Entries
strategy.entry("long", long=i_reverse?false:true, when=BUY)
strategy.entry("short", long=i_reverse?true:false, when=SELL)
//EXITS
if i_ADXClose
strategy.close_all(when=sig > adxlevel)
if i_SL
strategy.exit("longexit", "long", stop=SL, limit=TP)
strategy.exit("shortexit", "short", stop=SL, limit=TP)
//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")
plot(upper)
plot(lower)