بولنگر بینڈس الٹ آسنسیلیشن ٹرینڈ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-31 14:30:45
ٹیگز:

img

جائزہ

یہ بولنگر بینڈ چینل پر مبنی الٹ پھیر نوسن رجحان کی حکمت عملی ہے۔ یہ رجحان کا تعین کرنے کے لئے بولنگر بینڈ کے اوپری اور نچلے چینل کا استعمال کرتا ہے ، اور جب قیمت چینل کی حدود کے قریب آجاتی ہے تو الٹ پھیر کے مواقع تلاش کرتا ہے۔

حکمت عملی منطق

اس حکمت عملی میں بولنگر بینڈ کو اہم تکنیکی اشارے کے طور پر استعمال کیا جاتا ہے۔ بولنگر بینڈ میں این پیریڈ کی حرکت پذیر اوسط اور اوپری / نچلی بینڈ کے انحراف پر مشتمل ہوتا ہے۔ اوپری بینڈ = این پیریڈ ایم اے + ایم * این پیریڈ معیاری انحراف ، نچلی بینڈ = این پیریڈ ایم اے - ایم * این پیریڈ معیاری انحراف۔ این اور ایم پیرامیٹر ہیں۔

جب قیمت اوپری بینڈ کی طرف بڑھتی ہے تو ، یہ ایک اپ ٹرینڈ کی نشاندہی کرتی ہے لیکن چوٹی پر الٹ سکتی ہے۔ جب قیمت نچلی بینڈ کی طرف بڑھتی ہے تو ، یہ ایک ڈاؤن ٹرینڈ کی نشاندہی کرتی ہے لیکن نیچے کی طرف الٹ سکتی ہے۔ بولنگر بینڈ کی موثر خرابی ممکنہ الٹ کی نشاندہی کرسکتی ہے۔

تجارت کے مخصوص قوانین یہ ہیں:

  1. قریب > اوپری بینڈ پر طویل جانا، قریب < نچلے بینڈ پر مختصر جانا.

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

  3. ہر تجارت کے لئے مقررہ مقدار کا استعمال کریں.

  4. مقررہ جزوی پوزیشن سائزنگ کا استعمال کریں۔ مقررہ منافع تناسب کو پورا کرتے وقت پوزیشن سائز کو مقررہ رقم سے بڑھائیں ، نقصان کے وقت سائز کو کم کریں۔

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

اس حکمت عملی کے فوائد:

  1. رجحان کی سمت اور تجارت کی تبدیلیوں کا تعین کرنے کے لئے بولنگر بینڈ چینل کا استعمال کرتے ہوئے ، زیادہ تر وِپساؤ سے بچتا ہے اور جیت کی شرح کو بہتر بناتا ہے۔

  2. چلتی اوسط ایک قابل اعتماد منافع لینے / سٹاپ نقصان سگنل ہے، زیادہ تر منافع میں تالے.

  3. مقررہ مقدار آسان اور آسان ہے، پیچیدہ حساب کی ضرورت نہیں ہے.

  4. فکسڈ فریکشنل پوزیشن سائزنگ منافع میں توسیع کرتی ہے جبکہ پوزیشن ایڈجسٹمنٹ کے ذریعے خطرے کو کنٹرول کرتی ہے۔

خطرے کا تجزیہ

اس حکمت عملی کے خطرات:

  1. بولنگر بینڈ غلط سگنل پیدا کر سکتے ہیں، جس سے رجحان کے خلاف تجارت میں نقصان ہوتا ہے۔

  2. چلتی اوسط کی تاخیر سے ناکافی منافع حاصل ہوسکتا ہے۔

  3. فکسڈ مقدار مارکیٹ کے حالات کے مطابق نہیں بن سکتی، پوزیشن سائزنگ سے زیادہ یا کم ہونے کا خطرہ ہے۔

  4. فکسڈ فریکشنل طریقہ کار میں پوزیشن سائزنگ کی جارحانہ ایڈجسٹمنٹ نقصانات کو بڑھا سکتی ہے۔

حل: سگنل کی درستگی کو بہتر بنانے کے لئے بولنگر بینڈ پیرامیٹرز کو بہتر بنائیں۔ رجحان کا تعین کرنے کے لئے دوسرے اشارے شامل کریں۔ مقررہ مقدار کے سائز کو کم کریں۔ جزوی پوزیشن سائزنگ کے طریقہ کار میں پوزیشن سائزنگ ایڈجسٹمنٹ تناسب کو کم کریں۔

