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


تخلیق کی تاریخ: 2024-02-18 15:40:42 آخر میں ترمیم کریں: 2024-02-18 15:40:42
کاپی: 4 کلکس کی تعداد: 670
1
پر توجہ دیں
1617
پیروکار

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

جائزہ

یہ حکمت عملی بین کوون کے خطرے کی سطح کے نظریہ پر مبنی ہے ، جس کا مقصد بی ای ایم بیگ کی سطح کا استعمال کرتے ہوئے اسی طرح کا طریقہ کار انجام دینا ہے۔ بی ای ایم بیگ کی اوپری حد 200 ہفتہ کی متحرک اوسط ہے جس کے بعد ہم آہنگی لی گئی ہے ، اور نچلی حد 200 ہفتہ کی متحرک اوسط خود ہے۔ اس سے ہمیں 0 سے 1 کی حد ملتی ہے۔ جب قیمت 0.5 کے نیچے ہوتی ہے تو ، خریدنے کا حکم جاری کیا جاتا ہے۔ جب قیمت 0.5 کے اوپر ہوتی ہے تو ، بیچنے کا حکم جاری کیا جاتا ہے۔

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

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

جب قیمت کم ہو جاتی ہے تو ، حکمت عملی خریدنے کی پوزیشن میں آہستہ آہستہ اضافہ کرتی ہے۔ خاص طور پر ، اگر قیمت 0 سے 0.5 کی حد میں ہے تو ، حکمت عملی کے سیٹ کردہ ہر مہینے کے کسی خاص دن خریدنے کا حکم جاری کیا جاتا ہے ، اور خریدنے کی رقم آہستہ آہستہ بڑھ جاتی ہے جیسا کہ طول و عرض کا نمبر کم ہوتا ہے۔ مثال کے طور پر ، لہر 5 کے لئے ، خریدنے کی رقم ماہانہ ڈی سی اے کی کل رقم کا 20٪ ہے۔ لہر 1 کے لئے ، خریدنے کی رقم ماہانہ ڈی سی اے کی کل رقم کا 100٪ تک بڑھ جاتی ہے۔

جب قیمت اونچائی تک پہنچ جاتی ہے تو ، یہ حکمت عملی پوزیشنوں کو آہستہ آہستہ کم کرتی ہے۔ خاص طور پر ، اگر قیمت 0.5 طول و عرض سے زیادہ ہے تو ، تناسب کے مطابق فروخت کرنے کی ہدایت جاری کی جاتی ہے ، اور بیچنے والی پوزیشنوں میں اضافہ ہوتا ہے جیسے طول و عرض نمبر بڑھتا ہے۔ مثال کے طور پر ، طول و عرض 6 پر ، 6.67٪ فروخت کریں؛ طول و عرض 10 پر ، تمام پوزیشنیں فروخت کریں۔

طاقت کا تجزیہ

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

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

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

خطرے کا تجزیہ

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

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

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

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

اصلاح کی سمت

مذکورہ بالا خطرات کو مدنظر رکھتے ہوئے ، اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

اس طرح کی حکمت عملیوں سے استحکام اور حفاظت میں نمایاں اضافہ کیا جا سکتا ہے۔

خلاصہ کریں۔

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

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

// © gjfsdrtytru - BEAM DCA Strategy {
// Based on Ben Cowen's risk level strategy, this aims to copy that method but with BEAM band levels.
// Upper BEAM level is derived from ln(price/200W MA)/2.5, while the 200W MA is the floor price. This is our 0-1 range. 
// Buy limit orders are set at the < 0.5 levels and sell orders are set at the > 0.5 level.
//@version=5
strategy(
  title                 = "BEAM DCA Strategy Monthly", 
  shorttitle            = "BEAM DCA M",
  overlay               = true,
  pyramiding            = 500,
  default_qty_type      = strategy.percent_of_equity,
  default_qty_value     = 0,
  initial_capital       = 0) //}

