یہ حکمت عملی ایک گرڈ پر مبنی لمبی مارٹنگیل متحرک پوزیشن گرڈ ٹریڈنگ حکمت عملی ہے۔ اس کا بنیادی خیال یہ ہے کہ جب قیمت گرڈ لائنز کو نشان زد کرتی ہے تو موجودہ پوزیشنوں کی تعداد کی بنیاد پر پوزیشن کا سائز متحرک طور پر ایڈجسٹ کیا جائے ، جبکہ کھلی پوزیشنوں کی زیادہ سے زیادہ کل تعداد مقرر کی جائے۔ جب قیمت بڑھتی ہے اور منافع کی سطح کو نشان زد کرتی ہے تو ، تمام لمبی پوزیشنیں بند ہوجاتی ہیں۔
اس طرح ، پوزیشن کا سائز آہستہ آہستہ نیچے کے رجحانات کے دوران بڑھتا ہے ، اور جب قیمت بحال ہوجاتی ہے اور منافع حاصل کرنے کی سطح پر پہنچ جاتی ہے تو منافع لیا جاتا ہے۔
خطرے کے کنٹرول کے اقدامات:
یہ اصلاحات مارکیٹ کی نقل و حرکت کو بہتر طور پر پکڑنے کے لئے حکمت عملی کی موافقت کو بہتر بناسکتی ہیں ، منافع کی صلاحیت اور استحکام کو بڑھا سکتی ہیں۔ ایک ہی وقت میں ، پوزیشن اور رسک مینجمنٹ کو زیادہ درست طریقے سے کم کیا جاسکتا ہے اور رسک ریٹرن ریشو کو بہتر بنایا جاسکتا ہے۔
یہ گرڈ پر مبنی لانگ مارٹنگیل متحرک پوزیشن گرڈ ٹریڈنگ حکمت عملی گرڈ لائنز کو نشانہ بناتی ہے ، اور جب قیمتیں بڑھتی ہیں تو منافع حاصل کرتی ہے۔ یہ حکمت عملی پیرامیٹرز کی ترتیبات کے ذریعہ مضبوط لچک پیش کرتی ہے۔ تاہم ، اس میں اہم ممکنہ خطرات بھی ہوتے ہیں جن پر محتاط تشخیص اور کنٹرول کی ضرورت ہوتی ہے۔ اگر رجحان کا پتہ لگانے ، متحرک منافع حاصل کرنے ، پوزیشن کی اصلاح اور دیگر خصوصیات کو شامل کیا جاسکتا ہے تو ، حکمت عملی کی کارکردگی کو مزید بہتر بنایا جاسکتا ہے۔ جب قیمتیں گرڈ لائنز کو مارتی ہیں تو خود بخود پوزیشنیں کھولنے اور شامل کرنے اور جب قیمتیں منافع کی سطح کو مارتی ہیں تو خود بخود تمام پوزیشنوں کو بند کرنے کے افعال کو سمجھتی ہے۔ مجموعی منطق نسبتا واضح ہے ، لیکن اصلاح کی گنجائش ہے۔ مارکیٹ کے حالات اور پیرامیٹرز کا مکمل جائزہ لینے کے بعد حکمت عملی محتاط استعمال کے لئے موزوں ہے۔
/*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)