Reversal Bollinger Band Channel Oscillation Trend Strategy


تخلیق کی تاریخ: 2023-10-31 14:30:45 آخر میں ترمیم کریں: 2023-10-31 14:30:45
کاپی: 0 کلکس کی تعداد: 664
1
پر توجہ دیں
1617
پیروکار

Reversal Bollinger Band Channel Oscillation Trend Strategy

جائزہ

یہ بلینز چینل پر مبنی ایک ریورس ٹرانسمیشن ٹرینڈ حکمت عملی ہے۔ یہ بلینز چینل کے اوپر اور نیچے کے راستے کو رجحان کا فیصلہ کرنے کے لئے استعمال کرتا ہے اور جب قیمت چینل کی سرحد کے قریب ہوتی ہے تو واپسی کے مواقع تلاش کرنے کے لئے داخل ہوتا ہے۔

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

یہ حکمت عملی برن بینڈ اشارے کو بنیادی تکنیکی اشارے کے طور پر استعمال کرتی ہے۔ برن بینڈ n دن کی حرکت پذیری اوسط اور اس کے اوپر اور نیچے کی لہر کی حد سے بنا ہے ، برن بینڈ اپ ٹریک = n دن کی حرکت پذیری اوسط + m × n دن کا معیاری فرق ، برن بینڈ ڈاون ٹریک = n دن کی حرکت پذیری اوسط - m × n دن کا معیاری فرق۔ جہاں n اور m پیرامیٹرز ہیں۔

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

اس حکمت عملی کے لئے مخصوص تجارتی قواعد درج ذیل ہیں:

  1. جب اختتامی قیمت برلن کے اوپر سے زیادہ ہو تو زیادہ اندراج کریں؛ جب اختتامی قیمت برلن کے نیچے سے کم ہو تو اندراج کریں۔

  2. اسٹاپ اسٹاپ نقصان n دن کی متحرک اوسط کے ساتھ سگنل دیا گیا ہے۔ اسٹاپ اسٹاپ اس وقت چلتا ہے جب ملٹی سنگل اختتامی قیمت n دن کی اوسط لائن کو توڑ دیتی ہے۔ اسٹاپ نقصان اس وقت ہوتا ہے جب خالی سنگل اختتامی قیمت n دن کی اوسط لائن کو توڑ دیتی ہے۔

  3. فکسڈ ٹرانزیکشنز کا استعمال کرتے ہوئے، ہر ٹرانزیکشن کی تعداد مقرر کی جاتی ہے.

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

طاقت کا تجزیہ

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

  1. برن بیلٹ چینل کا استعمال کرتے ہوئے رجحانات کی سمت کا تعین کریں ، مخالف سمت کی تجارت کی حکمت عملی اپنائیں ، قیمتوں میں ممکنہ الٹ کے وقت داخل ہوں ، زیادہ تر جھٹکے سے بچیں ، اور جیت کی شرح کو بہتر بنائیں۔

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

  3. فکسڈ حجم کی حکمت عملی سادہ اور آسان ہے اور اس میں پیچیدہ حساب کتاب کی ضرورت نہیں ہے۔

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

خطرے کا تجزیہ

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

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

  2. حرکت پذیر اوسط کے پیچھے رہ جانے کی وجہ سے اسٹاپنگ ناکافی ہوسکتی ہے۔

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

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

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

اصلاح کی سمت

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

  1. برین بینڈ کے پیرامیٹرز کو بہتر بنائیں ، جیسے n اور m اقدار کو ایڈجسٹ کریں ، اور برین بینڈ کے راستے کی درستگی کو بہتر بنائیں۔

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

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

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

  5. خطرے کو مزید کنٹرول کرنے کے لئے اسٹاپ اسٹریٹجی شامل کریں ، جیسے کہ چلنے والی اسٹاپ ، وقفہ توڑنے والی اسٹاپ وغیرہ۔

  6. پیرامیٹرز کو بہتر بنائیں ، پیرامیٹرز کے مجموعے کو خود بخود بہتر بنائیں ، حکمت عملی کو بہتر بنانے کے لئے بہترین پیرامیٹرز تلاش کریں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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))