গ্রিড-ভিত্তিক লং মার্টিঙ্গেল ডাইনামিক পজিশন গ্রিড ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-০৩-২২
ট্যাগঃ

img

কৌশল ওভারভিউ

এই কৌশলটি একটি গ্রিড-ভিত্তিক লং মার্টিনগেল ডায়নামিক পজিশন গ্রিড ট্রেডিং কৌশল। মূল ধারণাটি হ'ল যখন দাম গ্রিড লাইনে হিট হয় তখন বিদ্যমান অবস্থানের সংখ্যার ভিত্তিতে অবস্থান আকারকে গতিশীলভাবে সামঞ্জস্য করা, যখন সর্বোচ্চ মোট খোলা অবস্থানের সংখ্যা সেট করা হয়। যখন দাম বৃদ্ধি পায় এবং লাভের স্তরটি হিট করে, তখন সমস্ত দীর্ঘ অবস্থান বন্ধ হয়ে যায়।

কৌশলগত নীতি

  1. গ্রিড সাইজ প্যারামিটারের উপর ভিত্তি করে মূল্যকে সমানভাবে বিভক্ত গ্রিডে ভাগ করুন।
  2. প্রতিটি গ্রিড লাইনে লং লিমিট অর্ডার দিন।
  3. যখন বর্তমান মূল্য একটি গ্রিড লাইন আঘাতঃ
    • যদি বর্তমান খোলা পজিশনের সংখ্যা ০ হয়, তাহলে start_lot আকারের একটি পজিশন খুলুন।
    • যদি বর্তমান খোলা পজিশনের সংখ্যা শূন্যের চেয়ে বড় হয় এবং বর্তমান গ্রিডের মূল্য পূর্ববর্তী প্রবেশ মূল্যের চেয়ে কম হয়, তাহলে বর্তমান গ্রিডের মূল্যে একটি নতুন লং পজিশন খুলুন যার আকার মাল্টিফ্যাক্টর আগের পজিশনের আকারের গুণ।
  4. খোলা পজিশনের সর্বাধিক সংখ্যা Max Open Orders প্যারামিটার দ্বারা নিয়ন্ত্রিত হয়।
  5. পজিশন খোলার পর, গড় প্রবেশ মূল্যের TakeProfit পয়েন্ট উপরে একটি লাভের স্তর সেট করুন।
  6. যখন বর্তমান মূল্য লাভের স্তরে পৌঁছবে, তখন সমস্ত লং পজিশন বন্ধ করুন এবং প্যারামিটারগুলি পুনরায় সেট করুন।

এই ভাবে, নিম্নমুখী প্রবণতার সময় পজিশনের আকার ধীরে ধীরে বৃদ্ধি পায় এবং যখন দাম পুনরুদ্ধার হয় এবং লাভের স্তরে পৌঁছায় তখন মুনাফা নেওয়া হয়।

কৌশলগত সুবিধা

  1. ডায়নামিক পজিশন সাইজিংঃ বর্তমান সংখ্যক খোলা পজিশনের উপর ভিত্তি করে প্রতিটি এন্ট্রির জন্য পজিশনের আকারকে গতিশীলভাবে সামঞ্জস্য করুন। এটি ধীরে ধীরে অব্যাহত নেমে যাওয়ার প্রবণতার সময় এক্সপোজার বাড়ায়, কৌশলটির মুনাফা সম্ভাবনা বাড়ায়।
  2. নমনীয় পরামিতিঃ গ্রিড সাইজ, স্টার্ট_লট, মাল্টিফ্যাক্টর এবং অন্যান্য পরামিতিগুলি গ্রিডের আকার, প্রাথমিক অবস্থানের আকার, অবস্থানের স্কেলিং ফ্যাক্টর ইত্যাদির উপর নমনীয় নিয়ন্ত্রণের অনুমতি দেয়।
  3. নিয়ন্ত্রণযোগ্য ঝুঁকিঃ Max Open Orders প্যারামিটারটি অতিরিক্ত এক্সপোজার রোধ করার জন্য সর্বাধিক সংখ্যক খোলা পজিশন নিয়ন্ত্রণ করে। একই সময়ে, একটি লাভের স্তর নির্ধারণ করা সময়মত লাভের গ্রহণকে ড্রডাউনগুলি নিয়ন্ত্রণ করতে সক্ষম করে।

কৌশলগত ঝুঁকি

  1. কোন স্টপ লস নেইঃ কৌশলটির স্টপ লস নেই। যদি দামটি ভাঙ্গতে থাকে তবে এটি উল্লেখযোগ্য ক্ষতির ঝুঁকিতে পড়তে পারে।
  2. প্যারামিটার সংবেদনশীলতাঃ মাল্টিফ্যাক্টর এর মতো প্যারামিটারগুলির জন্য কৌশলটির কার্যকারিতা বেশ সংবেদনশীল। অনুপযুক্ত প্যারামিটারগুলি ঝুঁকি নিয়ে আসতে পারে।
  3. উচ্চ অস্থিরতাঃ কৌশলটি খুব অস্থির বাজারের অবস্থার সময় ঘন ঘন পজিশন খুলতে এবং বন্ধ করতে পারে, যা সম্ভাব্য অতিরিক্ত স্লিপ এবং কমিশন খরচ সৃষ্টি করতে পারে।

