এই কৌশলটি একটি গ্রিড-ভিত্তিক লং মার্টিনগেল ডায়নামিক পজিশন গ্রিড ট্রেডিং কৌশল। মূল ধারণাটি হ'ল যখন দাম গ্রিড লাইনে হিট হয় তখন বিদ্যমান অবস্থানের সংখ্যার ভিত্তিতে অবস্থান আকারকে গতিশীলভাবে সামঞ্জস্য করা, যখন সর্বোচ্চ মোট খোলা অবস্থানের সংখ্যা সেট করা হয়। যখন দাম বৃদ্ধি পায় এবং লাভের স্তরটি হিট করে, তখন সমস্ত দীর্ঘ অবস্থান বন্ধ হয়ে যায়।
এই ভাবে, নিম্নমুখী প্রবণতার সময় পজিশনের আকার ধীরে ধীরে বৃদ্ধি পায় এবং যখন দাম পুনরুদ্ধার হয় এবং লাভের স্তরে পৌঁছায় তখন মুনাফা নেওয়া হয়।
ঝুঁকি নিয়ন্ত্রণের ব্যবস্থাঃ
এই অপ্টিমাইজেশানগুলি বাজারের গতিবিধিগুলি আরও ভালভাবে ক্যাপচার করার জন্য কৌশলটির অভিযোজনযোগ্যতা উন্নত করতে পারে, লাভের সম্ভাবনা এবং স্থিতিশীলতা বাড়িয়ে তুলতে পারে। একই সাথে, আরও সুনির্দিষ্ট অবস্থান এবং ঝুঁকি ব্যবস্থাপনা ড্রাউনডাউনগুলি হ্রাস করতে পারে এবং ঝুঁকি-প্রতিফল অনুপাত উন্নত করতে পারে।
এই গ্রিড-ভিত্তিক লং মার্টিনগেল ডায়নামিক পজিশন গ্রিড ট্রেডিং কৌশলটি ধীরে ধীরে পজিশন যুক্ত করে ডাউনট্রেন্ডের সময় গড় হোল্ডিং মূল্য হ্রাস করার চেষ্টা করে এবং দাম বাড়ার সাথে সাথে মুনাফা নেয়। কৌশলটি প্যারামিটার সেটিংসের মাধ্যমে শক্তিশালী নমনীয়তা সরবরাহ করে। তবে এটি উল্লেখযোগ্য সম্ভাব্য ঝুঁকিও বহন করে যা সাবধানে মূল্যায়ন এবং নিয়ন্ত্রণের প্রয়োজন। যদি প্রবণতা সনাক্তকরণ, গতিশীল লাভ গ্রহণ, অবস্থান অপ্টিমাইজেশন এবং অন্যান্য বৈশিষ্ট্য যুক্ত করা যায় তবে কৌশলটির কার্যকারিতা আরও উন্নত হতে পারে। কৌশলটি স্বয়ংক্রিয়ভাবে খোলার এবং অবস্থানগুলি যোগ করার ফাংশন উপলব্ধি করে যখন দামগুলি গ্রিড লাইনে আঘাত করে এবং স্বয়ংক্রিয়ভাবে সমস্ত অবস্থান বন্ধ করে যখন দামগুলি লাভের স্তরে আঘাত করে। সামগ্রিক যুক্তি তুলনামূলকভাবে স্পষ্ট, তবে অপ্টিমাইজেশনের জন্য জায়গা রয়েছে। কৌশলটি বাজারের পরিস্থিতি এবং প্যারামিটারগুলি পুঙ্খানুপুঙ্খভাবে মূল্যায়ন করার পরে সতর্কতার সাথে ব্যবহারের জন্য উপযুক্ত।
/*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)