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


تخلیق کی تاریخ: 2024-01-24 11:05:56 آخر میں ترمیم کریں: 2024-01-24 11:05:56
کاپی: 0 کلکس کی تعداد: 949
1
پر توجہ دیں
1617
پیروکار

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

جائزہ

یہ حکمت عملی ایک مارکیٹر کی حکمت عملی ہے جس میں برن بینڈ کو اندراجات کے طور پر استعمال کیا جاتا ہے ، ایک چلتی اوسط کو قریب کے طور پر استعمال کیا جاتا ہے ، اور ایک سادہ اسٹاپ نقصان فیصد کو نقصان کے طور پر استعمال کیا جاتا ہے۔ اس نے جون 2022 میں xtbtusd معاہدے پر انتہائی منافع حاصل کیا۔

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

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

اس کے علاوہ ، اس حکمت عملی میں متحرک اوسط کو بھی بیعانہ کی بنیاد کے طور پر استعمال کیا جاتا ہے۔ جب آپ کے پاس بہت سارے آرڈر ہوں تو ، اگر قیمت متحرک اوسط سے زیادہ ہو تو ، آپ اسے منتخب کریں گے۔ اسی طرح ، جب آپ کے پاس خالی آرڈر ہوں تو ، اگر قیمت متحرک اوسط سے کم ہو تو ، آپ اسے بھی منتخب کریں۔

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

طاقت کا تجزیہ

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

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

خطرے کا تجزیہ

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

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

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

اصلاح کی سمت

اس حکمت عملی میں مزید اصلاحات کی گنجائش موجود ہے:

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

خلاصہ کریں۔

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

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

//@version=3
strategy(shorttitle="BBL", title="BB limit", overlay = true)


length = input(200, minval=1)
src = input(hlc3, title="Source")
xmult = input(44, minval=0.001, maxval=5000, title = "bb mult (0.1%)")
s = input(title="Trend source", defval = "sma", options = ["ema", "sma", "rma", "wma"])
basis = s == "ema" ? ema(src, length) : s == "sma" ? sma(src, length) : s =="rma" ? rma(src, length) : wma(src, length)
sd = input(title="Dev source", defval = "stdev", options = ["stdev", "dev"])
mult = xmult / 10  
dev = sd == "stdev" ? mult * stdev(src, length) : mult * dev(src, length)
diff = input(0.5, title = "Spread")
LongPrice(p) =>
    LongPrice = diff == 0 ? p : floor(p / diff) * diff

ShortPrice(p) =>
    ShortPrice = diff == 0 ? p : ceil(p / diff) * diff

pyr = input(1, title = "Pyramiding")
useStopLoss = input(true)
stoploss_xmult = input(15, minval=0.001, maxval=5000, title = "StopLoss 0.1%")
stopLoss_mult = sd == "simple" ? 1 + stoploss_xmult / 10 / 100 : stoploss_xmult / 10  
dev2 = sd == "stdev" ? stopLoss_mult * stdev(src, length) : sd == "dev" ? stopLoss_mult * dev(src, length) : (stopLoss_mult - 1) * basis
upper = basis + (1*dev)
lower = basis - (1*dev)
plot(basis, color=fuchsia, linewidth=2)
plot(upper, color=green, linewidth=2)
plot(lower, color=green, linewidth=2)


strategy.cancel_all()

if strategy.position_size > 0 and close <= basis + diff * 2
    strategy.order("Close long", strategy.short, strategy.position_size, limit = ShortPrice(basis))
else 
    if strategy.position_size < 0 and close >= basis - diff * 2
        strategy.order("Close short", strategy.long, -strategy.position_size, limit = LongPrice(basis))
            
stopLossPrice1 = na
stopLossPrice2 = na
add = na
openOrderCondition = close > lower - 2 * diff and (strategy.opentrades < pyr or (strategy.position_size < 0 and strategy.position_avg_price > lower * (1 + stopLoss_mult / 100)))
if openOrderCondition
    add := strategy.position_size > 0 ? -strategy.position_size : close >= basis - diff * 2 ? 0 : -strategy.position_size
    strategy.order("Open long", strategy.long, strategy.equity / pyr / lower + add, limit = LongPrice(lower))
if useStopLoss and (strategy.position_size > 0 or openOrderCondition)
    add = openOrderCondition ? strategy.equity / pyr / lower : 0
    posPrice = strategy.position_size <= 0 ? lower : strategy.position_avg_price
    posSize = strategy.position_size <= 0 ? 0 : strategy.position_size
    stopLossPrice1 := posPrice * (1 - stopLoss_mult / 100)
    strategy.order("StopLoss open short ", strategy.short, posSize + add + strategy.equity / pyr / stopLossPrice1, stop = ShortPrice(stopLossPrice1))


openOrderCondition := close < upper + 2 * diff and (strategy.opentrades < pyr or (strategy.position_size > 0 and strategy.position_avg_price * (1 + stopLoss_mult / 100) < upper))
if openOrderCondition
    add := strategy.position_size < 0 ? strategy.position_size : close <= basis + diff * 2 ? 0 : strategy.position_size
    strategy.order("Open short", strategy.short, strategy.equity / pyr / upper + add, limit = ShortPrice(upper))
if useStopLoss and (strategy.position_size < 0 or openOrderCondition)
    add = openOrderCondition ? strategy.equity / pyr / upper : 0
    posPrice = strategy.position_size >= 0 ? upper : strategy.position_avg_price
    posSize = strategy.position_size >= 0 ? 0 : -strategy.position_size
    stopLossPrice2 := posPrice * (1 + stopLoss_mult / 100)
    strategy.order("StopLoss open long", strategy.long, posSize + add + strategy.equity / pyr / stopLossPrice2, stop = LongPrice(stopLossPrice2))

plot(not useStopLoss ? na : stopLossPrice1, color=red, linewidth=2)
plot(not useStopLoss ? na : stopLossPrice2, color=red, linewidth=2)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()