
গতিশীল প্রবণতা সিঙ্ক্রোনাইজেশন কৌশলটি আপেক্ষিক গতিশীলতা সূচক ((আরএমআই) এবং সুপার ট্রেন্ডিং সূচকগুলির সুবিধাগুলিকে একত্রিত করে গতিশীলতা বিশ্লেষণ এবং প্রবণতা বিচারের একটি কার্যকর সমন্বয় অর্জন করে। এই কৌশলটি একই সাথে দামের পরিবর্তনের প্রবণতা এবং বাজারের গতিশীলতার স্তরের দিকে নজর দেয় এবং আরও বিস্তৃত দৃষ্টিকোণ থেকে বাজারের দিকনির্দেশের বিচার করে।
RMI হল RSI এর একটি উন্নত সংস্করণ। এটি বাজারের গতিশীলতা আরও সঠিকভাবে নির্ধারণের জন্য মূল্য পরিবর্তনের দিকনির্দেশনা এবং পরিমাণের মতো আরও বৈশিষ্ট্য অন্তর্ভুক্ত করে।
RMI এর গণনা পদ্ধতি হলঃ প্রথমে একটি নির্দিষ্ট সময়ের মধ্যে গড় উত্থান এবং গড় পতন গণনা করুন। আরএসআইয়ের বিপরীতে, আরএমআই কেবলমাত্র ইতিবাচক বৃদ্ধি এবং নেতিবাচক বৃদ্ধির পরিবর্তে দিনের সমাপ্তির দামের পরিবর্তনের মান ব্যবহার করে। তারপরে গড় উত্থানকে গড় পতন দ্বারা ভাগ করুন এবং তারপরে পুনঃপ্রতিষ্ঠিতকরণ প্রক্রিয়াটি করুন যাতে মানটি 0-100 এর মধ্যে থাকে।
এই কৌশলটি আরএমআই এবং এমএফআই এর গড় ব্যবহার করে, পূর্বনির্ধারিত পজিটিভ ডায়নামিক থ্রেশহোল্ড এবং নেতিবাচক ডায়নামিক থ্রেশহোল্ডের সাথে তুলনা করে, বর্তমান বাজারের গতিশীলতার স্তরটি বিচার করে, যার ভিত্তিতে পজিশন স্থাপন এবং পজিশন বন্ধ করার সিদ্ধান্ত নেওয়া হয়।
সুপার ট্রেন্ডিং সূচকটি উচ্চতর সময়কালের উপর ভিত্তি করে বড় প্রবণতার বিচার করতে পারে। এটি প্রকৃত তরঙ্গদৈর্ঘ্যের উপর ভিত্তি করে এটিআর ডায়নামিক অ্যাডজাস্টমেন্ট প্যারামিটারগুলিকে কার্যকরভাবে ট্রেন্ড টার্নপয়েন্ট সনাক্ত করতে পারে।
এই কৌশলটি ভলিউম ওজনের গড় VWMA যোগ করেছে, যা গুরুত্বপূর্ণ প্রবণতা পরিবর্তন সনাক্ত করার ক্ষমতা আরও বাড়িয়ে তোলে।
এই কৌশলটি লটারি, কুপার বা দ্বি-মুখী ট্রেডিংয়ের বিকল্প দেয়। এটি ব্যবসায়ীদের তাদের বাজার দৃষ্টিভঙ্গি এবং ঝুঁকি পছন্দ অনুসারে নমনীয়ভাবে সামঞ্জস্য করতে দেয়।
একক গতিশীলতা বা প্রবণতা সূচক ব্যবহার করে কৌশলগুলির তুলনায়, এই কৌশলটি আরএমআই এবং সুপার ট্রেন্ডিং সূচকগুলির সুবিধাগুলিকে একত্রিত করে বাজারের গতি সম্পর্কে আরও নির্ভুল বিচার করে।
আরএমআই এবং সুপারট্রেন্ডিং সূচকগুলি বিভিন্ন সময়কালের জন্য প্রয়োগ করা হয়েছে, যা স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী প্রবণতা সম্পর্কে আরও ভাল ধারণা দেয়।
সুপার ট্রেন্ডের উপর ভিত্তি করে রিয়েল-টাইম স্টপ লস মেশিনের সাহায্যে, একক ক্ষতির উপর কার্যকর নিয়ন্ত্রণ করা যায়।
এই কৌশলটি বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নেওয়ার জন্য লপ, কপি বা বাই-ওয়ে ট্রেডিংয়ের বিকল্প রয়েছে।
RMI এবং সুপার ট্রেন্ডের মতো প্যারামিটারগুলির অপ্টিমাইজেশন জটিল, এবং ভুল সেটিং কৌশলটির কার্যকারিতা প্রভাবিত করতে পারে।
ছোট আকারের বাজারের অস্থিরতার প্রতি সংবেদনশীলতা, যা খুব ঘন ঘন স্টপ লস সমস্যার সৃষ্টি করে।
সমাধানঃ যথাযথভাবে স্টপ স্পেসিফিকেশন প্রসারিত করুন, অথবা অন্য ঝাঁকুনি-ধরনের স্টপ পদ্ধতি ব্যবহার করুন।
প্রযোজ্য জাতের পরিধি প্রসারিত করুন, বিভিন্ন জাতের প্যারামিটার অপ্টিমাইজেশনের দিকনির্দেশনা সনাক্ত করুন। কৌশলটি আরও বেশি বাজারে প্রতিলিপি করার অনুমতি দিন।
ডায়নামিক স্টপ মোড যুক্ত করা হয়েছে, যাতে স্টপ লাইনটি বর্তমান ব্যাপ্তিকে আরও ভালভাবে ট্র্যাক করতে পারে এবং ক্ষুদ্র ঝাঁকুনির কারণে অত্যধিক স্টপ ক্ষতি হ্রাস করতে পারে।
এই ধরনের পরিস্থিতিতে, একটি সুনির্দিষ্ট সংকেত ছাড়া একটি গুদাম তৈরি করা এড়ানোর জন্য, আরও সূচকগুলিকে একটি ফিল্টারিং শর্ত হিসাবে বিবেচনা করা উচিত।
এই কৌশলটি আরএমআই এবং সুপার ট্রেন্ডিং সূচকগুলির একটি চতুর সংমিশ্রণ দ্বারা সঠিক বাজার স্থিতির বিচার করে। ঝুঁকি নিয়ন্ত্রণেও এটি বেশ ভাল। গভীর অপ্টিমাইজেশনের মাধ্যমে, এটি বিশ্বাস করা হয় যে এটি বহু জাত এবং বহু-চক্রের উপর আরও ভাল পারফরম্যান্স করবে।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
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/
// @ presentTrading
//@version=5
strategy("RMI Trend Sync - Strategy [presentTrading]", shorttitle = "RMI Sync [presentTrading]", overlay=true )
// ---> Inputs --------------
// Add Button for Trading Direction
tradeDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])
// Relative Momentum Index (RMI) Settings
Length = input.int(21, "RMI Length", group = "RMI Settings")
pmom = input.int(70, "Positive Momentum Threshold", group = "RMI Settings")
nmom = input.int(30, "Negative Momentum Threshold", group = "RMI Settings")
bandLength = input.int(30, "Band Length", group = "Momentum Settings")
rwmaLength = input.int(20, "RWMA Length", group = "Momentum Settings")
// Super Trend Settings
len = input.int(10, "Super Trend Length", minval=1, group="Super Trend Settings")
higherTf1 = input.timeframe('480', "Higher Time Frame", group="Super Trend Settings")
factor = input.float(3.5, "Super Trend Factor", step=.1, group="Super Trend Settings")
maSrc = input.string("WMA", "MA Source", options=["SMA", "EMA", "WMA", "RMA", "VWMA"], group="Super Trend Settings")
atr = request.security(syminfo.tickerid, higherTf1, ta.atr(len))
TfClose1 = request.security(syminfo.tickerid, higherTf1, close)
// Visual Settings
filleshow = input.bool(true, "Display Range MA", group = "Visual Settings")
bull = input.color(#00bcd4, "Bullish Color", group = "Visual Settings")
bear = input.color(#ff5252, "Bearish Color", group = "Visual Settings")
// Calculation of Bar Range
barRange = high - low
// RMI and MFI Calculations
upChange = ta.rma(math.max(ta.change(close), 0), Length)
downChange = ta.rma(-math.min(ta.change(close), 0), Length)
rsi = downChange == 0 ? 100 : upChange == 0 ? 0 : 100 - (100 / (1 + upChange / downChange))
mf = ta.mfi(hlc3, Length)
rsiMfi = math.avg(rsi, mf)
// Momentum Conditions
positiveMomentum = rsiMfi[1] < pmom and rsiMfi > pmom and rsiMfi > nmom and ta.change(ta.ema(close,5)) > 0
negativeMomentum = rsiMfi < nmom and ta.change(ta.ema(close,5)) < 0
// Momentum Status
bool positive = positiveMomentum ? true : negativeMomentum ? false : na
bool negative = negativeMomentum ? true : positiveMomentum ? false : na
// Band Calculation
calculateBand(len) =>
math.min(ta.atr(len) * 0.3, close * (0.3/100)) * 4
band = calculateBand(bandLength)
// Range Weighted Moving Average (RWMA) Calculation
calculateRwma(range_, period) =>
weight = range_ / math.sum(range_, period)
sumWeightedClose = math.sum(close * weight, period)
totalWeight = math.sum(weight, period)
sumWeightedClose / totalWeight
rwma = calculateRwma(barRange, rwmaLength)
colour = positive ? bull : negative ? bear : na
rwmaAdjusted = positive ? rwma - band : negative ? rwma + band : na
max = rwma + band
min = rwma - band
longCondition = positive and not positive[1]
shortCondition = negative and not negative[1]
longExitCondition = shortCondition
shortExitCondition = longCondition
// Dynamic Trailing Stop Loss
vwma1 = switch maSrc
"SMA" => ta.sma(TfClose1*volume, len) / ta.sma(volume, len)
"EMA" => ta.ema(TfClose1*volume, len) / ta.ema(volume, len)
"WMA" => ta.wma(TfClose1*volume, len) / ta.wma(volume, len)
upperBand = vwma1 + factor * atr
lowerBand = vwma1 - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
float superTrend = na
int direction = na
superTrend := direction == -1 ? lowerBand : upperBand
longTrailingStop = superTrend - atr * factor
shortTrailingStop = superTrend + atr * factor
// Strategy Order Execution
if (tradeDirection == "Long" or tradeDirection == "Both")
strategy.entry("Long", strategy.long, when = longCondition)
strategy.exit("Exit Long", "Long", when=longExitCondition, stop = longTrailingStop)
if (tradeDirection == "Short" or tradeDirection == "Both")
strategy.entry("Short", strategy.short, when =shortCondition)
strategy.exit("Exit Short", "Short", when=shortExitCondition, stop = shortTrailingStop)