ডাউনট্রেন্ড কৌশল অনুসরণ করে ডলারের মূল্য গড়

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

img

সারসংক্ষেপ

এই কৌশলটির মূল ধারণা হ'ল স্বল্পমেয়াদী হ্রাস শেষ হওয়ার পরে নিয়মিতভাবে নিম্ন গড় দামগুলি ট্র্যাক করা। বিশেষত, কৌশলটি প্রতি মাসের শেষে স্বল্পমেয়াদী হ্রাসের সমাপ্তি সনাক্ত করবে, যাতে নিয়মিত অবস্থান যুক্ত করা যায়; একই সাথে শেষ কে-লাইন বন্ধ হওয়ার পরে অবস্থানগুলি পরিষ্কার করা হয়।

কৌশল নীতি

  1. নিয়মিত ট্র্যাকিং সিগন্যাল বিচারঃ 24 * 30 কে-লাইন (এক মাস প্রতিনিধিত্ব করে) পরে, এটি নির্ধারিত হয় যে নিয়মিত ট্র্যাকিং পয়েন্ট পৌঁছেছে এবং প্রথম সংকেতটি আউটপুট করা হয়।

  2. সংক্ষিপ্ত মেয়াদী হ্রাসের সিদ্ধান্তের সমাপ্তিঃ প্রবণতা নির্ধারণের জন্য এমএসিডি সূচক ব্যবহার করুন। যখন এমএসিডি বিচ্যুতি ঘটে এবং এমএসিডি সিগন্যাল লাইনের নীচে যায়, তখন নির্ধারিত হয় যে স্বল্পমেয়াদী হ্রাস শেষ হয়েছে।

  3. প্রবেশের নিয়মঃ যখন নিয়মিত ট্র্যাকিং সিগন্যাল এবং স্বল্পমেয়াদী হ্রাস সিগন্যালের সমাপ্তি একই সময়ে ট্রিগার করা হয়, তখন একটি ট্র্যাকিং সিগন্যাল মুক্তি পায় এবং দীর্ঘ পজিশন খোলা হয়।

  4. প্রস্থান নিয়মঃ শেষ কে লাইন বন্ধ হলে, সব অবস্থান পরিষ্কার করুন।

উপরের কৌশলটি মূল ট্রেডিং প্রবাহ এবং নীতিগুলি। এটি লক্ষণীয় যে কৌশলটি ব্যাকটেস্টে প্রতি মাসে $ 1,000 ট্র্যাক করার জন্য ডিফল্ট, যা 33 মাস পর্যন্ত প্রসারিত হবে, অর্থাৎ মোট বিনিয়োগ $ 33,000.

সুবিধা বিশ্লেষণ

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

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

ঝুঁকি এবং সমাধান

কৌশলটির প্রধান ঝুঁকি হ'ল স্বল্পমেয়াদী হ্রাসের সমাপ্তি সঠিকভাবে নির্ধারণের অক্ষমতা। হ্রাসের সমাপ্তির MACD সূচকের বিচার বিলম্ব হতে পারে, যা সর্বোত্তম পয়েন্টে প্রবেশের ব্যর্থতার দিকে পরিচালিত করবে। উপরন্তু, তহবিলের বিচ্ছিন্ন বিনিয়োগও অপারেটিং ব্যয় বৃদ্ধি করে।

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

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

কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অপ্টিমাইজ করা যেতে পারেঃ

  1. অতিরিক্ত ঘন ঘন ট্রেডিংয়ের সমস্যা কমাতে নিয়মিত ট্র্যাকিং চক্রকে অনুকূল করুন, যেমন প্রতি দুই মাসে একবার ট্র্যাকিং।

  2. স্বল্পমেয়াদী হ্রাসের সমাপ্তি নির্ধারণের জন্য আরও সূচক অন্তর্ভুক্ত করুন, প্রবেশের পয়েন্টটি সর্বনিম্ন পয়েন্টের কাছাকাছি রাখুন।

  3. সর্বোত্তম কনফিগারেশন খুঁজে পেতে প্রতি মাসে বিনিয়োগ করা তহবিলের পরিমাণ অনুকূল করুন।

  4. দাম খুব গভীর হলে অত্যধিক ক্ষতি এড়াতে স্টপ লস কৌশল অন্তর্ভুক্ত করার চেষ্টা করুন।

  5. সর্বোত্তম হোল্ডিং দিনগুলি খুঁজে বের করার জন্য রিটার্নগুলিতে বিভিন্ন হোল্ডিং সময়ের প্রভাব পরীক্ষা করুন।

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

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


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


আরো