গতিশীল গ্রিড ট্রেডিং কৌশল

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

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)

আরো