
یہ ایک اعلی درجے کی گرڈ ٹریڈنگ حکمت عملی ہے جو برن بینڈ اشارے پر مبنی ہے۔ اس حکمت عملی سے گرڈ کی پوزیشن کا تعین ہوتا ہے اور گرڈ کے فاصلے کو مارکیٹ کی اتار چڑھاؤ کے مطابق خود بخود ایڈجسٹ کیا جاتا ہے۔ نظام قیمت کے گرڈ لائن کو توڑنے پر اسی طرح کے کثیر فاصلے پر تجارت کرتا ہے ، جس سے مکمل طور پر خود کار طریقے سے گرڈ ٹریڈنگ کا احساس ہوتا ہے۔
حکمت عملی 20 دوروں کی متحرک اوسط کا استعمال کرتی ہے جس میں بُرین بینڈ کے لئے درمیانی ریل ، اور بینڈوتھ کے طور پر دوگنا معیاری فرق ہوتا ہے۔ بُرین بینڈ کی بنیاد پر ، حکمت عملی میں اوپر اور نیچے کی ریلوں کے مابین 4 گرڈ لیول لگائے گئے ہیں ، اور گرڈ کا وقفہ 1٪ ہے۔ جب قیمت کسی گرڈ لائن کو اوپر کی طرف توڑتی ہے تو ، نظام متعدد کارروائی کرتا ہے۔ جب قیمت کسی گرڈ لائن کو نیچے کی طرف توڑتی ہے تو ، نظام خالی کارروائی کرتا ہے۔ اس ڈیزائن نے حکمت عملی کو زلزلے والے بازار میں مستقل منافع بخش بنانے کے قابل بنا دیا ہے۔
حل:
اس حکمت عملی میں برین بینڈ اور گرڈ ٹریڈنگ کا امتزاج کیا گیا ہے ، جس سے ایک خودکار تجارتی نظام لچکدار اور مستحکم ہے۔ اس حکمت عملی کا بنیادی فائدہ یہ ہے کہ یہ مختلف مارکیٹ کے حالات کے مطابق ڈھالنے کے قابل ہے ، جبکہ پیرامیٹرز کو ایڈجسٹ کرکے خطرے پر قابو پایا جاسکتا ہے۔ اگرچہ کچھ موروثی خطرات موجود ہیں ، لیکن مسلسل اصلاح اور بہتری کے ذریعہ ایک زیادہ مستحکم تجارتی نظام بنایا جاسکتا ہے۔
/*backtest
start: 2024-12-19 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Grid Bot based on Bollinger Bands with Adjustable Levels", overlay=true)
// Settings
source = close
length = input.int(20, minval=1, title="Bollinger Bands Length")
mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands Multiplier")
gridDistancePercent = input.float(1.0, title="Distance Between Levels (%)") / 100 // Distance between grid levels in percentage
gridSize = input.int(4, title="Number of Grid Levels") // Number of grid levels
// Bollinger Bands Calculation
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
// Middle line between the upper and lower Bollinger Bands
middle = (upper + lower) / 2
// Levels for long and short positions
var float[] longLevels = array.new_float(gridSize)
var float[] shortLevels = array.new_float(gridSize)
// Filling levels for long and short positions
for i = 0 to gridSize - 1
array.set(longLevels, i, lower * (1 + gridDistancePercent * (i + 1))) // For longs, increase the lower band
array.set(shortLevels, i, upper * (1 - gridDistancePercent * (i + 1))) // For shorts, decrease the upper band
// Logic for entering a long position (buy) at the first level crossover
longCondition = ta.crossover(source, array.get(longLevels, 0)) // Condition for buying — crossover with the first long level
if longCondition
strategy.entry("GridLong", strategy.long, comment="GridLong")
// Logic for entering a short position (sell) at the first level crossunder
shortCondition = ta.crossunder(source, array.get(shortLevels, 0)) // Condition for selling — crossunder with the first short level
if shortCondition
strategy.entry("GridShort", strategy.short, comment="GridShort")
// Logic for additional buys/sells when reaching subsequent levels
// For longs:
for i = 1 to gridSize - 1
if ta.crossover(source, array.get(longLevels, i))
strategy.entry("GridLong" + str.tostring(i), strategy.long, comment="GridLong")
// For shorts:
for i = 1 to gridSize - 1
if ta.crossunder(source, array.get(shortLevels, i))
strategy.entry("GridShort" + str.tostring(i), strategy.short, comment="GridShort")
// Visualization of the levels
plot(upper, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lower, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(middle, color=color.blue, linewidth=2, title="Middle Line")
// Display additional grid levels (fixed titles)
plot(array.get(longLevels, 0), color=color.green, linewidth=1, title="Long Level 1") // For the 1st long level
plot(array.get(longLevels, 1), color=color.green, linewidth=1, title="Long Level 2") // For the 2nd long level
plot(array.get(longLevels, 2), color=color.green, linewidth=1, title="Long Level 3") // For the 3rd long level
plot(array.get(longLevels, 3), color=color.green, linewidth=1, title="Long Level 4") // For the 4th long level
plot(array.get(shortLevels, 0), color=color.red, linewidth=1, title="Short Level 1") // For the 1st short level
plot(array.get(shortLevels, 1), color=color.red, linewidth=1, title="Short Level 2") // For the 2nd short level
plot(array.get(shortLevels, 2), color=color.red, linewidth=1, title="Short Level 3") // For the 3rd short level
plot(array.get(shortLevels, 3), color=color.red, linewidth=1, title="Short Level 4") // For the 4th short level