// Inputs { ————————————————————————————————————————————————————————————————————
T_ceiling   = input.string("Off", "Diminishing Returns", ["Off","Linear","Parabolic"], "Account for diminishing returns as time increases")
day         = input.int(1, "DCA Day of Month",1,28,1,"Select day of month for buy orders.")
DCAamount   = input.int(1000,"DCA Amount",400,tooltip="Enter the maximum amount you'd be willing to DCA for any given month.")
T_buy       = input(true,"Buy Orders","Toggle buy orders.")
T_sell      = input(true,"Sell Orders","Toggle sell orders.")

// Time period
testStartYear   = input.int(2018,   title="Backtest Start Year",    minval=2010,maxval=2100,group="Backtest Period")
testStartMonth  = input.int(1,      title="Backtest Start Month",   minval=1,   maxval=12,  group="Backtest Period")
testStartDay    = input.int(1,      title="Backtest Start Day",     minval=1,   maxval=31,  group="Backtest Period")
testPeriodLen   = input.int(9999,   title="Backtest Period (days)", minval=1,               group="Backtest Period",tooltip="Days until strategy ends") * 86400000 // convert days into UNIX time
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriodStop  = testPeriodStart + testPeriodLen
testPeriod() => true
// ——————————————————————————————————————————————————————————————————————————— }
// Diminishing Returns { ———————————————————————————————————————————————————————
x = bar_index + 1
assetDivisor= 2.5
switch
    T_ceiling == "Linear"   => assetDivisor:= 3.50542 - 0.000277696 * x
    T_ceiling == "Parabolic"=> assetDivisor:= -0.0000001058992338 * math.pow(x,2) + 0.000120729 * x + 3.1982
// ——————————————————————————————————————————————————————————————————————————— }
// Risk Levels { ———————————————————————————————————————————————————————————————
cycleLen = 1400
getMaLen() =>
    if bar_index < cycleLen
        bar_index + 1
    else
        cycleLen

// Define Risk Bands
price       = close
riskLow     = ta.sma(price,getMaLen())
risk1       = riskLow * math.exp((assetDivisor)*0.1)
risk2       = riskLow * math.exp((assetDivisor)*0.2)
risk3       = riskLow * math.exp((assetDivisor)*0.3)
risk4       = riskLow * math.exp((assetDivisor)*0.4)
risk5       = riskLow * math.exp((assetDivisor)*0.5)
risk6       = riskLow * math.exp((assetDivisor)*0.6)
risk7       = riskLow * math.exp((assetDivisor)*0.7)
risk8       = riskLow * math.exp((assetDivisor)*0.8)
risk9       = riskLow * math.exp((assetDivisor)*0.9)
riskHigh    = riskLow * math.exp((assetDivisor))

