حکمت عملی کے بعد بولنگر بینڈ پر مبنی رجحان


تخلیق کی تاریخ: 2024-01-15 14:31:21 آخر میں ترمیم کریں: 2024-01-15 14:31:21
کاپی: 0 کلکس کی تعداد: 325
1
پر توجہ دیں
1166
پیروکار

حکمت عملی کے بعد بولنگر بینڈ پر مبنی رجحان

جائزہ

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

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

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

  1. وسط لائن: n دن کی اوسط
  2. اوپر کی لائن: n دن کے معیاری فرق کے ساتھ اوپر کی طرف منتقل
  3. نیچے کی لائن: نیچے کی طرف منتقل کریں n دن کے معیاری فرق کے فاصلے پر

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

اس کے علاوہ، اس کی حکمت عملی یہ ہے کہ:

  1. جب بند ہونے والی قیمتیں بینڈ سے نیچے کی لائن سے ٹوٹ کر آن لائن ہوجائیں تو زیادہ انٹری کریں
  2. جب بند ہونے والی قیمتوں میں بینڈ سے اوپر کی لائن سے نیچے کی لائن کو توڑ دیا جاتا ہے تو ، کالعدم ہو جاتا ہے

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

یہاں ایکسپونینشل موونگ ایوریج کو میڈین لائن کے طور پر استعمال کیا گیا ہے۔

اس حکمت عملی کے مطابق، اس طرح کے رجحانات کا اندازہ لگایا جاسکتا ہے:

  1. زیادہ سگنل بنائیں: بندش کی قیمت اوسط لائن کو توڑنے کے لئے بندش کی قیمت کو توڑنے کے لئے بندش کی قیمت کو توڑنے کے لئے
  2. خالی کرنے کا اشارہ: بندش کی قیمت بینڈ نیچے کی لائن سے ٹوٹ گئی && بندش کی قیمت اوسط لائن سے ٹوٹ گئی

داخل ہونے کے بعد ، اسٹاپ کا طریقہ درمیانی لائن کو ٹریک کرنا ہے۔ جب قیمت دوبارہ درمیانی لائن کو چھوتی ہے تو ، اسٹاپ سے باہر نکلیں۔

طاقت کا تجزیہ

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

  1. بینڈ چینل میں قیمتوں میں اتار چڑھاؤ کی گنجائش ہے ، اور بریک چینل کی قیمتوں میں نئی سمت کی تشکیل شروع ہوتی ہے۔
  2. ہم آہنگ لائن فلٹرنگ کے ساتھ ، جعلی بریک کی پریشانی سے بچنے کے لئے ، اس بات کو یقینی بنائیں کہ جب رجحان کا رخ موڑنے کا واقعتا.
  3. ایک بلٹ ان اسٹاپ میکانیزم کے ساتھ ، جب قیمتیں بینڈس کے وسط لائن میں واپس آجائیں تو فعال اسٹاپ ، جو خطرے کو مؤثر طریقے سے کنٹرول کرتی ہے۔
  4. حکمت عملی کی منطق سادہ اور واضح ہے ، آسانی سے سمجھنے اور اس پر عمل درآمد کرنے کے لئے ، جو تجارت کی مقدار کے لئے مناسب ہے۔
  5. بینڈ چینل اور اوسط لائن اشارے کا استعمال کرتے ہوئے ، قیمت کی پیش گوئی کرنے کی ضرورت نہیں ہے ، رجحانات کو بعد کے شواہد پر مبنی اندازہ لگانے کے لئے ، پیچھے کی پیمائش بہتر ہے۔

خطرے کا تجزیہ

اگرچہ اس حکمت عملی کے کچھ فوائد ہیں ، لیکن اس کے ساتھ کچھ خطرات بھی ہیں:

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

مندرجہ بالا خطرات کو کنٹرول کرنے کے لئے ، آپ کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

  1. بینڈ کے پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کریں ، چینل کی چوڑائی میں اضافہ کریں ، اور جھوٹے توڑنے کے امکانات کو کم کریں
  2. مختلف اقسام اور لمبائی کی اوسط لائنوں کو آزمائیں اور بہترین مجموعہ تلاش کریں
  3. ٹرینڈ ٹریکنگ اسٹاپ یا مرحلہ وار اسٹاپ منتقل کرنے جیسے دیگر اسٹاپ طریقوں کی کوشش کریں

