
এটি একটি কৌশলগত সিস্টেম যা একাধিক প্রযুক্তিগত বিশ্লেষণ প্যাটার্ন সনাক্তকরণ এবং সমর্থনকারী প্রতিরোধের স্তরকে একত্রিত করে। এই কৌশলটি মূলত ডাবল বেস প্যাটার্ন (আদম এবং ইভের নীচের প্যাটার্ন) সনাক্তকরণ, ফিবোনাচি রিডাউন স্তর এবং সমর্থনকারী প্রতিরোধের রেখার সাথে একত্রিত করে লেনদেনের সিদ্ধান্ত গ্রহণ করে। কৌশলটির কেন্দ্রবিন্দু হ’ল বহু-মাত্রিক প্রযুক্তিগত সূচক যাচাইয়ের মাধ্যমে লেনদেনের সংকেতের নির্ভরযোগ্যতা বাড়ানো, পাশাপাশি সমর্থনকারী প্রতিরোধের স্তরকে ঝুঁকি নিয়ন্ত্রণের গুরুত্বপূর্ণ রেফারেন্স হিসাবে ব্যবহার করা।
কৌশলটি ত্রিভুজ যাচাইকরণ ব্যবস্থার মাধ্যমে লেনদেনের সিদ্ধান্ত গ্রহণ করেঃ প্রথমে একটি নির্দিষ্ট অ্যালগরিদমের মাধ্যমে দ্বি-নিম্ন আকৃতিগুলি সনাক্ত করা হয়, যার মধ্যে রয়েছে একটি তীক্ষ্ণ “আদমের তল” এবং একটি বৃত্তাকার “ইভের তল”; দ্বিতীয়ত, ফিবোনাচিচ রিবাউন্ড স্তরগুলি ((0.618 এবং 1.618) ব্যবহার করে লক্ষ্য অঞ্চলটি নির্ধারণ করা হয়; অবশেষে, ট্রেডিং সিগন্যালগুলিকে সমর্থনকারী প্রতিরোধের স্তরের যাচাইকরণের মাধ্যমে লেনদেনের বিষয়টি নিশ্চিত করা হয়। লেনদেনের সংকেত তৈরির জন্য একই সাথে আকৃতি সনাক্তকরণ, ফিবোনাচিচ স্তর এবং সমর্থনকারী প্রতিরোধের স্তরের শর্ত পূরণ করা প্রয়োজন।
এই কৌশলটি একটি তুলনামূলকভাবে নিখুঁত ট্রেডিং সিস্টেম তৈরি করেছে, যা ফর্ম্যাট সনাক্তকরণ, ফিবোনাচি স্তর এবং সমর্থনকারী প্রতিরোধের লাইন ইত্যাদির মতো একাধিক প্রযুক্তিগত বিশ্লেষণ পদ্ধতির সমন্বিত প্রয়োগের মাধ্যমে তৈরি করা হয়েছে। কৌশলটির সুবিধা হ’ল এর একাধিক যাচাইকরণ ব্যবস্থা উচ্চ নির্ভরযোগ্যতা সরবরাহ করে, এবং এর সামঞ্জস্যযোগ্যতা এটিকে বিভিন্ন বাজার পরিবেশের সাথে খাপ খাইয়ে নিতে সক্ষম করে। যদিও কিছু অন্তর্নিহিত ঝুঁকি রয়েছে, তবে ক্রমাগত অপ্টিমাইজেশন এবং পরিমার্জনের মাধ্যমে কৌশলটি বাস্তব ব্যবসায়ের ক্ষেত্রে স্থিতিশীল পারফরম্যান্সের সম্ভাবনা রয়েছে। আরও প্রযুক্তিগত সূচক এবং অনুকূলিতকরণ অ্যালগরিদম যুক্ত করে কৌশলটির কার্যকারিতা উন্নত করার জন্য প্রচুর জায়গা রয়েছে।
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)
// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period")
srThreshold = input(3, "Support/Resistance Touch Points")
// Support/Resistance Function
get_sr_level(idx) =>
var level = 0.0
var count = 0
if bar_index % srPeriod == 0
highCount = 0
lowCount = 0
for i = 0 to srPeriod - 1
if math.abs(high[i] - high) < (high * 0.001)
highCount += 1
if math.abs(low[i] - low) < (low * 0.001)
lowCount += 1
if highCount >= srThreshold
level := high
count := highCount
if lowCount >= srThreshold
level := low
count := lowCount
[level, count]
// Pattern Detection Functions
isSwingLow(src, left, right) =>
isLow = true
for i = 0 to left + right
if src[i] < src[right]
isLow := false
isLow
getSpikeSharpness(index) =>
priceRange = high[index] - low[index]
bodyRange = math.abs(close[index] - open[index])
sharpness = priceRange / bodyRange
sharpness
// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na
// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
sharpness = getSpikeSharpness(0)
if na(firstBottom)
firstBottom := low
isAdam := sharpness > swingLowThreshold
else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
secondBottom := low
isEve := sharpness <= swingLowThreshold
// Calculate Fibonacci
if not na(secondBottom)
highPoint = ta.highest(high, lookbackPeriod)
fibDistance = highPoint - math.min(firstBottom, secondBottom)
level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3
// Get S/R Level
[srLevel, srCount] = get_sr_level(0)
// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
firstBottom := na
secondBottom := na
isAdam := false
isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)
plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)