// Plot Risk Bands
p_low       = plot(riskLow,   "Beam Risk 0.0",color.new(#0042F0,50),3,editable=false)
p_band1     = plot(risk1,     "Beam Risk 0.1",color.new(#0090F5,20),1,editable=false)
p_band2     = plot(risk2,     "Beam Risk 0.2",color.new(#00C6DB,20),1,editable=false)
p_band3     = plot(risk3,     "Beam Risk 0.3",color.new(#00F5BD,20),1,editable=false)
p_band4     = plot(risk4,     "Beam Risk 0.4",color.new(#00F069,20),1,editable=false)
p_band5     = plot(risk5,     "Beam Risk 0.5",color.new(#00DB08,50),3,editable=false)
p_band6     = plot(risk6,     "Beam Risk 0.6",color.new(#E8D20C,20),1,editable=false)
p_band7     = plot(risk7,     "Beam Risk 0.7",color.new(#F2B40C,20),1,editable=false)
p_band8     = plot(risk8,     "Beam Risk 0.8",color.new(#DC7A00,20),1,editable=false)
p_band9     = plot(risk9,     "Beam Risk 0.9",color.new(#F2520C,20),1,editable=false)
p_band10    = plot(riskHigh,  "Beam Risk 1.0",color.new(#F01102,50),3,editable=false)
// ——————————————————————————————————————————————————————————————————————————— }
// Order Execution { ———————————————————————————————————————————————————————————
band5   = price<risk5 and price>risk4
band4   = price<risk4 and price>risk3
band3   = price<risk3 and price>risk2
band2   = price<risk2 and price>risk1
band1   = price<risk1

// DCA buy order weights
y       = DCAamount / 5
switch
    band5 => y:= y * 1
    band4 => y:= y * 2
    band3 => y:= y * 3
    band2 => y:= y * 4
    band1 => y:= y * 5

// Contracts per order
contracts =(y/price)

if testPeriod()
// Buy orders
    if T_buy == true
        if dayofmonth == day
            strategy.entry("Risk Band 5",strategy.long,qty=contracts,when=band5)
            strategy.entry("Risk Band 4",strategy.long,qty=contracts,when=band4)
            strategy.entry("Risk Band 3",strategy.long,qty=contracts,when=band3)
            strategy.entry("Risk Band 2",strategy.long,qty=contracts,when=band2)
            strategy.entry("Risk Band 1",strategy.long,qty=contracts,when=band1)
// Sell orders 
    if T_sell == true
        if strategy.opentrades > 5
            strategy.exit("Risk Band 6",qty_percent=6.67,limit=risk6) 
            strategy.exit("Risk Band 7",qty_percent=14.28,limit=risk7)
            strategy.exit("Risk Band 8",qty_percent=25.00,limit=risk8)
            strategy.exit("Risk Band 9",qty_percent=44.44,limit=risk9)
            strategy.exit("Risk Band 10",qty_percent=100,limit=riskHigh)
// ——————————————————————————————————————————————————————————————————————————— }
// Info { ——————————————————————————————————————————————————————————————————————

// Line plot of avg. entry price
plot(strategy.position_size > 0 ? strategy.position_avg_price : na,"Average Entry",color.red,trackprice=true,editable=false)

// Unrealised PNL
uPNL = price/strategy.position_avg_price

// Realised PNL
realPNL = 0.
for i = 0 to strategy.closedtrades-1
    realPNL += strategy.closedtrades.profit(i)

// Size of open position in ($)
openPosSize = 0.
for i = 0 to strategy.opentrades-1
    openPosSize += strategy.opentrades.size(i) * strategy.position_avg_price

// Size of closed position in ($)
closePosSize = 0.
if strategy.closedtrades > 0
    for i = 0 to strategy.closedtrades-1
        closePosSize += strategy.closedtrades.size(i) * strategy.closedtrades.entry_price(i)

invested    = openPosSize+closePosSize                              // Total capital ($) put into strategy
equity      = openPosSize+closePosSize+strategy.openprofit+realPNL  // Total current equity ($) in strategy (counting realised PNL)
ROI         = (equity-invested) / invested * 100                    // ROI of strategy (compare capital invested to excess return)

// // Info Table
// var table table1 = table.new(position.bottom_right,2,9,color.black,color.gray,1,color.gray,2)

// table.cell(table1,0,0,"Capital Invested",   text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,1,"Open Position",      text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,2,"Average Entry",      text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,3,"Last Price",         text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,4,"Open PNL (%)",       text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,5,"Open PNL ($)",       text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,6,"Realised PNL ($)",   text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,7,"Total Equity",       text_color=color.white,text_halign=text.align_right)
// table.cell(table1,0,8,"Strategy ROI",       text_color=color.white,text_halign=text.align_right)

// table.cell(table1,1,0,"$" + str.tostring(invested,                      "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,1,"$" + str.tostring(openPosSize,                   "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,2,"$" + str.tostring(strategy.position_avg_price,   "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,3,"$" + str.tostring(price,                         "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,4,      str.tostring((uPNL-1)*100,                  "#,###.00") + "%",text_halign=text.align_right,text_color = uPNL > 1 ? color.lime : color.red)
// table.cell(table1,1,5,"$" + str.tostring(strategy.openprofit,           "#,###.00"),      text_halign=text.align_right,text_color = uPNL > 1 ? color.lime : color.red)
// table.cell(table1,1,6,"$" + str.tostring(realPNL,                       "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,7,"$" + str.tostring(equity,                        "#,###.00"),      text_halign=text.align_right,text_color = color.white)
// table.cell(table1,1,8,      str.tostring(ROI,                           "#,###.00") + "%",text_halign=text.align_right,text_color = ROI > 1 ? color.lime : color.red)
// // ——————————————————————————————————————————————————————————————————————————— }