اصلاح کی سمت

مندرجہ بالا خطرے کے تجزیہ کے مطابق، اس حکمت عملی کو مزید بہتر بنایا جا سکتا ہے:

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

  2. سٹاپ نقصان کی اصلاح: نقصان کے مختلف طریقوں کی جانچ کریں ، جیسے اے ٹی آر اسٹاپ ، ٹریکنگ اسٹاپ وغیرہ ، تاکہ نقصان کو روکنے کا بہترین طریقہ کار طے کیا جاسکے۔

  3. فلٹر کو بہتر بنانا: دیگر اشارے شامل کرنے کی کوشش کریں ، جیسے آر ایس آئی ، کے ڈی وغیرہ اضافی فلٹرنگ شرائط کے طور پر ، جعلی سگنل کے امکانات کو کم کریں ، اور منافع کی شرح کو بہتر بنائیں۔

  4. داخلے کی شرائط میں بہتری: رجحانات کا اندازہ لگانے ، غیر فعال VOLUME جیسے دیگر عوامل کو شامل کریں ، داخلے کے وقت کو سختی سے منتخب کریں ، غیر ضروری پوزیشنوں کو کم کریں۔

  5. مشین لرننگ: مزید تاریخی اعداد و شمار جمع کریں ، ایل ایس ٹی ایم ، آر این این اور دیگر گہری سیکھنے کے ماڈل کا استعمال کرتے ہوئے ماڈلنگ کریں ، اور اے آئی کا استعمال بہترین انٹری اور آؤٹ پٹ پوائنٹس کا تعین کرنے کے لئے کریں۔

  6. خطرے اور منافع کی حرکیات کا انتظام: فکسڈ تناسب اسٹاپ اسٹاپ نقصان ، منافع کے ہدف کے بعد اسٹاپ مارجن میں اضافہ ، متحرک طور پر خطرے اور منافع کا انتظام کرنا۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//VERSION =================================================================================================================
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// This strategy is intended to study.
// It can also be used to signal a bot to open a deal by providing the Bot ID, email token and trading pair in the strategy settings screen.
// As currently written, this strategy uses a Bollinger Bands for trend folling, you can use a EMA as a filter.
//Autor Credsonb (M4TR1X_BR)

//▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
//STRATEGY ================================================================================================================

strategy(title = 'BT-Bollinger Bands - Trend Following',
         shorttitle = 'BBTF',
         overlay = true )


//▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
// CONFIG =================================================================================================================

// TIME INPUTS
usefromDate = input.bool(defval = true, title = 'Start date', inline = '0', group = "Time Filters")
initialDate = input(defval = timestamp('01 Jan 2022 00:00 UTC'), title = '', inline = "0",group = 'Time Filters',tooltip="This start date is in the time zone of the exchange ")
usetoDate = input.bool(defval = true, title = 'End date', inline = '1', group = "Time Filters")
finalDate = input(defval = timestamp('31 Dec 2029 23:59 UTC'), title = '', inline = "1",group = 'Time Filters',tooltip="This end date is in the time zone of the exchange")

// TIME LOGIC 
inTradeWindow = true

// ENABLE LONG SHORT OPTIONS
string entrygroup ='Long/Short Options ==================================='
checkboxLong = input.bool(defval=true, title="Enable Long Entrys",group=entrygroup)
checkboxShort = input.bool(defval=true, title="Enable Short Entrys",group=entrygroup)


// BOLLINGER BANDS INPUTS ==================================================================================================
string bbgroup ='Bollinger Bands ======================================'
bbLength = input.int(defval=20,title='BB Length', minval=1, step=5, group=bbgroup)
bbStddev = input.float(defval=2, title='BB StdDev', minval=0.5, group=bbgroup)

//BOLLINGER BANDS LOGIC
[bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLength, bbStddev)


