حجم پر مبنی متحرک ڈی سی اے حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-04-12 17:12:07
ٹیگز:QFLDCAٹی پیSLاے ٹی آرADXای ایم اےایس ایم اےآر ایس آئیایم اے سی ڈی

img

جائزہ

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

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

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

حکمت عملی کے فوائد

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

حکمت عملی کے خطرات

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

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

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

خلاصہ

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


/*backtest
start: 2024-04-04 00:00:00
end: 2024-04-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AHMEDABDELAZIZZIZO

//@version=5

strategy("Qfl Dca strategy", overlay=true)

// Parameters
swing = input(3 , title = "Swing Points")
mediandropmult = input.float(1.1, "Median drop Mult", step=0.1 , tooltip = "The script Calculate The Median Drop for all last Bases That Was cracked you can Increase or decrease it")
floatinglossvalue = input(-5 , "Floating Loss" , tooltip = "Position Floating Loss to start firs DCA order")
num_orders = input(5 , "Number of all orders" , tooltip = " The number of orders is including the base order and the DCA orders the script will alculate every order qty based on the orders number So that the position size doubles with every order")
length = input(20, title="Length of relative volume" ,tooltip =  " the length of relative volume indicator")
mult = input(2.0, title="Volume Multiplier" , tooltip = "you can adjust the relative volume multiplier to find best parameter")
tpmult = input.float(1, step=0.1 ,title = "Take Profit Multiplier" ,tooltip =  " By default, the script is set to take profits based on the same median drop percent you can adjust it as you like")



// Pivot Calculation
p = ta.pivotlow(low, swing, swing)
v = ta.valuewhen(p, low[swing], 0)

// Variables
var float[] lows = array.new_float()
var float chn = na

// Calculate drops
if v < v[1]
    chn := (v[1] - v) / v[1] * 100
    if array.size(lows) < 4000
        array.push(lows, chn)
    else
        array.shift(lows)
        array.push(lows, chn)

mediandrop = array.avg(lows)
maxdrop = array.max(lows)
mindrop = array.min(lows)

// Table display
textcolor = color.white
// tabl = table.new(position=position.top_right, columns=4, rows=4)
// table.cell(table_id=tabl, column=1, row=1, text="Avg Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=2, row=1, text="Min Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=3, row=1, text="Max Drop %", width=15, text_color=textcolor)
// table.cell(table_id=tabl, column=1, row=2, text=str.tostring(mediandrop), width=10, text_color=textcolor)
// table.cell(table_id=tabl, column=2, row=2, text=str.tostring(mindrop), width=10, text_color=textcolor)
// table.cell(table_id=tabl, column=3, row=2, text=str.tostring(maxdrop), width=10, text_color=textcolor)

// Plot support
t = fixnan(ta.pivotlow(low, swing, swing))
plot(t, color=ta.change(t) ? na : #03f590b6, linewidth=3, offset=-(swing), title="Support")

// Calculate relative volume
avgVolume = ta.sma(volume, length)
relVolume = volume / avgVolume

// Base Activation
var bool baseisactive = na
if not na(p)
    baseisactive := true

// Buy Signal Calculation
buyprice = v * (1 - (mediandrop / 100) * mediandropmult)
signal = close <= buyprice and relVolume > mult and baseisactive

// Take Profit Calculation
tpsl = (mediandrop / 100)
tp = (strategy.position_avg_price * (1 + (tpsl * tpmult)))

// Position Sizing
capital_per_order(num_orders, equity) =>
    equity / math.pow(2, (num_orders - 1))

equity_per_order = capital_per_order(num_orders, strategy.equity)

qty_per_order(equity_per_order, order_number) =>
    equity_per_order * order_number / close

// Calculate floating loss
floatingLoss = ((close - strategy.position_avg_price) / strategy.position_avg_price) * 100

// Strategy Entries
if signal and strategy.opentrades == 0
    strategy.entry("Buy", strategy.long, qty=qty_per_order(equity_per_order, 1))
    baseisactive := false

for i = 1 to num_orders -1
    if signal and strategy.opentrades == i and floatingLoss <= floatinglossvalue
        strategy.entry("Buy", strategy.long, qty=qty_per_order(equity_per_order, i), comment="DCA Order" + str.tostring(i))
        baseisactive := false

// Strategy Exit
strategy.exit("exit", "Buy", limit=tp)

// Plot
plot(strategy.position_avg_price, color=color.rgb(238, 255, 0), style=plot.style_linebr, linewidth=2)


متعلقہ

مزید