متحرک گرڈ ٹرینڈ کے بعد کیونٹیٹیٹیو ٹریڈنگ کی حکمت عملی

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

img

جائزہ

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

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

اس حکمت عملی کے بنیادی اصول مندرجہ ذیل ہیں:

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

  2. مقررہ حدود کے اندر ، قیمت کی حد کو کئی گرڈ میں تقسیم کریں۔ ہر گرڈ لائن خرید یا فروخت کی قیمت سے مطابقت رکھتی ہے۔

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

  4. نسبتاً اعلی پوزیشنوں پر فروخت کرکے اور کم پوزیشنوں پر خرید کر، حکمت عملی مسلسل منافع حاصل کر سکتی ہے جب قیمتوں میں اتار چڑھاؤ ہوتا ہے۔

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

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

فوائد کا تجزیہ

اس متحرک گرڈ کی حکمت عملی میں مندرجہ ذیل فوائد ہیں:

  1. مضبوط موافقت۔ یہ پیرامیٹر کی ترتیبات کے ذریعے مختلف مارکیٹوں اور اقسام کے مطابق ڈھال سکتا ہے ، اور اتار چڑھاؤ والی مارکیٹوں میں اچھی موافقت رکھتا ہے۔

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

  3. قابو پانے والا خطرہ: گرڈ کی تعداد اور گرڈ کی حدود جیسے پیرامیٹرز کو طے کرکے ، ہر لین دین کے خطرے کے خطرات کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے ، اس طرح مجموعی خطرہ کو قابل قبول حد کے اندر برقرار رکھا جاسکتا ہے۔

  4. رجحان کی موافقت۔ گرڈ کی حدود کو متحرک طور پر ایڈجسٹ کرنے کا فنکشن حکمت عملی میں شامل کیا گیا ہے ، تاکہ گرڈ قیمت کے رجحانات کی پیروی کرسکے اور بہتر بنایا جاسکے ، جس سے رجحان کی منڈیوں میں منافع میں اضافہ ہو۔

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

خطرے کا تجزیہ

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

  1. رجحان کا خطرہ۔ اگر قیمت ایک مضبوط یکطرفہ رجحان کے ساتھ گرڈ کی حد کو توڑتی ہے تو ، اس حکمت عملی کی منافع کی جگہ محدود ہوگی اور اس کا سامنا کرنا پڑسکتا ہے۔

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

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

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

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

اصلاح کی سمت

مندرجہ بالا تجزیہ کی بنیاد پر، اس حکمت عملی کے اصلاحاتی سمتوں میں بنیادی طور پر شامل ہیں:

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

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

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

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

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

مذکورہ بالا اصلاح کے ذریعے اس حکمت عملی کی موافقت ، استحکام اور منافع میں جامع طور پر بہتری آسکتی ہے ، جس سے یہ اصل تجارتی ضروریات کے قریب ہوجاتا ہے۔

خلاصہ

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

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


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

//@version=4
strategy("(IK) Grid Script", overlay=true, pyramiding=14, close_entries_rule="ANY", default_qty_type=strategy.cash, initial_capital=100.0, currency="USD", commission_type=strategy.commission.percent, commission_value=0.1)
i_autoBounds    = input(group="Grid Bounds", title="Use Auto Bounds?", defval=true, type=input.bool)                             // calculate upper and lower bound of the grid automatically? This will theorhetically be less profitable, but will certainly require less attention
i_boundSrc      = input(group="Grid Bounds", title="(Auto) Bound Source", defval="Hi & Low", options=["Hi & Low", "Average"])     // should bounds of the auto grid be calculated from recent High & Low, or from a Simple Moving Average
i_boundLookback = input(group="Grid Bounds", title="(Auto) Bound Lookback", defval=250, type=input.integer, maxval=500, minval=0) // when calculating auto grid bounds, how far back should we look for a High & Low, or what should the length be of our sma
i_boundDev      = input(group="Grid Bounds", title="(Auto) Bound Deviation", defval=0.10, type=input.float, maxval=1, minval=-1)  // if sourcing auto bounds from High & Low, this percentage will (positive) widen or (negative) narrow the bound limits. If sourcing from Average, this is the deviation (up and down) from the sma, and CANNOT be negative.
i_upperBound    = input(group="Grid Bounds", title="(Manual) Upper Boundry", defval=0.285, type=input.float)                      // for manual grid bounds only. The upperbound price of your grid
i_lowerBound    = input(group="Grid Bounds", title="(Manual) Lower Boundry", defval=0.225, type=input.float)                      // for manual grid bounds only. The lowerbound price of your grid.
i_gridQty       = input(group="Grid Lines",  title="Grid Line Quantity", defval=8, maxval=15, minval=3, type=input.integer)       // how many grid lines are in your grid

