وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متحرک سٹاپ نقصان بولنگر بینڈ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-01 10:48:52
ٹیگز:

img

جائزہ

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

اصول

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

فوائد

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

خطرات اور حل

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

اصلاح کی ہدایات

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

نتیجہ

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


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BB Strategy", title="Bollinger Bands Strategy", overlay=true)
length = input.int(20, minval=1, group = "Bollinger Bands")
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Bollinger Bands")
src = input(close, title="Source", group = "Bollinger Bands")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev", group = "Bollinger Bands")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500, group = "Bollinger Bands")
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

lo = input.bool(true, "Long", group = "Strategy")
sh = input.bool(true, "Short", group = "Strategy")
x = input.float(3.0, "Target Multiplier (X)", group = "Strategy", minval = 1.0, step = 0.1)
token = input.string(defval = "", title = "Token", group = "AUTOMATION")
Buy_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1) + '"}'
Buy_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2) + '"}'
Exit_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-1) + '"}'
Exit_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-2) + '"}'
Exit_PE_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2.5) + '"}'
Exit_CE_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1.5) + '"}'
long = high < lower
short = low > upper
var sl_b = 0.0
var tar_b = 0.0
var sl_s = 0.0
var tar_s = 0.0
var static_sl = 0.0
entry = strategy.opentrades.entry_price(strategy.opentrades - 1)
if long and lo and strategy.position_size == 0
    strategy.entry("Long", strategy.long, alert_message = Buy_CE, stop = high)
    strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE)
    sl_b := low
    tar_b := high + (math.abs(high - low) * x)
    static_sl := math.abs(low - high)
if short and sh and strategy.position_size == 0
    strategy.entry("Short", strategy.short, alert_message = Buy_PE, stop = low)
    strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE)
    sl_s := high
    tar_s := low - (math.abs(high - low) * x)
    static_sl := math.abs(high - low)
// if long and strategy.position_size < 0
//     strategy.entry("Long", strategy.long, alert_message = Exit_PE_CE, stop = high)
//     strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE)
//     sl_b := low
//     tar_b := high + (math.abs(high - low) * x)
// if short and strategy.position_size > 0
//     strategy.entry("Short", strategy.short, alert_message = Exit_CE_PE, stop = low)
//     strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE)
//     sl_s := math.max(high[1], high)
//     tar_s := low - (math.abs(high - low) * x)
if ta.change(dayofmonth) or (long[1] and not long[2])
    strategy.cancel("Long")
if ta.change(dayofmonth) or (short[1] and not short[2])
    strategy.cancel("Short")
var count = 1
if strategy.position_size != 0
    if strategy.position_size > 0
        if close > (entry + (static_sl * count))
            strategy.exit("LX", "Long", limit = tar_b, stop = sl_b, alert_message = Exit_CE)
            sl_b := entry + (static_sl * (count - 1))
            count += 1
            
    else
        if close < (entry - (static_sl * count))
            strategy.exit("SX", "Short", limit = tar_s, stop = sl_s, alert_message = Exit_PE)
            sl_s := entry - (static_sl * (count - 1))
            count += 1
// label.new(bar_index, high, str.tostring(static_sl))
if strategy.position_size == 0
    count := 1
plot(strategy.position_size > 0 ? sl_b : na, "", color.red, style = plot.style_linebr)
plot(strategy.position_size < 0 ? sl_s : na, "", color.red, style = plot.style_linebr)
plot(strategy.position_size > 0 ? tar_b : na, "", color.green, style = plot.style_linebr)
plot(strategy.position_size < 0 ? tar_s : na, "", color.green, style = plot.style_linebr)

مزید