বলিঙ্গার ব্যান্ড এবং RSI সূচকের উপর ভিত্তি করে প্রগতিশীল DCA কৌশল


সৃষ্টির তারিখ: 2024-01-18 11:23:15 অবশেষে সংশোধন করুন: 2024-01-18 11:23:15
অনুলিপি: 2 ক্লিকের সংখ্যা: 941
1
ফোকাস
1617
অনুসারী

বলিঙ্গার ব্যান্ড এবং RSI সূচকের উপর ভিত্তি করে প্রগতিশীল DCA কৌশল

ওভারভিউ

এই কৌশলটির নাম হল ডাবল ইন্ডিকেটর স্টেগমেন্টাল ডিসিএ কৌশল। এটি ব্রিনের চ্যানেল এবং আপেক্ষিক শক্তি সূচক (আরএসআই) এর উপর ভিত্তি করে দুটি সূচক তৈরি করে এবং ক্রমান্বয়ে পজিশনিং পদ্ধতি ব্যবহার করে ঝুঁকি পরিচালনা করে। এর মূল ধারণাটি হ’ল বুল মার্কেটে প্রবণতা ধরা এবং সূচকগুলি ব্যবহার করে মাল্টি-হেড সিগন্যাল তৈরি করা; এবং ব্যয় হ্রাস করার জন্য ক্রমান্বয়ে ডিসিএ কৌশল ব্যবহার করা।

কৌশল নীতি

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

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

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

  1. ডাবল ইনডিকেটর স্পষ্ট বিচার প্রবণতার সাথে সংযুক্ত, সংকেত নির্ভুলতা বৃদ্ধি করে।

  2. ধাপে ধাপে ডিসিএ কৌশলগুলি পজিশনের খরচ কমিয়ে দেয় এবং ক্ষতির ঝুঁকি হ্রাস করে।

  3. স্টপ লস এবং স্টপ স্টপ শর্তগুলি নির্ধারণ করা হয়েছে, যা সময়মতো ক্ষতি নিয়ন্ত্রণের ঝুঁকি বন্ধ করতে পারে এবং আংশিক লাভ নিশ্চিত করতে পারে।

  4. পজিশন খোলার তারিখের পরিসীমা প্যারামিটার যুক্ত করুন, যা নির্দিষ্ট সময়কালের জন্য পরীক্ষা এবং অপ্টিমাইজ করা যেতে পারে।

ঝুঁকি ও সমাধান

  1. বুলিং চ্যানেল এবং আরএসআই উভয়ই ব্যর্থ হতে পারে। আপনি বিভিন্ন প্যারামিটার সমন্বয় পরীক্ষা করতে পারেন সেরা পয়েন্ট খুঁজতে।

  2. ধাপে ধাপে ডিসিএ বড় পতনের পরিস্থিতিতে ক্রমাগত অতিরিক্ত পজিশনের ফলে ক্ষতির কারণ হতে পারে। সর্বোচ্চ পজিশনিং সেট করা যেতে পারে এবং স্টপ লিনের যথাযথভাবে ঝুঁকি নিয়ন্ত্রণের উন্নতি করতে পারে।

  3. অপ্রত্যাশিত ঘটনাগুলি এড়ানো যায় না এমন অস্বাভাবিক আচরণ। সিস্টেমিক ঝুঁকি নির্ধারণের জন্য বড় প্যাকেজ সূচক যুক্ত করা যেতে পারে, অস্বাভাবিক সময়গুলি এড়ানো যায়।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. MIX সূচকের পরামিতিগুলিকে আরও সুনির্দিষ্ট লেনদেনের সংকেত পাওয়ার জন্য অপ্টিমাইজ করার জন্য পরীক্ষা করুন।

  2. স্টপ লস স্টপ প্যারামিটারগুলিকে অপ্টিমাইজ করুন, লস-রেট অনুপাতকে সর্বাধিক করুন।

  3. বিভিন্ন পজিশনের মাত্রা এবং সংখ্যা পরীক্ষা করে সেরা সমন্বয় খুঁজে বের করুন।

  4. ট্রেডিং ভলিউম কন্ট্রোল মডিউল যুক্ত করার কথা বিবেচনা করা যেতে পারে, যা নির্দিষ্ট ট্রেডিং ভলিউমের শর্তে কৌশলটি চালু বা বন্ধ করে দেয়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © lagobrian23