f_getGridBounds(_bs, _bl, _bd, _up) =>
    if _bs == "Hi & Low"
        _up ? highest(close, _bl) * (1 + _bd) : lowest(close, _bl)  * (1 - _bd)
    else
        avg = sma(close, _bl)
        _up ? avg * (1 + _bd) : avg * (1 - _bd)

f_buildGrid(_lb, _gw, _gq) =>
    gridArr = array.new_float(0)
    for i=0 to _gq-1
        array.push(gridArr, _lb+(_gw*i))
    gridArr

f_getNearGridLines(_gridArr, _price) =>
    arr = array.new_int(3)
    for i = 0 to array.size(_gridArr)-1
        if array.get(_gridArr, i) > _price
            array.set(arr, 0, i == array.size(_gridArr)-1 ? i : i+1)
            array.set(arr, 1, i == 0 ? i : i-1)
            break
    arr

var upperBound      = i_autoBounds ? f_getGridBounds(i_boundSrc, i_boundLookback, i_boundDev, true) : i_upperBound  // upperbound of our grid
var lowerBound      = i_autoBounds ? f_getGridBounds(i_boundSrc, i_boundLookback, i_boundDev, false) : i_lowerBound // lowerbound of our grid
var gridWidth       = (upperBound - lowerBound)/(i_gridQty-1)                                                       // space between lines in our grid
var gridLineArr     = f_buildGrid(lowerBound, gridWidth, i_gridQty)                                                 // an array of prices that correspond to our grid lines
var orderArr        = array.new_bool(i_gridQty, false)                                                              // a boolean array that indicates if there is an open order corresponding to each grid line

var closeLineArr    = f_getNearGridLines(gridLineArr, close)                                                        // for plotting purposes - an array of 2 indices that correspond to grid lines near price
var nearTopGridLine = array.get(closeLineArr, 0)                                                                    // for plotting purposes - the index (in our grid line array) of the closest grid line above current price
var nearBotGridLine = array.get(closeLineArr, 1)                                                                    // for plotting purposes - the index (in our grid line array) of the closest grid line below current price
strategy.initial_capital = 50000
for i = 0 to (array.size(gridLineArr) - 1)
    if close < array.get(gridLineArr, i) and not array.get(orderArr, i) and i < (array.size(gridLineArr) - 1)
        buyId = i
        array.set(orderArr, buyId, true)
        strategy.entry(id=tostring(buyId), long=true, qty=(strategy.initial_capital/(i_gridQty-1))/close, comment="#"+tostring(buyId))
    if close > array.get(gridLineArr, i) and i != 0
        if array.get(orderArr, i-1)
            sellId = i-1
            array.set(orderArr, sellId, false)
            strategy.close(id=tostring(sellId), comment="#"+tostring(sellId))

if i_autoBounds
    upperBound  := f_getGridBounds(i_boundSrc, i_boundLookback, i_boundDev, true)
    lowerBound  := f_getGridBounds(i_boundSrc, i_boundLookback, i_boundDev, false)
    gridWidth   := (upperBound - lowerBound)/(i_gridQty-1)
    gridLineArr := f_buildGrid(lowerBound, gridWidth, i_gridQty)

closeLineArr    := f_getNearGridLines(gridLineArr, close)
nearTopGridLine := array.get(closeLineArr, 0)
nearBotGridLine := array.get(closeLineArr, 1)







مزید