// MOVING AVERAGES INPUTS ================================================================================================
string magroup =  'Moving Average ======================================='
useEma = input.bool(defval = true, title = 'Moving Average Filter',inline='', group= magroup,tooltip='This will enable or disable Exponential Moving Average Filter on Strategy')
emaType=input.string (defval='Ema',title='Type',options=['Ema','Sma'],inline='', group= magroup)
emaSource = input.source(defval=close,title="  Source",inline="", group= magroup)
emaLength = input.int(defval=100,title="Length",minval=0,inline='', group= magroup)

// MOVING AVERAGE LOGIC
float ema = emaType=='Ema'? ta.ema(emaSource,emaLength): ta.sma(emaSource,emaLength)

// BOT MESSAGES
string msgroup='Alert Message For Bot ================================'
messageEntry = input.string("", title="Strategy Entry Message",group=msgroup)
messageExit  =input.string("",title="Strategy Exit Message",group=msgroup)
messageClose = input.string("", title="Strategy Close Message",group=msgroup)




// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
// POSITIONS =============================================================================================================

//VERIFY IF THE BUY FILTERS ARE ON OR OFF 
bool emaFilterBuy = useEma? (close > ema):(close >= ema) or (close <= ema)                      

//LONG / SHORT POSITIONS LOGIC
bool openLongPosition  = (close[1] < bbUpper) and (close > bbUpper)   and (emaFilterBuy)
bool openShortPosition = (close[1] > bbLower) and (close < bbLower) and (emaFilterBuy)
//bool closeLongPosition = (close > bbMiddle)
//bool closeShortPosition= (close < bbLower)


// CHEK OPEN POSITONS =====================================================================================================
// open signal when not already into a position
bool validOpenLongPosition = openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) <= 0
bool longIsActive = validOpenLongPosition or strategy.opentrades.size(strategy.opentrades - 1) > 0

bool validOpenShortPosition = openShortPosition and strategy.opentrades.size(strategy.opentrades - 1) <= 0
bool shortIsActive = validOpenShortPosition or strategy.opentrades.size(strategy.opentrades - 1) < 0

longEntryPoint = high
if (openLongPosition) and (inTradeWindow) and (checkboxLong)
    strategy.entry(id = 'Long Entry', direction = strategy.long, stop = longEntryPoint, alert_message=messageEntry)

if not (openLongPosition)
    strategy.cancel('Long Entry')

//submit exit orders for trailing take profit price 
if (longIsActive) and (inTradeWindow)
    strategy.exit(id = 'Long Exit',  stop=bbMiddle, alert_message=messageExit)

//if (closeLongPosition)
   // strategy.close(id = 'Long Entry', alert_message=messageClose)
      

shortEntryPoint = low 
if (openShortPosition) and (inTradeWindow) and (checkboxShort)
    strategy.entry(id = 'Short Entry', direction = strategy.short, stop = shortEntryPoint, alert_message=messageEntry)

if not(openShortPosition)
    strategy.cancel('Short Entry')

if (shortIsActive)
    strategy.exit(id = 'Short Exit',  stop = bbMiddle, alert_message=messageExit)

//if (closeShortPosition)
    //strategy.close(id = 'Short Close', alert_message=messageClose)

// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
// PLOTS ===============================================================================================================

// TRADE WINDOW ========================================================================================================
bgcolor(color = inTradeWindow ? color.new(#089981,90):na, title = 'Time Window')

// EMA/SMA 
var emafilterColor = color.new(color.white, 0)
plot(series=useEma? ema:na, title = 'EMA Filter', color = emafilterColor, linewidth = 2, style = plot.style_line)

// BOLLINGER BANDS
plot(series=bbUpper, title = "Upper Band", color = color.aqua)//, display = display.none)
plot(series=bbMiddle, title = "MA Band", color = color.red)//, display = display.none)
plot(series=bbLower, title = "Lower Band", color = color.aqua)//, display = display.none)

// PAINT BARS COLORS
bool bulls = (close[1] < bbUpper[1]) and (close > bbUpper)
bool bears = (close[1] > bbLower [1]) and (close < bbLower)
neutral_color = color.new(color.black, 100)
barcolors = bulls ? color.green : bears ? color.red : neutral_color
barcolor(barcolors)

// ======================================================================================================================