//@version=4
strategy(title = 'Bollinger Bands and RSI mix with DCA', shorttitle = 'BB/RSI with DCA',pyramiding = 20, calc_on_every_tick = true, overlay = false )
source=close
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

// Bollinger Band

length = input(20,title = 'BB lookback length', minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
BBval = (src - basis)/dev*30+50
offset = input(0, title = "Offset", type = input.integer, minval = -500, maxval = 500)
mix=(d + BBval)/2

//plot
//plot(k, "K", color=#606060)
plot(BBval, "BBval", color=#872323, offset = offset)
plot(d, "D", color=#FF6A00)
h0 = hline(80, "Upper Band", color=#606060)
h1 = hline(20, "Lower Band", color=#606060)
plot(mix, "MIX", color=#888888, linewidth=3)

//background MIX
bgcolor(mix < 20 ? color.green : color.white, transp=50)
bgcolor(mix > 80 ? color.red : color.white, transp=50)

// Choosing the date range
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
toMonth = input(defval = 1,    title = "To Month",      type = input.integer, minval = 1, maxval = 12)
toDay   = input(defval = 1,    title = "To Day",        type = input.integer, minval = 1, maxval = 31)
toYear  = input(defval = 2112, title = "To Year",       type = input.integer, minval = 1970)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(toYear, toMonth, toDay, 23, 59)        // backtest finish window
window()  => true

// Initializing the strategy paraeters

P = input(defval = 1, title = 'Amount (P)' , type = input.integer, minval = 1, maxval = 100)
X = input(defval = 2, title = '% Price drop for consecutive entries(X)', type = input.float, minval = 1, maxval = 100)
B_tp = input(defval = 10, title = '% Level for Take Profit (B)', type = input.float , minval = 1, maxval = 100)
D_sl = input(defval = 10, title = '% Level for Stop Loss (D)', type = input.float, minval = 1, maxval = 100)
A = input(defval = 5, title = 'Max consecutive entries (A)', type = input.integer, minval = 2, maxval = 20)
Z = input(defval = 0.5, title = 'Z', type = input.float , minval = 0, maxval = 10)

// Declaring key DCA variables
entry_price = 0.0
entry_price := na(entry_price[1]) ? na : entry_price[1]
new_entry = 0.0
consec_entryCondition = false
// Implementing the strategy
longEntry = crossover(mix,20)
exitLongs = crossunder(mix, 80)

if(longEntry)
    entry_price := close
    strategy.entry('main_LE', strategy.long , P, when = window() and longEntry)

// Exiting conditions
stoploss = strategy.position_avg_price*(1-(D_sl/100))
takeprofit = strategy.position_avg_price*(1+(B_tp/100))
slCondition = crossunder(close, stoploss)
tpCondition = crossover(close, takeprofit)

// We want to exit if the 'mix' indicator crosses 80, take profit is attained or stop loss is tagged.
exitConditions = exitLongs or slCondition or tpCondition

// Consecutive entries upto A times
// strategy.risk.max_intraday_filled_orders(A)

//Dollar-Cost-Averaging
// Enter long whenever price goes down X%: amount set to (P+Y)*Z
newAmount = (P+X)*Z
// If we haven't reached max open trades, buy newAmount immediately price crosses under X% lower the previous entry price
new_entry := entry_price - ((X/100)*entry_price)
consec_entryCondition := crossunder(close, new_entry)
if(consec_entryCondition and strategy.opentrades != A)
    strategy.entry('consec_LE', strategy.long, newAmount, oca_name = 'consecLongs', when = window() and consec_entryCondition)
    entry_price := close
    
// Exiting
// The main trade is closed only when the  main exit conditions are satisfied
strategy.close('main_LE', comment = 'Main Long Closed', when = window() and exitConditions)

// A consective long is closed only when tp or sl is tagged
strategy.exit('ext a consec', 'consec_LE', loss = D_sl*strategy.position_avg_price , profit = B_tp*strategy.position_avg_price, oca_name =  'consecLongs')