
یہ ایک حکمت عملی کا نظام ہے جو متعدد تکنیکی تجزیہ کی شکل کی شناخت اور معاون مزاحمت کی سطح کو جوڑتا ہے۔ اس حکمت عملی میں بنیادی طور پر ڈبل بیس شکل کی شناخت (آدم اور حوا کے نیچے کی شکل) ، فیبونیکی ریفریجریشن کی سطح اور معاون مزاحمت کی لائن کے ساتھ تجارت کے فیصلے کیے جاتے ہیں۔ حکمت عملی کا مرکز متعدد جہتی تکنیکی اشارے کی توثیق کے ذریعے تجارتی سگنل کی وشوسنییتا کو بڑھانا ہے ، جبکہ معاون مزاحمت کی سطح کو خطرے کے کنٹرول کے لئے ایک اہم حوالہ کے طور پر استعمال کرنا ہے۔
اس حکمت عملی میں ٹریڈنگ کے فیصلے کے لئے تین بار توثیق کا طریقہ کار استعمال کیا گیا ہے۔ پہلے ، ایک مخصوص الگورتھم کے ذریعہ ڈبل نیچے کی شکل کی شناخت کی گئی ، جس میں ایک تیز تر “آدم کا نیچے” اور ایک گول “حوا کا نیچے” شامل ہے۔ دوسرا ، فپونیچ کی واپسی کی سطح ((0.618 اور 1.618) کا استعمال کرتے ہوئے ہدف کے علاقوں کی نشاندہی کرنا۔ اور آخر میں ، معاون مزاحمت کی سطح کی توثیق کے ذریعہ تجارت کی تصدیق کرنا۔ تجارتی سگنل کی تخلیق کے لئے ایک ہی وقت میں شکل کی شناخت ، فپونیچ کی سطح اور معاون مزاحمت کی سطح کو پورا کرنے کی ضرورت ہوتی ہے۔ خاص طور پر ، جب معاون مزاحمت کی سطح 1.618 فپونیچ کی توسیع کی جگہ سے زیادہ ہو تو ایک سے زیادہ سگنل لگایا جاتا ہے ، اور جب معاون مزاحمت کی سطح 0.618 فپونیچ کی واپسی کی جگہ سے کم ہو تو ایک سگنل لگایا جاتا ہے۔
اس حکمت عملی نے متعدد تکنیکی تجزیہ کے طریقوں جیسے موڈ کی شناخت ، فبونیکی سطح اور سپورٹ مزاحمت لائنوں کو مربوط کرکے ایک نسبتا complete مکمل تجارتی نظام تشکیل دیا ہے۔ اس حکمت عملی کا فائدہ یہ ہے کہ اس کے متعدد توثیق کے طریقہ کار اعلی وشوسنییتا فراہم کرتے ہیں ، اور اس کی ایڈجسٹبلٹی بھی اسے مختلف مارکیٹ کے ماحول میں ڈھالنے کی اجازت دیتی ہے۔ اگرچہ کچھ موروثی خطرات موجود ہیں ، لیکن اس حکمت عملی کو مستقل طور پر بہتر بنانے اور بہتر بنانے کے ذریعہ ، حقیقی تجارت میں مستحکم کارکردگی حاصل کرنے کا امکان ہے۔ مزید تکنیکی اشارے اور بہتر الگورتھم شامل کرنے کے ذریعہ ، حکمت عملی کی کارکردگی کو بڑھانے کے لئے بہت زیادہ گنجائش ہے۔
/*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)