ঝুঁকি নিয়ন্ত্রণের ব্যবস্থাঃ

  1. ঝুঁকি সহনশীলতার উপর ভিত্তি করে multifactor এর মতো প্যারামিটারগুলি সাবধানে সেট করুন। প্রয়োজন হলে স্টপ লস লজিক কোডে যুক্ত করা যেতে পারে।
  2. যথাযথ পরামিতি নির্বাচন করার জন্য সাবধানে ব্যাকটেস্ট এবং কাগজ বাণিজ্য।
  3. অত্যন্ত অস্থির বাজারের অবস্থার মধ্যে কৌশলটির পারফরম্যান্স মূল্যায়ন করুন। যদি প্রয়োজন হয়, পরামিতিগুলি সামঞ্জস্য করে বা ব্যবহারের দৃশ্যকল্পগুলি সীমাবদ্ধ করে ঝুঁকি হ্রাস করা যেতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

  1. প্রবণতা সনাক্তকরণ যোগ করুনঃ পজিশন খোলার সময় মূল্যের ক্রিয়াকলাপের উপর ভিত্তি করে প্রবণতা নির্ধারণ করুন। যদি প্রবণতা নেতিবাচক বলে মনে হয় তবে ঝুঁকি কমাতে নতুন দীর্ঘ পজিশন খোলার থেকে বিরত থাকুন।
  2. গতিশীল মুনাফা গ্রহণ করুনঃ মূল্যের কর্ম, অস্থিরতা এবং অন্যান্য সূচকগুলির উপর ভিত্তি করে গতিশীলভাবে মুনাফা গ্রহণের স্তরটি সামঞ্জস্য করুন। মুনাফা বৃদ্ধির জন্য প্রবণতা শক্তিশালী হলে মুনাফা গ্রহণের স্তর বাড়ান।
  3. পজিশন ম্যানেজমেন্টকে অপ্টিমাইজ করুনঃ পজিশনের যোগ করার সময়, স্কেলিং ফ্যাক্টর বিবেচনা করার পাশাপাশি, আরও সঠিকভাবে পজিশন আকার নিয়ন্ত্রণের জন্য অ্যাকাউন্ট ব্যালেন্স, বর্তমান এক্সপোজার ইত্যাদি অন্তর্ভুক্ত করুন।
  4. অন্যান্য সংকেতগুলির সাথে একত্রিত করুন: গ্রিড ট্রেডিংকে অন্যান্য ট্রেন্ড ডিটেকশন, ওসিলেশন ডিটেকশন এবং অন্যান্য সূচক সংকেতগুলির সাথে একীভূত করুন যাতে বাজারকে ব্যাপকভাবে বিচার করা যায় এবং ট্রেডিংকে গাইড করা যায়।

এই অপ্টিমাইজেশানগুলি বাজারের গতিবিধিগুলি আরও ভালভাবে ক্যাপচার করার জন্য কৌশলটির অভিযোজনযোগ্যতা উন্নত করতে পারে, লাভের সম্ভাবনা এবং স্থিতিশীলতা বাড়িয়ে তুলতে পারে। একই সাথে, আরও সুনির্দিষ্ট অবস্থান এবং ঝুঁকি ব্যবস্থাপনা ড্রাউনডাউনগুলি হ্রাস করতে পারে এবং ঝুঁকি-প্রতিফল অনুপাত উন্নত করতে পারে।

সংক্ষিপ্তসার

এই গ্রিড-ভিত্তিক লং মার্টিনগেল ডায়নামিক পজিশন গ্রিড ট্রেডিং কৌশলটি ধীরে ধীরে পজিশন যুক্ত করে ডাউনট্রেন্ডের সময় গড় হোল্ডিং মূল্য হ্রাস করার চেষ্টা করে এবং দাম বাড়ার সাথে সাথে মুনাফা নেয়। কৌশলটি প্যারামিটার সেটিংসের মাধ্যমে শক্তিশালী নমনীয়তা সরবরাহ করে। তবে এটি উল্লেখযোগ্য সম্ভাব্য ঝুঁকিও বহন করে যা সাবধানে মূল্যায়ন এবং নিয়ন্ত্রণের প্রয়োজন। যদি প্রবণতা সনাক্তকরণ, গতিশীল লাভ গ্রহণ, অবস্থান অপ্টিমাইজেশন এবং অন্যান্য বৈশিষ্ট্য যুক্ত করা যায় তবে কৌশলটির কার্যকারিতা আরও উন্নত হতে পারে। কৌশলটি স্বয়ংক্রিয়ভাবে খোলার এবং অবস্থানগুলি যোগ করার ফাংশন উপলব্ধি করে যখন দামগুলি গ্রিড লাইনে আঘাত করে এবং স্বয়ংক্রিয়ভাবে সমস্ত অবস্থান বন্ধ করে যখন দামগুলি লাভের স্তরে আঘাত করে। সামগ্রিক যুক্তি তুলনামূলকভাবে স্পষ্ট, তবে অপ্টিমাইজেশনের জন্য জায়গা রয়েছে। কৌশলটি বাজারের পরিস্থিতি এবং প্যারামিটারগুলি পুঙ্খানুপুঙ্খভাবে মূল্যায়ন করার পরে সতর্কতার সাথে ব্যবহারের জন্য উপযুক্ত।


/*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)

 

আরো