اس حکمت عملی میں بولنگر بینڈ کا استعمال طویل اور مختصر تجارت کے لئے بریک آؤٹ پوائنٹس کی نشاندہی کرنے کے لئے کیا جاتا ہے، جس میں ADX اشارے کے ساتھ مل کر رجحانات کی پیروی کرنے کے لئے کم اتار چڑھاؤ کے ساتھ غیر سازگار مارکیٹ کے حالات کو فلٹر کرنے کے لئے استعمال کیا جاتا ہے۔
یہ حکمت عملی بنیادی طور پر طویل یا مختصر سمت کا تعین کرنے کے لئے بولنگر بینڈ اشارے پر مبنی ہے۔ بولنگر بینڈ کا وسط بینڈ اختتامی قیمت کا N دن کا اوسط اوسط ہے ، اور بینڈ کی چوڑائی کا حساب معیاری انحراف کا استعمال کرتے ہوئے کیا جاتا ہے۔ نچلے بینڈ سے نیچے کا بریک آؤٹ لمبی تجارت کا اشارہ کرتا ہے ، جبکہ اوپری بینڈ سے اوپر کا بریک آؤٹ مختصر تجارت کا اشارہ کرتا ہے۔
غیر رجحان سازی والے متزلزل بازاروں میں غلط خرابیوں اور غلط تجارتوں سے بچنے کے ل the ، حکمت عملی میں کم اتار چڑھاؤ والی مارکیٹ کے حالات کو فلٹر کرنے کے لئے ADX اشارے شامل ہیں۔ تجارتی سگنل صرف اس وقت پیدا ہوتے ہیں جب ADX کی قیمت کسی حد سے نیچے ہوتی ہے۔ جب ADX حد سے اوپر جاتا ہے تو ، رجحان سازی کے حالات کا انتظار کرنے کے لئے تمام پوزیشنیں بند کردی جاتی ہیں۔
حکمت عملی میں کھلی تجارتوں کے لئے ٹریلنگ اسٹاپ نقصان اور منافع حاصل کرنا بھی طے ہوتا ہے۔ خاص طور پر ، پوزیشن کھولنے کے بعد ، پچھلے N دنوں کی کم سے کم قیمت اور سب سے زیادہ قیمت کو اسٹاپ نقصان کے طور پر ریکارڈ کیا جاتا ہے اور اس سمت کے لئے منافع کی سطح حاصل کی جاتی ہے۔ اس سے واپسی سے ہونے والے نقصانات کو کم کرتے ہوئے منافع میں تالے لگانے کی اجازت ملتی ہے۔
کوڈ منطق سے ، حکمت عملی پہلے بولنگر بینڈ اور ADX پیرامیٹرز کا حساب لگاتی ہے۔ پھر یہ چیک کرتی ہے کہ آیا قیمت بینڈ کے اوپری یا نچلے بینڈ کو توڑتی ہے ، اور اگر ADX تجارتی سگنل پیدا کرنے کے لئے حد سے نیچے ہے تو۔ اس کے بعد اسٹاپ نقصان اور منافع کی سطح کو متحرک طور پر اپ ڈیٹ کیا جاتا ہے اور موجودہ پوزیشن کی سمت کی بنیاد پر ٹریک کیا جاتا ہے۔
حجم کے ساتھ بریک آؤٹ کی تصدیق کرنے کے لئے دوسرے اشارے کے ساتھ مل کر غور کریں۔ رجحان کی تبدیلیوں کی نشاندہی کرنے کے لئے ڈھلوان کا استعمال کرتے ہوئے 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)