متحرک گرڈ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-01 14:41:57
ٹیگز:

img

جائزہ

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

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

حکمت عملی سب سے پہلے مقررہ مدت n کی چلتی اوسط لائن اور چلتی اوسط لائن کے اوپری اور نچلے پٹریوں کا حساب لگاتی ہے۔ اوپری ٹریک چلتی اوسط لائن * (1 + ان پٹ پیرامیٹر ایس ٹی ڈی) ہے ، اور نچلی ٹریک چلتی اوسط لائن * (1 - ان پٹ پیرامیٹر ایس ٹی ڈی) ہے۔ اس سے متحرک طور پر ایڈجسٹ ٹریڈنگ رینج زون بنتا ہے۔

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

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

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

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

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

  2. گرڈ ڈیزائن خود بخود منافع لے سکتا ہے اور انتہائی مارکیٹ کے حالات کی وجہ سے نقصانات کو بڑھانے سے روکنے کے لئے نقصان کو روک سکتا ہے.

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

  4. طویل اور قریبی سگنل کی ترتیبات رجحان کے ساتھ تجارت کرنے کے لئے معقول ہیں، اور بروقت منافع اور نقصانات کو روکنے کے لئے.

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

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

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

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

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

اسٹریٹیجی کو مندرجہ ذیل پہلوؤں میں بھی بہتر بنایا جاسکتا ہے:

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

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

  3. مشروط احکامات کو مقرر کیا جا سکتا ہے تاکہ گرڈ لائنوں سے ایک مخصوص فاصلے پر پہلے سے سٹاپ نقصان کے احکامات کو مقرر کیا جا سکے تاکہ انتہائی مارکیٹ کے حالات میں پہلے سے سٹاپ نقصان اور کنٹرول نقصان کا کردار ادا کیا جا سکے۔

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

خلاصہ

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


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Grid Trading Strategy', overlay=true)

// Input
ma_length = input.int(300, 'Moving Average Length',group = 'Moving Average Conditions', step = 10)
std = input.float(0.03, title='Upper and Lower Grid Deviation', group='Grid Conditions', step = 0.01)
grid = input.int(15, maxval=15, title='Grid Line Quantity', group='Grid Conditions')

// Moving Average
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
    array.push(grid_array, lower_bound + grid_width * i)
var order_array = array.new_bool(grid, false)    
strategy.initial_capital = 10000
// Entry Conditions
for i = 0 to grid - 1 by 1
    if close < array.get(grid_array, i) and not array.get(order_array, i)
        buy_id = i
        array.set(order_array, buy_id, true)
        strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
    if close > array.get(grid_array, i) and i!=0
        if array.get(order_array, i-1)
            sell_id = i - 1
            array.set(order_array, sell_id, false)
            strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))

plot(grid > 0 ? array.get(grid_array,0) : na, color = color.yellow, transp = 10)
plot(grid > 1 ? array.get(grid_array,1) : na, color = color.yellow, transp = 10)
plot(grid > 2 ? array.get(grid_array,2) : na, color = color.yellow, transp = 10)
plot(grid > 3 ? array.get(grid_array,3) : na, color = color.yellow, transp = 10)
plot(grid > 4 ? array.get(grid_array,4) : na, color = color.yellow, transp = 10)
plot(grid > 5 ? array.get(grid_array,5) : na, color = color.yellow, transp = 10)
plot(grid > 6 ? array.get(grid_array,6) : na, color = color.yellow, transp = 10)
plot(grid > 7 ? array.get(grid_array,7) : na, color = color.yellow, transp = 10)
plot(grid > 8 ? array.get(grid_array,8) : na, color = color.yellow, transp = 10)
plot(grid > 9 ? array.get(grid_array,9) : na, color = color.yellow, transp = 10)
plot(grid > 10 ? array.get(grid_array,10) : na, color = color.yellow, transp = 10)
plot(grid > 11 ? array.get(grid_array,11) : na, color = color.yellow, transp = 10)
plot(grid > 12 ? array.get(grid_array,12) : na, color = color.yellow, transp = 10)
plot(grid > 13 ? array.get(grid_array,13) : na, color = color.yellow, transp = 10)
plot(grid > 14 ? array.get(grid_array,14) : na, color = color.yellow, transp = 10)

مزید