
সমান্তরাল উচ্চতা প্যাটার্ন কোয়ান্টিফিকেশন কৌশল হল একটি ট্রেডিং সিস্টেম যা মূল্যের ওঠানামার বৈশিষ্ট্যগুলির উপর ভিত্তি করে সম্ভাব্য ট্রেডিং সুযোগগুলিকে ক্যাপচার করে। কৌশলটির মূলটি হ’ল মূল্যের ওঠানামার প্রস্থের অনুরূপ প্যাটার্নগুলি সন্ধান করা এবং ঝুঁকি পরিচালনা এবং ট্রেডিং ফলাফলের জন্য আরএসআই সূচক, লেনদেনের পরিমাণ নিশ্চিতকরণ এবং গতিশীলভাবে সমন্বিত স্টপ লস স্টপগুলিকে সংযুক্ত করা। এই কৌশলটি বিভিন্ন ধরণের লেনদেনের জন্য উপযুক্ত, দামের উচ্চতার অনুপাতের সম্পর্কটি সঠিকভাবে গণনা করে, ব্যবসায়ীদের একটি পদ্ধতিগত পদ্ধতি সরবরাহ করে সম্ভাব্য প্রবণতা বিপরীত বা চলমান সংকেত সনাক্ত করতে।
এই কৌশলটির মূল নীতিটি মূলত নিম্নলিখিত কয়েকটি মূল পয়েন্টের উপর ভিত্তি করে মূল্যের আকৃতির জ্যামিতিক বৈশিষ্ট্য বিশ্লেষণের উপর ভিত্তি করেঃ
উচ্চতা মডেল সনাক্তকরণকৌশলটি মূলত দুটি ধরণের উচ্চতা মডেলের উপর দৃষ্টি নিবদ্ধ করে - প্রধান উচ্চতা ((ব্যবহারকারী দ্বারা কাস্টমাইজড দামের শতাংশ) এবং রিডাউন উচ্চতা ((ব্যবহারকারী দ্বারা সংজ্ঞায়িত একটি ছোট শতাংশ) । সিস্টেমটি বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে এই উচ্চতা মানগুলিকে গতিশীলভাবে গণনা করে।
মাল্টিপল মোড সনাক্তকরণ:
প্যারামিটার অপ্টিমাইজেশান:
টেকনিক্যাল ফিল্টার:
প্রবেশ ও প্রস্থান কৌশল:
কোডের গভীর বিশ্লেষণের মাধ্যমে, এই কৌশলটি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি প্রদর্শন করেঃ
বস্তুনিষ্ঠ সংকেত উত্পাদন প্রক্রিয়া: গাণিতিক গণনা এবং সুনির্দিষ্ট জ্যামিতিক সম্পর্কের উপর ভিত্তি করে, ট্রেডিং সিদ্ধান্তগুলিকে আরও পদ্ধতিগত এবং সামঞ্জস্যপূর্ণ করে তোলার জন্য স্বতন্ত্র বিচারের প্রভাব হ্রাস করা হয়েছে।
বাজারের সাথে খাপ খাইয়ে নেওয়া: গড় মূল্যের শতাংশ ব্যবহার করে উচ্চতার প্যারামিটার গণনা করে, কৌশলটি স্বয়ংক্রিয়ভাবে বিভিন্ন মূল্যের পরিসীমা এবং অস্থিরতার বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
মাল্টি-ডিমেনশনাল নিশ্চিতকরণ ব্যবস্থামডেলিং, আরএসআই সূচক এবং লেনদেনের পরিমাণ বিশ্লেষণের সাথে মিলিত, এটি একাধিক স্তরের সংকেত নিশ্চিতকরণ সরবরাহ করে যা নিম্নমানের ট্রেডিং সংকেতগুলিকে ফিল্টার করতে সহায়তা করে।
একটি স্পষ্ট ঝুঁকি ব্যবস্থাপনা কাঠামো: প্রতিটি লেনদেনের জন্য একটি পূর্বনির্ধারিত স্টপ লস এবং স্টপ স্টপ পজিশন রয়েছে, যা ব্যবসায়ীদের ঝুঁকি নিয়ন্ত্রণ করতে এবং ঝুঁকি-লাভের অনুপাতের ধারাবাহিকতা বজায় রাখতে সহায়তা করে।
ভিজ্যুয়াল সহায়তাট্রেডারদের বোঝার জন্য এবং সংকেত যাচাই করার জন্য, চার্টে রিকট এবং ট্যাগ আঁকিয়ে, স্বীকৃত ট্রেডিং প্যাটার্নগুলিকে দৃশ্যমানভাবে প্রদর্শন করা হয়।
পরামিতি নকশা: কৌশলটি একাধিক সমন্বয়যোগ্য প্যারামিটার সরবরাহ করে যা ব্যবসায়ীদের নির্দিষ্ট বাজার পরিস্থিতি এবং ব্যক্তিগত ঝুঁকি পছন্দ অনুসারে অনুকূলিতকরণের অনুমতি দেয়।
একাধিক মডেল সনাক্তকরণট্রেডিং এন্ট্রি পয়েন্ট: ট্রেডিং এন্ট্রি পয়েন্টের জন্য ট্রেডিং এন্ট্রি পয়েন্টের জন্য ট্রেডিং এন্ট্রি পয়েন্টের জন্য ট্রেডিং এন্ট্রি পয়েন্টের জন্য ট্রেডিং এন্ট্রি পয়েন্ট।
যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবে এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
পরামিতি সংবেদনশীলতা: কৌশলগত কর্মক্ষমতা অত্যন্ত প্যারামিটার সেটিং উপর নির্ভরশীল, এবং ভুল প্যারামিটারগুলি অত্যধিক লেনদেন বা গুরুত্বপূর্ণ সংকেত মিস করতে পারে। সমাধান হল ইতিহাসের মাধ্যমে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করা এবং প্যারামিটার কার্যকারিতা পর্যায়ক্রমে পুনরায় মূল্যায়ন করা।
ভুয়া আক্রমণের ঝুঁকি: বাজার প্রত্যাশিত প্যাটার্নের অনুরূপ একটি রূপ তৈরি করতে পারে কিন্তু তারপরে বিপরীত হতে পারে, যা ভুল সংকেত সৃষ্টি করে। এটি নিশ্চিতকরণ ব্যবস্থা যোগ করার পরামর্শ দেয়, যেমন বন্ধের মূল্য নিশ্চিতকরণের জন্য অপেক্ষা করা বা অন্যান্য সূচকগুলির সাথে ক্রস যাচাই করা।
স্থির শতাংশ সীমাবদ্ধতাস্থির শতাংশ উচ্চতা ব্যবহার করে অস্থিরতার তীব্র পরিবর্তনশীল বাজারের জন্য উপযুক্ত নাও হতে পারে। এটিআর বা ঐতিহাসিক অস্থিরতার উপর ভিত্তি করে গতিশীল উচ্চতা গণনা পদ্ধতি প্রবর্তন করার কথা বিবেচনা করা যেতে পারে।
কম্পিউটার-নিবিড় প্রক্রিয়াকরণ: কৌশলটি একাধিক চক্র এবং শর্তাদির সাথে জড়িত, যা প্রচুর পরিমাণে ডেটা পরিচালনা করার সময় পারফরম্যান্স সমস্যার কারণ হতে পারে। কোডের কাঠামোটি অনুকূলিতকরণ বা কিছু গণনা পদক্ষেপকে সহজতর করা কার্য সম্পাদনের দক্ষতা বাড়িয়ে তুলতে পারে।
প্রবণতা নির্ণয় সরলীকৃত: বর্তমান প্রবণতা বিচার শুধুমাত্র সরল চলমান গড় তুলনা উপর ভিত্তি করে, সঠিকভাবে জটিল বাজার কাঠামো ক্যাপচার করা অসম্ভব। আরো জটিল প্রবণতা শনাক্তকরণ অ্যালগরিদম একীভূত বিবেচনা সঠিকতা উন্নত করতে।
স্ট্যাটিক স্টপ-অফ-স্টপ সেটিং: রিডাউন উচ্চতা এবং প্রধান উচ্চতা ব্যবহার করে ফিক্সড স্টপ এবং স্টপ হিসাবে যথেষ্ট নমনীয় নাও হতে পারে। বাজারের অস্থিরতা বা সমর্থনকারী প্রতিরোধের অবস্থার উপর ভিত্তি করে একটি গতিশীল স্টপ এবং স্টপ ব্যবস্থা চালু করা যেতে পারে।
কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটির সম্ভাব্য অপ্টিমাইজেশনের দিকগুলি হলঃ
গতিশীল প্যারামিটার সমন্বয়: স্বনির্ধারিত প্যারামিটার ব্যবস্থা চালু করা হয়েছে, যা বাজারের অস্থিরতা এবং লেনদেনের চক্র অনুসারে স্বয়ংক্রিয়ভাবে উচ্চতা শতাংশ এবং প্যাটার্ন প্রস্থের প্যারামিটারগুলিকে সামঞ্জস্য করে। এটি বিভিন্ন বাজারের পর্যায়ে বৈশিষ্ট্যগুলির সাথে আরও ভালভাবে মানিয়ে নিতে পারে।
প্রবণতা বৃদ্ধিপ্রবণতা সনাক্তকরণের আরও জটিল পদ্ধতি যেমন মাল্টি-পিস প্রবণতা বিশ্লেষণ, বুলিন ব্যান্ডউইথ পরিবর্তন বা দিকনির্দেশক স্থানান্তর সূচক (ডিএমআই) এর সাথে একত্রিত করা যাতে প্রবণতা বিচার আরও নির্ভুল হয়।
সংকেত ফিল্টার অপ্টিমাইজ করুন: অতিরিক্ত ফিল্টারিং শর্তাবলী যেমন দাম এবং চলমান গড়ের অবস্থান সম্পর্ক, বহু-চক্রীয় আরএসআই সামঞ্জস্য বিশ্লেষণ বা ক্রয়-বিক্রয় ভলিউম বন্টন বৈশিষ্ট্য, মিথ্যা সংকেত কমাতে।
ফিডব্যাক মূল্যায়নে উন্নতি: সর্বাধিক প্রত্যাহার, শার্প অনুপাত, ক্ষতির কারণ ইত্যাদির মতো আরও বিস্তৃত কৌশলগত মূল্যায়ন পরিমাপক যুক্ত করা যাতে কৌশলগত কার্যকারিতা সম্পূর্ণরূপে মূল্যায়ন করা যায় এবং প্যারামিটার অপ্টিমাইজেশনকে নির্দেশ করা যায়।
স্বনির্ধারিত ক্ষতি প্রতিরোধ ব্যবস্থা: এটিআর বা সাম্প্রতিক অস্থিরতার গতিশীলতার উপর ভিত্তি করে স্টপ লেভেলের সমন্বয় করুন, কেবলমাত্র একটি নির্দিষ্ট রিডাউন উচ্চতা ব্যবহার না করে, ঝুঁকি ব্যবস্থাপনার কার্যকারিতা বাড়ান।
মার্কেট এনভায়রনমেন্টাল অ্যানালাইসিস: বাজার পরিবেশের শ্রেণিবদ্ধকরণ বৈশিষ্ট্য যুক্ত করুন, বিভিন্ন বাজার অবস্থার অধীনে বিভিন্ন প্যারামিটার সেটিং বা ট্রেডিং লজিক ব্যবহার করুন (যেমন উচ্চ অস্থিরতা, নিম্ন অস্থিরতা, শক্তিশালী প্রবণতা বা ব্যাপ্তিযুক্ত ঝড়) ।
কার্যকারিতা উন্নত করা: প্যাটার্ন সনাক্তকরণ অ্যালগরিদম পুনর্নির্মাণ, প্যাডল চক্র এবং পুনরাবৃত্তি গণনা হ্রাস, রিয়েল-টাইম পরিবেশে কৌশল কার্যকরকরণের গতি বাড়ানো।
সময় ফিল্টার যুক্ত করুনসময়ভিত্তিক ফিল্টারিং যোগ করা হয়েছে, যাতে বাজার খোলার, বন্ধের বা গুরুত্বপূর্ণ সংবাদ বিজ্ঞপ্তির মতো তীব্র ওঠানামা এড়ানো যায় এবং সংকেতের গুণগত মান উন্নত করা যায়।
অনুরূপ রাইটার্জ উচ্চতা প্যাটার্ন কোয়ান্টিফিকেশন কৌশল একটি অনন্য প্রযুক্তিগত বিশ্লেষণ পদ্ধতি, যা মূল্যের ওঠানামা এবং জ্যামিতিক বৈশিষ্ট্যগুলি সনাক্ত করে ট্রেডিংয়ের সুযোগগুলিকে ক্যাপচার করে। এর মূল উদ্ভাবনটি হল বিমূর্ত চার্ট প্যাটার্নগুলিকে পরিমাপযোগ্য গাণিতিক সম্পর্কের মধ্যে রূপান্তরিত করা এবং প্রযুক্তিগত সূচকগুলির সাথে মিলিত একাধিক নিশ্চিতকরণ। কৌশলটি একটি সম্পূর্ণ ট্রেডিং ফ্রেমওয়ার্ক সরবরাহ করে, যার মধ্যে প্রবেশের সংকেত, ঝুঁকি ব্যবস্থাপনা এবং গ্রাফিকাল প্রদর্শন রয়েছে, যা ব্যবসায়ীদের জন্য উপযুক্ত যারা ব্যবস্থামূলক ব্যবসায়ের পদ্ধতি অনুসরণ করে।
যদিও এই কৌশলটি বাজার বিশ্লেষণের জন্য একটি নতুন দৃষ্টিকোণ সরবরাহ করে, তবে এর কার্যকারিতা মূলত প্যারামিটার অপ্টিমাইজেশন এবং বাজারের অভিযোজনযোগ্যতার উপর নির্ভর করে। এই কৌশলটি ট্রেডারদের সরঞ্জাম বাক্সে একটি কার্যকর হাতিয়ার হওয়ার সম্ভাবনা রয়েছে।
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Similar Rectangle Heights - Strategy", overlay=true)
// Strategy parameters
lookbackPeriod = input.int(45, "Analysis period", minval=10)
primaryHeightPercent = input.float(5.0, "Primary height (% of price)", minval=0.5, maxval=20.0, step=0.5)
correctionHeightPercent = input.float(2.2, "Correction height (% of price)", minval=0.5, maxval=10.0, step=0.5)
minPatternBars = input.int(5, "Minimum pattern width (candles)", minval=3)
maxPatternBars = input.int(14, "Maximum pattern width (candles)", minval=5)
useVolume = input.bool(false, "Include volume")
useRSI = input.bool(true, "Include RSI")
rsiPeriod = input.int(23, "RSI period", minval=5)
rsiOverbought = input.int(55, "RSI overbought level", minval=50, maxval=90)
rsiOversold = input.int(50, "RSI oversold level", minval=10, maxval=50)
// Calculate primary height and correction height in price points
avgPrice = ta.sma(close, lookbackPeriod)
primaryHeight = avgPrice * primaryHeightPercent / 100
correctionHeight = avgPrice * correctionHeightPercent / 100
// Calculate RSI
rsi = ta.rsi(close, rsiPeriod)
// Function to detect a bullish pattern
bullishPattern(idx) =>
// Check if there is a low followed by a rise of a specified height
lowestLow = ta.lowest(low, minPatternBars)[idx]
highAfterLow = ta.highest(high, minPatternBars)[idx]
patternHeight = highAfterLow - lowestLow
// Check if pattern height matches the primary height
heightMatch = math.abs(patternHeight - primaryHeight) <= primaryHeight * 0.2
// Check if pattern width is within range
patternWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and low[idx + i] == lowestLow
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and high[idx + j] == highAfterLow
patternWidth := j - i + 1
break
break
widthMatch = patternWidth >= minPatternBars and patternWidth <= maxPatternBars
// Check volume and RSI conditions
volumeCondition = not useVolume or volume > ta.sma(volume, lookbackPeriod)
rsiCondition = not useRSI or rsi[idx] < rsiOversold
// Return true if all conditions are met
heightMatch and widthMatch and volumeCondition and rsiCondition
// Function to detect a bearish pattern
bearishPattern(idx) =>
// Check if there is a high followed by a drop of a specified height
highestHigh = ta.highest(high, minPatternBars)[idx]
lowAfterHigh = ta.lowest(low, minPatternBars)[idx]
patternHeight = highestHigh - lowAfterHigh
// Check if pattern height matches the primary height
heightMatch = math.abs(patternHeight - primaryHeight) <= primaryHeight * 0.2
// Check if pattern width is within range
patternWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and high[idx + i] == highestHigh
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and low[idx + j] == lowAfterHigh
patternWidth := j - i + 1
break
break
widthMatch = patternWidth >= minPatternBars and patternWidth <= maxPatternBars
// Check volume and RSI conditions
volumeCondition = not useVolume or volume > ta.sma(volume, lookbackPeriod)
rsiCondition = not useRSI or rsi[idx] > rsiOverbought
// Return true if all conditions are met
heightMatch and widthMatch and volumeCondition and rsiCondition
// Function to detect a bullish correction in an uptrend
bullishCorrection(idx) =>
// Check if there is a pullback of correction height after a rise
highBeforeCorrection = ta.highest(high, minPatternBars)[idx]
lowDuringCorrection = ta.lowest(low, minPatternBars)[idx]
correctionSize = highBeforeCorrection - lowDuringCorrection
// Check if correction height matches expected height
heightMatch = math.abs(correctionSize - correctionHeight) <= correctionHeight * 0.2
// Check if correction width is within range
correctionWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and high[idx + i] == highBeforeCorrection
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and low[idx + j] == lowDuringCorrection
correctionWidth := j - i + 1
break
break
widthMatch = correctionWidth >= minPatternBars / 2 and correctionWidth <= maxPatternBars / 2
// Check if we are in an uptrend
uptrend = ta.sma(close, lookbackPeriod)[idx] > ta.sma(close, lookbackPeriod)[idx + minPatternBars]
// Return true if all conditions are met
heightMatch and widthMatch and uptrend
// Function to detect a bearish correction in a downtrend
bearishCorrection(idx) =>
// Check if there is a pullback of correction height after a drop
lowBeforeCorrection = ta.lowest(low, minPatternBars)[idx]
highDuringCorrection = ta.highest(high, minPatternBars)[idx]
correctionSize = highDuringCorrection - lowBeforeCorrection
// Check if correction height matches expected height
heightMatch = math.abs(correctionSize - correctionHeight) <= correctionHeight * 0.2
// Check if correction width is within range
correctionWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and low[idx + i] == lowBeforeCorrection
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and high[idx + j] == highDuringCorrection
correctionWidth := j - i + 1
break
break
widthMatch = correctionWidth >= minPatternBars / 2 and correctionWidth <= maxPatternBars / 2
// Check if we are in a downtrend
downtrend = ta.sma(close, lookbackPeriod)[idx] < ta.sma(close, lookbackPeriod)[idx + minPatternBars]
// Return true if all conditions are met
heightMatch and widthMatch and downtrend
// Detecting signals
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Buy signal
buySignal = false
for i = 0 to 3
if bullishPattern(i) or (i > 0 and bullishCorrection(i))
buySignal := true
break
// Sell signal
sellSignal = false
for i = 0 to 3
if bearishPattern(i) or (i > 0 and bearishCorrection(i))
sellSignal := true
break
// Execute strategy
if buySignal
entryPrice := close
stopLoss := close - correctionHeight
takeProfit := close + primaryHeight
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=stopLoss, limit=takeProfit)
if sellSignal
entryPrice := close
stopLoss := close + correctionHeight
takeProfit := close - primaryHeight
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=stopLoss, limit=takeProfit)