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