بہتری کی ہدایات

اسٹریٹیجی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  1. درستگی بڑھانے کے لئے این اور ایم جیسے بولنگر بینڈ پیرامیٹرز کو بہتر بنائیں.

  2. غلط سگنل سے بچنے کے لیے MACD، KD جیسے دیگر اشارے شامل کریں۔

  3. مقررہ مقدار کو مارکیٹ کے حالات کی بنیاد پر متحرک پوزیشننگ میں تبدیل کریں۔

  4. کم پوزیشن سائزنگ ایڈجسٹمنٹ ریشو فریکشنل پوزیشن سائزنگ میں ہموار ایکویٹی وکر کے لئے۔

  5. سٹاپ نقصان کی حکمت عملی شامل کریں جیسے اسٹاپ نقصان کو منتقل کرنا، خطرے کو کنٹرول کرنے کے لئے روکنے کے نقصان کو روکنا.

  6. بہترین پیرامیٹر مجموعے تلاش کرنے کے لئے پیرامیٹر کی اصلاح.

خلاصہ

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


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
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/
// © gsanson66


//This strategy uses the well-known Bollinger Bands Indicator
//@version=5
strategy("BOLLINGER BANDS BACKTESTING", shorttitle="BB BACKTESTING", overlay=true, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18)


//----------------------------------------FUNCTIONS---------------------------------------//

//@function Displays text passed to `txt` when called.
debugLabel(txt, color) =>
    label.new(bar_index, high, text = txt, color=color, style = label.style_label_lower_right, textcolor = color.black, size = size.small)

//@function which looks if the close date of the current bar falls inside the date range
inBacktestPeriod(start, end) => (time >= start) and (time <= end)


//---------------------------------------USER INPUTS--------------------------------------//

//Technical parameters
bbLength = input.int(defval=20, minval=1, title="BB Length", group="Technical Parameters")
mult = input.float(defval=2, minval=0.1, title="Standard Deviation Multipler", group="Technical Parameters")
smaLength = input.int(defval=20, minval=1, title="SMA Exit Signal Length", group="Technical Parameters")
//Money Management
fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management")
increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management")
//Backtesting period
startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period")
endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period")


//----------------------------------VARIABLES INITIALISATION-----------------------------//
strategy.initial_capital = 50000
//Exit SMA
smaExit = ta.sma(close, smaLength)
//BB Calculation
basis = ta.sma(close, bbLength)
dev = mult * ta.stdev(close, bbLength)
upperBB = basis + dev
lowerBB = basis - dev
//Money management
equity = strategy.equity - strategy.openprofit
var float capital_ref = strategy.initial_capital
var float cashOrder = strategy.initial_capital * 0.95
//Backtesting period
bool inRange = na


//------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------//

//Checking if the date belong to the range
inRange := true

//Checking performances of the strategy
if equity > capital_ref + fixedRatio
    spread = (equity - capital_ref)/fixedRatio
    nb_level = int(spread)
    increasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder + increasingOrder
    capital_ref := capital_ref + nb_level*fixedRatio
if equity < capital_ref - fixedRatio
    spread = (capital_ref - equity)/fixedRatio
    nb_level = int(spread)
    decreasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder - decreasingOrder
    capital_ref := capital_ref - nb_level*fixedRatio

//Checking if we close all trades in case where we exit the backtesting period
if strategy.position_size!=0 and not inRange
    strategy.close_all()
    debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116))


//-----------------------------------EXIT SIGNAL------------------------------//

if strategy.position_size > 0 and close < smaExit
    strategy.close("Long")
if strategy.position_size < 0 and close > smaExit
    strategy.close("Short")


//----------------------------------LONG/SHORT CONDITION---------------------------//

//Long Condition
if close > upperBB and inRange
    qty = cashOrder/close
    strategy.entry("Long", strategy.long, qty)
//Short Condition
if close < lowerBB and inRange
    qty = cashOrder/close
    strategy.entry("Short", strategy.short, qty)


//---------------------------------PLOTTING ELEMENT----------------------------------//

plot(smaExit, color=color.orange)
upperBBPlot = plot(upperBB, color=color.blue)
lowerBBPlot = plot(lowerBB, color=color.blue)
fill(upperBBPlot, lowerBBPlot, title = "Background", color=strategy.position_size>0 ? color.rgb(0, 255, 0, 90) : strategy.position_size<0 ? color.rgb(255, 0, 0, 90) : color.rgb(33, 150, 243, 95))


مزید