এই কৌশলটির মূল ধারণা হ'ল স্বল্পমেয়াদী হ্রাস শেষ হওয়ার পরে নিয়মিতভাবে নিম্ন গড় দামগুলি ট্র্যাক করা। বিশেষত, কৌশলটি প্রতি মাসের শেষে স্বল্পমেয়াদী হ্রাসের সমাপ্তি সনাক্ত করবে, যাতে নিয়মিত অবস্থান যুক্ত করা যায়; একই সাথে শেষ কে-লাইন বন্ধ হওয়ার পরে অবস্থানগুলি পরিষ্কার করা হয়।
নিয়মিত ট্র্যাকিং সিগন্যাল বিচারঃ 24 * 30 কে-লাইন (এক মাস প্রতিনিধিত্ব করে) পরে, এটি নির্ধারিত হয় যে নিয়মিত ট্র্যাকিং পয়েন্ট পৌঁছেছে এবং প্রথম সংকেতটি আউটপুট করা হয়।
সংক্ষিপ্ত মেয়াদী হ্রাসের সিদ্ধান্তের সমাপ্তিঃ প্রবণতা নির্ধারণের জন্য এমএসিডি সূচক ব্যবহার করুন। যখন এমএসিডি বিচ্যুতি ঘটে এবং এমএসিডি সিগন্যাল লাইনের নীচে যায়, তখন নির্ধারিত হয় যে স্বল্পমেয়াদী হ্রাস শেষ হয়েছে।
প্রবেশের নিয়মঃ যখন নিয়মিত ট্র্যাকিং সিগন্যাল এবং স্বল্পমেয়াদী হ্রাস সিগন্যালের সমাপ্তি একই সময়ে ট্রিগার করা হয়, তখন একটি ট্র্যাকিং সিগন্যাল মুক্তি পায় এবং দীর্ঘ পজিশন খোলা হয়।
প্রস্থান নিয়মঃ শেষ কে লাইন বন্ধ হলে, সব অবস্থান পরিষ্কার করুন।
উপরে মূল ট্রেডিং প্রবাহ এবং কৌশল নীতি। এটা লক্ষনীয় যে কৌশল ডিফল্ট ট্র্যাকিংপ্রতি মাসে ব্যাকটেস্টে ১,০০০ টাকা, যা ৩৩ মাস পর্যন্ত বাড়ানো হবে, অর্থাৎ মোট বিনিয়োগ হবে33,000.
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এটি নিয়মিতভাবে নিম্ন স্তরে অবস্থান তৈরি করতে পারে। দীর্ঘমেয়াদী দৃষ্টিকোণ থেকে, এটি উচ্চ রিটার্ন উত্পন্ন করার জন্য তুলনামূলকভাবে সাশ্রয়ী মূল্যের গড় ব্যয় মূল্য অর্জন করতে পারে। এছাড়াও, স্বল্পমেয়াদী কেনার পয়েন্টগুলি সনাক্ত করতে এমএসিডি সূচক ব্যবহার করাও বেশ নির্ভরযোগ্য এবং স্পষ্ট, যা একটি নির্দিষ্ট পরিমাণে একটি ব্লকএন্ডে প্রবেশ করা এড়াতে পারে এবং এটি কিছু পরিমাণে ক্ষতিও এড়াতে পারে।
সাধারণভাবে, এটি একটি ব্যয় গড় কৌশল যা মাঝারি এবং দীর্ঘমেয়াদী হোল্ডারদের জন্য সন্তোষজনক রিটার্ন অর্জনের জন্য নিয়মিত লট কেনার জন্য আরও উপযুক্ত।
কৌশলটির প্রধান ঝুঁকি হ'ল স্বল্পমেয়াদী হ্রাসের সমাপ্তি সঠিকভাবে নির্ধারণের অক্ষমতা। হ্রাসের সমাপ্তির MACD সূচকের বিচার বিলম্ব হতে পারে, যা সর্বোত্তম পয়েন্টে প্রবেশের ব্যর্থতার দিকে পরিচালিত করবে। উপরন্তু, তহবিলের বিচ্ছিন্ন বিনিয়োগও অপারেটিং ব্যয় বৃদ্ধি করে।
প্রবণতা নির্ধারণের জন্য আরও সূচক যুক্ত করার কথা বিবেচনা করুন, যেমন বোলিঞ্জার ব্যান্ড, কেডিজে ইত্যাদি। এই সূচকগুলি পূর্বনির্ধারিত বিপরীত সময়সূচী প্রত্যাশা করতে পারে। একই সাথে, প্রতি মাসে বিনিয়োগ করা তহবিলের পরিমাণ অপ্টিমাইজ করা যেতে পারে যাতে রিটার্নের উপর অপারেটিং ব্যয়ের প্রভাব হ্রাস পায়।
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অপ্টিমাইজ করা যেতে পারেঃ
অতিরিক্ত ঘন ঘন ট্রেডিংয়ের সমস্যা কমাতে নিয়মিত ট্র্যাকিং চক্রকে অনুকূল করুন, যেমন প্রতি দুই মাসে একবার ট্র্যাকিং।
স্বল্পমেয়াদী হ্রাসের সমাপ্তি নির্ধারণের জন্য আরও সূচক অন্তর্ভুক্ত করুন, প্রবেশের পয়েন্টটি সর্বনিম্ন পয়েন্টের কাছাকাছি রাখুন।
সর্বোত্তম কনফিগারেশন খুঁজে পেতে প্রতি মাসে বিনিয়োগ করা তহবিলের পরিমাণ অনুকূল করুন।
দাম খুব গভীর হলে অত্যধিক ক্ষতি এড়াতে স্টপ লস কৌশল অন্তর্ভুক্ত করার চেষ্টা করুন।
সর্বোত্তম হোল্ডিং দিনগুলি খুঁজে বের করার জন্য রিটার্নগুলিতে বিভিন্ন হোল্ডিং সময়ের প্রভাব পরীক্ষা করুন।
এই ডাউনট্রেন্ড কৌশলটির পরে ডলারের ব্যয় গড়ের সামগ্রিক ধারণাটি স্পষ্ট এবং সহজেই বোঝা যায়। নিয়মিত পুনর্নির্মাণ এবং স্বল্পমেয়াদী বিচারের সংমিশ্রণে এটি আরও সাশ্রয়ী মূল্যের গড় ব্যয় মূল্য পেতে পারে। এই কৌশলটির মাঝারি এবং দীর্ঘমেয়াদী হোল্ডিং স্থিতিশীল রিটার্ন তৈরি করতে পারে এবং দীর্ঘমেয়াদী বিনিয়োগের মান অনুসরণকারী বিনিয়োগকারীদের জন্য উপযুক্ত। একই সাথে, কৌশলটি আরও উন্নত করার জন্য কিছু দিক রয়েছে যা অনুকূলিত করা যেতে পারে যাতে এর কর্মক্ষমতা এক স্তরে এগিয়ে যেতে পারে।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m 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/ // © BHD_Trade_Bot // @version=5 strategy( shorttitle = 'DCA After Downtrend v2', title = 'DCA After Downtrend v2 (by BHD_Trade_Bot)', overlay = true, calc_on_every_tick = false, calc_on_order_fills = false, use_bar_magnifier = false, pyramiding = 1000, initial_capital = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = strategy.commission.percent, commission_value = 1.1) // Backtest Time Period start_year = input(title='Start year' ,defval=2017) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_time = timestamp(start_year, start_month, start_day, 00, 00) end_year = input(title='end year' ,defval=2050) end_month = input(title='end month' ,defval=1) end_day = input(title='end day' ,defval=1) end_time = timestamp(end_year, end_month, end_day, 23, 59) window() => time >= start_time and time <= end_time ? true : false h1_last_bar = (math.min(end_time, timenow) - time)/1000/60/60 < 2 // EMA ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // EMA_CD emacd = ema50 - ema200 emacd_signal = ta.ema(emacd, 20) hist = emacd - emacd_signal // BHD Unit bhd_unit = ta.rma(high - low, 200) * 2 bhd_upper = ema200 + bhd_unit bhd_upper2 = ema200 + bhd_unit * 2 bhd_upper3 = ema200 + bhd_unit * 3 bhd_upper4 = ema200 + bhd_unit * 4 bhd_upper5 = ema200 + bhd_unit * 5 bhd_lower = ema200 - bhd_unit bhd_lower2 = ema200 - bhd_unit * 2 bhd_lower3 = ema200 - bhd_unit * 3 bhd_lower4 = ema200 - bhd_unit * 4 bhd_lower5 = ema200 - bhd_unit * 5 // Count n candles after x long entries var int nPastCandles = 0 var int entryNumber = 0 if window() nPastCandles := nPastCandles + 1 // ENTRY CONDITIONS // 24 * 30 per month entry_condition1 = nPastCandles > entryNumber * 24 * 30 // End of downtrend entry_condition2 = emacd < 0 and hist < 0 and hist > hist[2] ENTRY_CONDITIONS = entry_condition1 and entry_condition2 if ENTRY_CONDITIONS entryNumber := entryNumber + 1 entryId = 'Long ' + str.tostring(entryNumber) strategy.entry(entryId, strategy.long) // CLOSE CONDITIONS // Last bar CLOSE_CONDITIONS = barstate.islast or h1_last_bar if CLOSE_CONDITIONS strategy.close_all() // Draw colorRange(src) => if src > bhd_upper5 color.rgb(255,0,0) else if src > bhd_upper4 color.rgb(255,150,0) else if src > bhd_upper3 color.rgb(255,200,0) else if src > bhd_upper2 color.rgb(100,255,0) else if src > bhd_upper color.rgb(0,255,100) else if src > ema200 color.rgb(0,255,150) else if src > bhd_lower color.rgb(0,200,255) else if src > bhd_lower2 color.rgb(0,150,255) else if src > bhd_lower3 color.rgb(0,100,255) else if src > bhd_lower4 color.rgb(0,50,255) else color.rgb(0,0,255) bhd_upper_line = plot(bhd_upper, color=color.new(color.teal, 90)) bhd_upper_line2 = plot(bhd_upper2, color=color.new(color.teal, 90)) bhd_upper_line3 = plot(bhd_upper3, color=color.new(color.teal, 90)) bhd_upper_line4 = plot(bhd_upper4, color=color.new(color.teal, 90)) bhd_upper_line5 = plot(bhd_upper5, color=color.new(color.teal, 90)) bhd_lower_line = plot(bhd_lower, color=color.new(color.teal, 90)) bhd_lower_line2 = plot(bhd_lower2, color=color.new(color.teal, 90)) bhd_lower_line3 = plot(bhd_lower3, color=color.new(color.teal, 90)) bhd_lower_line4 = plot(bhd_lower4, color=color.new(color.teal, 90)) bhd_lower_line5 = plot(bhd_lower5, color=color.new(color.teal, 90)) // fill(bhd_upper_line5, bhd_lower_line5, color=color.new(color.teal, 95)) plot(ema50, color=color.orange, linewidth=3) plot(ema200, color=color.teal, linewidth=3) plot(close, color=color.teal, linewidth=1) plot(close, color=colorRange(close), linewidth=3, style=plot.style_circles)