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

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

مصنف:چاؤ ژانگ، تاریخ: 2024-03-22 15:12:33
ٹیگز:

img

حکمت عملی کا جائزہ

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

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

  1. گرڈ سائز پیرامیٹر کی بنیاد پر قیمت کو یکساں طور پر الگ الگ گرڈ میں تقسیم کریں۔
  2. ہر گرڈ لائن پر طویل حد کے احکامات رکھیں.
  3. جب موجودہ قیمت ایک گرڈ لائن تک پہنچ جاتی ہے:
    • اگر کھلی پوزیشنوں کی موجودہ تعداد 0 ہے تو start_lot سائز کے ساتھ پوزیشن کھولیں۔
    • اگر کھلی پوزیشنوں کی موجودہ تعداد 0 سے زیادہ ہے اور موجودہ گرڈ کی قیمت پچھلی انٹری قیمت سے کم ہے تو ، موجودہ گرڈ کی قیمت پر ایک نئی طویل پوزیشن کھولیں جس کا سائز ملی فیکٹر پچھلی پوزیشن کے سائز سے ضرب ہو۔
  4. کھلی پوزیشنوں کی زیادہ سے زیادہ تعداد Max Open Orders پیرامیٹر کے ذریعے کنٹرول کی جاتی ہے۔
  5. ایک پوزیشن کھولنے کے بعد، اوسط اندراج کی قیمت سے اوپر TakeProfit پوائنٹس پر منافع لینے کی سطح مقرر کریں.
  6. جب موجودہ قیمت منافع حاصل کرنے کی سطح تک پہنچ جاتی ہے، تو تمام طویل پوزیشنوں کو بند کریں اور پیرامیٹرز کو ری سیٹ کریں۔

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

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

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

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

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

خطرے کے کنٹرول کے اقدامات:

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

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

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

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

خلاصہ

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


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © lagerta13
//@version=4
strategy("Grid A.", shorttitle="Grid(A)", overlay=true, format=format.price, precision=4, pyramiding = 100)

input_tf=input("15", "Started TimeFrame", 
 options = ["1", "5", "15", "30", "1H", "4H", "1D", "1W", "1M"],
 group="TimeFrame") 

// avg_tf=input("5", "Average TimeFrame", 
//  options = ["1", "5", "15", "30", "1H", "4H", "1D", "1W", "1M"],
//  group="TimeFrame")

slip_Hilo = input(3.0, "Slippage by open order", group="Strategy Settings")
start_lot = input(0.01, "Start lot", group="Strategy Settings")
start_avg = input(2, "Started average since Order #", group="Strategy Settings")
MaxTrades_Hilo = input(10, "Max Open Orders", group="Strategy Settings")
dropdown_selection = input("Only Long", "Direction", options=["Only Long", "Only Short", "Long & Short"],
 group="Strategy Settings")
type_selection = input("By Close", "Type input", options=["By Close", "By grid line"],
 group="Strategy Settings")

multifactor = input(1.5, "Multifactor", group="Strategy Settings")
precision_lot = input(2, "Number of precision", group="Strategy Settings")
take_profit = input(1, "TakeProfit", group="Strategy Settings")

// PipStep_S1 = input(30)
// PipStepX_S1 = input(1.2)
// dinamicStep = input(false, "Dinamic Step for AVG")

get_size_lot_order(number, multi, prec, avg_from, lot_from) =>
	res = lot_from
	for i = 1 to number
		if i >= avg_from
			res := round(res * multi, precision = prec)
	res

var float[] entry_levels = array.new_float(MaxTrades_Hilo + 1)

for i = 0 to MaxTrades_Hilo
    array.push(entry_levels, 0)

gridSize = input(0.5, title="Grid Size")
gridLevels = int(close / gridSize) * gridSize

var int num_open_orders = 0
var float sum_price_orders = 0
var float entry_lot = 0

buy_condition = num_open_orders < MaxTrades_Hilo and gridLevels[0]<gridLevels[1] and dropdown_selection != "Only Short"

if (buy_condition)

    if num_open_orders == 0
        lot = get_size_lot_order(num_open_orders, multifactor, precision_lot, start_avg, start_lot)
        sum_price_orders := sum_price_orders + gridLevels[1] * lot 

        strategy.entry("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]+slip_Hilo) 
        // strategy.order("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]) 

        array.set(entry_levels, num_open_orders, gridLevels[1])

        entry_lot := entry_lot + lot
        num_open_orders := num_open_orders + 1

    else
        if gridLevels[1] < (array.get(entry_levels, num_open_orders - 1))
            lot = get_size_lot_order(num_open_orders, multifactor, precision_lot, start_avg, start_lot)
            sum_price_orders := sum_price_orders + gridLevels[1] * lot 
            entry_lot := entry_lot + lot

            strategy.entry("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]+slip_Hilo) 

            // +" S:" + tostring(sum_price_orders / (entry_lot)) + " Prev:" + tostring(array.get(entry_levels, num_open_orders - 1))
            // strategy.order("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]) 
            array.set(entry_levels, num_open_orders, gridLevels[1])

            num_open_orders := num_open_orders + 1


take = sum_price_orders > 0 and take_profit + (sum_price_orders / entry_lot) < high ? high : na
plotshape(take, location = location.belowbar, color = color.white)


strategy.exit("tp", comment = "TP " + tostring(num_open_orders), qty = entry_lot, limit = take_profit + (sum_price_orders / entry_lot))


if sum_price_orders > 0 and take_profit + (sum_price_orders / entry_lot) <= high
    num_open_orders := 0
    sum_price_orders := 0
    entry_lot := 0
    for i = 0 to MaxTrades_Hilo
        array.set(entry_levels, i, 0)

plot(gridLevels, color=color.blue, style=plot.style_circles, linewidth=2)

 

مزید