
یہ حکمت عملی ایک مارکیٹر کی حکمت عملی ہے جس میں برن بینڈ کو اندراجات کے طور پر استعمال کیا جاتا ہے ، ایک چلتی اوسط کو قریب کے طور پر استعمال کیا جاتا ہے ، اور ایک سادہ اسٹاپ نقصان فیصد کو نقصان کے طور پر استعمال کیا جاتا ہے۔ اس نے جون 2022 میں xtbtusd معاہدے پر انتہائی منافع حاصل کیا۔
اس حکمت عملی میں برن بینڈ کے اوپر اور نیچے کی ریلوں کو اسٹاک بنانے کے مواقع کے علاقوں کے طور پر استعمال کیا گیا ہے۔ خاص طور پر ، جب قیمت نیچے کی ریل سے کم ہوتی ہے تو ، ایک سے زیادہ اسٹاک کھولی جاتی ہیں۔ جب قیمت اوپر کی ریل سے زیادہ ہوتی ہے تو ، ایک خالی اسٹاک کھولی جاتی ہے۔
اس کے علاوہ ، اس حکمت عملی میں متحرک اوسط کو بھی بیعانہ کی بنیاد کے طور پر استعمال کیا جاتا ہے۔ جب آپ کے پاس بہت سارے آرڈر ہوں تو ، اگر قیمت متحرک اوسط سے زیادہ ہو تو ، آپ اسے منتخب کریں گے۔ اسی طرح ، جب آپ کے پاس خالی آرڈر ہوں تو ، اگر قیمت متحرک اوسط سے کم ہو تو ، آپ اسے بھی منتخب کریں۔
اسٹاپ نقصان کے لئے ، اس حکمت عملی میں داخلے کی قیمت کے ایک خاص فیصد کے ساتھ اس سادہ رولنگ اسٹاپ کا استعمال کیا جاتا ہے۔ یہ ایک طرفہ حالات میں بڑے پیمانے پر نقصانات سے بچنے کے لئے موثر ہے۔
اس حکمت عملی کے کچھ اہم فوائد یہ ہیں:
اس حکمت عملی کے کچھ خطرات بھی ہیں:
ان خطرات کو کم کرنے کے لئے ، ہم فلٹرنگ کو دوسرے اشارے کے ساتھ مل کر ، اسٹاپ نقصان کی حکمت عملی کو بہتر بنانے کے لئے ، یا پوزیشن کے سائز کو مناسب طریقے سے محدود کرنے پر غور کرسکتے ہیں۔
اس حکمت عملی میں مزید اصلاحات کی گنجائش موجود ہے:
یہ حکمت عملی مجموعی طور پر ایک بہت ہی منافع بخش ہائی فریکوئینسی مارکیٹر حکمت عملی ہے۔ اس میں برین بینڈ کا استعمال کرکے ٹریڈنگ کے مواقع فراہم کیے جاتے ہیں جبکہ خطرات پر قابو پایا جاتا ہے۔ لیکن ہمیں اس کے مسائل اور خامیوں سے بھی آگاہ ہونا چاہئے اور اسے عملی طور پر احتیاط سے جانچنا ہوگا۔ مزید اصلاحات کے ساتھ ، اس حکمت عملی سے زیادہ مستحکم اور انتہائی اعلی منافع کی توقع ہے۔
/*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()