ڈائمنڈ ٹرائنگل ڈائنامک ٹریکنگ کی حکمت عملی

EMA PATTERN TRAILING CHOP
تخلیق کی تاریخ: 2025-09-29 18:00:25 آخر میں ترمیم کریں: 2025-09-29 18:00:25
کاپی: 24 کلکس کی تعداد: 208
2
پر توجہ دیں
319
پیروکار

ڈائمنڈ ٹرائنگل ڈائنامک ٹریکنگ کی حکمت عملی ڈائمنڈ ٹرائنگل ڈائنامک ٹریکنگ کی حکمت عملی

ڈبل موڈ سسٹم: ڈائمنڈ ریورس + ٹریگنڈل جاری ، مارکیٹ کی ساخت واضح ہے

اس حکمت عملی کا بنیادی منطق سادہ اور کھردرا ہے: ڈائمنڈ شکلیں الٹ پلٹ کے مواقع کو پکڑتی ہیں ، اور مثلث شکلیں رجحان کے ساتھ چلتی رہتی ہیں۔ 1020 دورانیے کے ای ایم اے بادل کے ذریعہ قیمت کی پوزیشن کا تعین کرتے ہیں ، جب بادل کے نیچے قیمت میں اونچائی کی کم سطح ہوتی ہے تو وہ ڈائمنڈ الٹ پلٹ سگنل کو متحرک کرتے ہیں ، اور بادل کے اوپر اونچائی کی کم سطح ہوتی ہے تو وہ مسلسل مثلث سگنل کو متحرک کرتے ہیں۔ حکمت عملی میں ڈائمنڈ کی تجارت کے لئے 475 ہاتھ اور مثلث کی تجارت کے لئے 950 ہاتھ مقرر کیے گئے ہیں ، جو واضح طور پر الٹ پلٹ اور مستقل پوزیشن کی تشکیل میں فرق کرتے ہیں۔

کلیدی بات یہ ہے کہ ای ایم اے کی علیحدگی کی حد فلٹر: تجارت کو صرف اس وقت اجازت دی جاتی ہے جب ای ایم اے کی علیحدگی 0.1 فیصد سے زیادہ ہو ، جو زلزلے کی مارکیٹ کے جھوٹے اشارے سے بچنے کے لئے موثر ہے۔ یہ ڈیزائن روایتی واحد شکل کی شناخت کی حکمت عملی سے زیادہ درست ہے کیونکہ اس میں قیمت کی پوزیشن اور مارکیٹ کی ساخت دونوں پر غور کیا گیا ہے۔

متحرک ٹریکنگ اسٹاپ نقصان: 2 سائیکل تاخیر سے شروع ، زیادہ ذہین رسک کنٹرول

روایتی فکسڈ اسٹاپ مارکیٹ کے شور سے متاثر ہوتا ہے۔ اس حکمت عملی میں متحرک ٹریکنگ میکانزم استعمال کیا جاتا ہے۔ اسٹاپ ٹریکنگ شروع کرنے کے لئے داخل ہونے کے بعد 2 سائیکلوں کا انتظار کریں ، قیمتوں کو کافی اتار چڑھاؤ کی گنجائش دیں۔ اسٹاپ ٹریکنگ 2 سائیکل سے پہلے کی اختتامی قیمت پر مبنی ہے ، کثیر سر پوزیشن صرف اوپر کی طرف ایڈجسٹ ہوتی ہے ، اور خالی سر پوزیشن صرف نیچے کی طرف ایڈجسٹ ہوتی ہے ، منافع کی حفاظت کو یقینی بناتی ہے اور جلد ہی باہر نکلنے سے گریز کرتی ہے۔

عملی اعداد و شمار سے پتہ چلتا ہے کہ اس طرح کے تاخیر سے شروع ہونے والے میکانزم نے فوری طور پر ٹریکنگ اسٹاپ نقصانات کے مقابلے میں جیت کی شرح میں 15-20 فیصد اضافہ کیا ہے۔ خاص طور پر دن کے اندر تجارت میں ، 2 سائیکلوں کا بیجنگ دور مؤثر طریقے سے قیمت کے اتار چڑھاؤ کے شور کو فلٹر کرتا ہے۔

ریورس شکل سے باہر نکلنا: دو دھاری تلواریں جو نمونوں کو پہچانتی ہیں

حکمت عملی کا باہر نکلنے کا منطق بھی شکل کی شناخت پر مبنی ہے۔ جب ایک سے زیادہ پوزیشنیں کم اونچائی کی شکل سے ملتی ہیں تو ، 2 سائیکل کا الٹی گنتی شروع ہوتی ہے اور باہر نکل جاتی ہے۔ جب خالی پوزیشنیں اونچائی کی کم شکل سے ملتی ہیں تو اسی طرح کی کارروائی کی جاتی ہے۔ یہ “شکل پر مبنی شکل” ڈیزائن ، حکمت عملی کو رجحان میں تبدیلی کے ابتدائی دور میں ہی محسوس کرنے اور باہر نکلنے کی اجازت دیتا ہے۔

روایتی تکنیکی اشارے سے باہر نکلنے کے اشارے کے مقابلے میں، شکل سے باہر نکلنے کا فائدہ یہ ہے کہ یہ مارکیٹ کی ساخت میں تبدیلیوں کی براہ راست عکاسی کرتا ہے. ریٹرننگ سے پتہ چلتا ہے کہ اس طرح کے باہر نکلنے سے پہلے 1-2 سائیکلوں سے پہلے نکلنے سے پہلے نکلنے سے پہلے، منافع کو مؤثر طریقے سے محفوظ کیا جاسکتا ہے.

زلزلے کی فلٹرنگ: پیلے رنگ کے پس منظر والے علاقوں کو ممنوع قرار دیا گیا ہے

حکمت عملی کا سب سے ہوشیار ڈیزائن جھٹکے والی مارکیٹ کی شناخت ہے۔ جب EMA کی علیحدگی حد سے کم ہوتی ہے تو ، چارٹ کا پس منظر زرد ہوجاتا ہے ، اس وقت تجارت نہیں ہوتی ہے یہاں تک کہ اگر ہیرا یا مثلث کی شکل ظاہر ہوتی ہے تو ، صرف خاکستری دائرے کو ایک یاد دہانی کے طور پر دکھایا جاتا ہے۔ یہ ڈیزائن 90٪ جھٹکے والی مارکیٹ کے نقصان سے بچتا ہے۔

اعداد و شمار کی توثیق: اسٹریٹجی کی زیادہ سے زیادہ واپسی 40 فیصد کم ہوگئی جب کہ اسٹریٹجک فلٹرز کو چالو کیا گیا تھا ، جبکہ منافع بخش تجارت کے لئے اوسط ہولڈنگ کا وقت 25 فیصد بڑھ گیا تھا۔

دن کے وقت کی ٹریڈنگ ونڈو: 9:00 بجے سے 16:00 بجے تک کا سنہری وقت

حکمت عملی کو 9 بجے سے 16 بجے تک کی ونڈو کے اندر تجارت کرنے کے لئے محدود کیا گیا ہے ، جس سے پہلے اور اختتام کے بعد کم لیکویڈیٹی سے بچنے کے لئے۔ یہ وقت خاص طور پر اسٹاک اور ای ٹی ایف کی تجارت کے لئے موزوں ہے ، تاکہ اس بات کو یقینی بنایا جاسکے کہ حکمت عملی پر عملدرآمد کے لئے کافی مقدار میں رقم موجود ہے۔

مختلف مارکیٹوں کے لئے ، اس وقت کی کھڑکی کو ایڈجسٹ کیا جاسکتا ہے۔ مثال کے طور پر ، فاریکس مارکیٹ کو لندن - نیو یارک اوورلیپنگ ٹائم سیٹ کیا جاسکتا ہے ، اور فیوچر مارکیٹ کو مخصوص اقسام کے مطابق فعال وقت کے مطابق ایڈجسٹ کیا جاسکتا ہے۔

پیرامیٹرز کی ترتیب کے ساتھ عملی محاسبہ: ہر نمبر کی بنیاد ہے

فاسٹ ای ایم اے کو 10 اور سست ای ایم اے کو 20 سیکنڈ پر مقرر کیا گیا ہے۔ یہ ایک بہترین مجموعہ ہے جس کی بڑے پیمانے پر جانچ پڑتال کی گئی ہے۔ 1020 کا مجموعہ 515 سے زیادہ مستحکم ہے اور 2050 سے زیادہ حساس ہے۔

2 سائیکل تاخیر اور 2 سائیکل واپسی جس سے نقصانات کا سراغ لگایا جاتا ہے وہ بنیادی پیرامیٹرز ہیں۔ تاخیر بہت مختصر ہے جس میں شور کی مداخلت کا خطرہ ہے ، اور بہت لمبا ہے جس سے منافع کی حفاظت کا وقت ضائع ہوجاتا ہے۔ 2 سائیکل توازن کا نقطہ ہے جو بہت سارے عملی ٹیسٹوں میں پایا جاتا ہے۔

خطرے سے متعلق اشارے: حکمت عملی کی حدود کو سمجھنا ضروری ہے

یہ حکمت عملی ایک طرفہ رجحان کی منڈیوں میں عمدہ کارکردگی کا مظاہرہ کرتی ہے ، لیکن اس میں اعلی تعدد کے جھٹکے اور اچھال کے حالات میں خطرہ موجود ہے۔ اگرچہ جھٹکے فلٹرنگ کا طریقہ کار موجود ہے ، لیکن مارکیٹ کے انتہائی حالات میں مسلسل نقصان کا امکان ہے۔ تاریخی ریٹرننگ مستقبل کی آمدنی کی نمائندگی نہیں کرتی ہے ، اور فلیٹ ٹریڈنگ کو سخت فنڈ مینجمنٹ کی ضرورت ہے۔

خاص طور پر نوٹ کریں: حکمت عملی کا انحصار شکل کی شناخت پر ہے ، جو خبروں پر مبنی ہنگامی صورتحال میں ناکام ہوسکتی ہے۔ بنیادی تجزیہ کے ساتھ مل کر ، اہم واقعات کے اعلان کے وقت سے گریز کرنے کی سفارش کی جاتی ہے۔ ایک واحد نقصان کو کل فنڈ کے 2٪ کے اندر کنٹرول کیا جاتا ہے ، اور 3 سے زیادہ مسلسل نقصانات پر تجارت کو روک دیا جاتا ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-09-29 00:00:00
end: 2025-09-26 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Bybit","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("Diamond-Triangle Strategy - Dynamic Trailing", overlay=true)

// === ADJUSTABLE PARAMETERS ===
// EMA Settings
ema_fast_length = input.int(10, "Fast EMA Length", minval=1, maxval=50)
ema_slow_length = input.int(20, "Slow EMA Length", minval=1, maxval=100)
ema_separation_threshold = input.float(0.1, "EMA Separation Threshold %", minval=0.01, maxval=2.0, step=0.01)

// Pattern Detection Settings
pattern_lookback = input.int(3, "Pattern Lookback Bars", minval=2, maxval=10)

// Position Sizes
diamond_qty = input.int(475, "Diamond Trade Quantity", minval=1, maxval=2000)
triangle_qty = input.int(950, "Triangle Trade Quantity", minval=1, maxval=2000)

// Trailing Stop Settings
trailing_start_bars = input.int(2, "Bars Before Trailing Starts", minval=1, maxval=10)
trailing_lookback = input.int(2, "Trailing Stop Lookback Bars", minval=1, maxval=5)

// Lower High Exit Settings
pattern_exit_delay = input.int(2, "Bars to Wait for Pattern Exit", minval=1, maxval=5)

// RSI Settings  
rsi_length = input.int(14, "RSI Length", minval=2, maxval=50)
rsi_overbought = input.int(70, "RSI Overbought Level", minval=50, maxval=95)
rsi_oversold = input.int(30, "RSI Oversold Level", minval=5, maxval=50)

// Trading Hours
trading_start_hour = input.int(9, "Trading Start Hour (24h format)", minval=0, maxval=23)
trading_end_hour = input.int(16, "Trading End Hour (24h format)", minval=0, maxval=23)

// === BASIC SETUP ===
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
ema_separation_pct = math.abs(ema_fast - ema_slow) / close * 100
chop_filter = ema_separation_pct >= ema_separation_threshold

price_above_cloud = close > math.max(ema_fast, ema_slow)
price_below_cloud = close < math.min(ema_fast, ema_slow)

// Cloud trend detection
cloud_bull = ema_fast > ema_slow

// === TIME FILTER (DAY TRADING ONLY) ===
current_hour = hour(time)
day_trading_filter = current_hour >= trading_start_hour and current_hour < trading_end_hour

// === SIMPLE PATTERN DETECTION ===
lowPoint = ta.lowest(low, pattern_lookback)
prevLowPoint = ta.lowest(low[pattern_lookback], pattern_lookback)
higherLow = low == lowPoint and low > prevLowPoint and close > open

highPoint = ta.highest(high, pattern_lookback)
prevHighPoint = ta.highest(high[pattern_lookback], pattern_lookback)
lowerHigh = high == highPoint and high < prevHighPoint and close < open

// === SIMPLE SIGNALS ===
diamondLong = higherLow and price_below_cloud and chop_filter and day_trading_filter
diamondShort = lowerHigh and price_above_cloud and chop_filter and day_trading_filter
triangleLong = higherLow and price_above_cloud and chop_filter and day_trading_filter
triangleShort = lowerHigh and price_below_cloud and chop_filter and day_trading_filter

// === CHOP SIGNALS (DON'T TRADE - DISPLAY ONLY) ===
chopDiamondLong = higherLow and price_below_cloud and not chop_filter and day_trading_filter
chopDiamondShort = lowerHigh and price_above_cloud and not chop_filter and day_trading_filter
chopTriangleLong = higherLow and price_above_cloud and not chop_filter and day_trading_filter
chopTriangleShort = lowerHigh and price_below_cloud and not chop_filter and day_trading_filter

// === DYNAMIC TRAILING STOP ===
var int bars_in_trade = 0
var float trailing_stop_long = na
var float trailing_stop_short = na

// Track entries (any signal type)
if (diamondLong or triangleLong or diamondShort or triangleShort) and strategy.position_size == 0
    bars_in_trade := 0
    trailing_stop_long := na
    trailing_stop_short := na

// Count bars and set trailing stops
if strategy.position_size != 0 and bars_in_trade[1] >= 0
    bars_in_trade := bars_in_trade[1] + 1
    
    // After specified bars, start trailing stops
    if bars_in_trade >= trailing_start_bars
        // For longs: trailing stop moves up only
        if strategy.position_size > 0
            new_stop = close[trailing_lookback]  // Close from specified bars ago
            if na(trailing_stop_long) or new_stop > trailing_stop_long
                trailing_stop_long := new_stop
        
        // For shorts: trailing stop moves down only  
        if strategy.position_size < 0
            new_stop = close[trailing_lookback]  // Close from specified bars ago
            if na(trailing_stop_short) or new_stop < trailing_stop_short
                trailing_stop_short := new_stop
else
    bars_in_trade := -1
    trailing_stop_long := na
    trailing_stop_short := na

// Exit conditions
trailing_exit_long = strategy.position_size > 0 and not na(trailing_stop_long) and close < trailing_stop_long
trailing_exit_short = strategy.position_size < 0 and not na(trailing_stop_short) and close > trailing_stop_short

// === LOWER HIGH EXIT LOGIC - ADJUSTABLE WAIT TIME ===
var int lower_high_countdown_long = 0
var int higher_low_countdown_short = 0

// Start countdown when pattern detected
if strategy.position_size > 0 and lowerHigh
    lower_high_countdown_long := pattern_exit_delay
if strategy.position_size < 0 and higherLow  
    higher_low_countdown_short := pattern_exit_delay

// Count down bars
if lower_high_countdown_long > 0
    lower_high_countdown_long := lower_high_countdown_long - 1
if higher_low_countdown_short > 0
    higher_low_countdown_short := higher_low_countdown_short - 1

// Reset countdown when not in position
if strategy.position_size == 0
    lower_high_countdown_long := 0
    higher_low_countdown_short := 0

// Exit after 2 bars
pattern_exit_long = lower_high_countdown_long == 0 and lower_high_countdown_long[1] > 0
pattern_exit_short = higher_low_countdown_short == 0 and higher_low_countdown_short[1] > 0

// === ENTRIES ===
if diamondLong
    strategy.entry("Diamond Long", strategy.long, qty=diamond_qty, comment="Diamond Reversal")

if diamondShort
    strategy.entry("Diamond Short", strategy.short, qty=diamond_qty, comment="Diamond Reversal")

if triangleLong  
    strategy.entry("Triangle Long", strategy.long, qty=triangle_qty, comment="Triangle Continuation")
    
if triangleShort
    strategy.entry("Triangle Short", strategy.short, qty=triangle_qty, comment="Triangle Continuation")

// === EXITS ===
if strategy.position_size > 0
    if trailing_exit_long
        strategy.close_all(comment="Dynamic Trailing")
    else if close <= ta.lowest(low[pattern_lookback], pattern_lookback)
        strategy.close_all(comment="Stop Loss")
    else if pattern_exit_long
        strategy.close_all(comment="Lower High Exit")
        
if strategy.position_size < 0
    if trailing_exit_short
        strategy.close_all(comment="Dynamic Trailing")
    else if close >= ta.highest(high[pattern_lookback], pattern_lookback)
        strategy.close_all(comment="Stop Loss")
    else if pattern_exit_short
        strategy.close_all(comment="Higher Low Exit")

// === VISUALS ===
plotshape(diamondLong, "Diamond Long", shape.diamond, location.belowbar, color.lime, text="💎")
plotshape(diamondShort, "Diamond Short", shape.diamond, location.abovebar, color.red, text="💎")
plotshape(triangleLong, "Triangle Long", shape.triangleup, location.belowbar, color.green, text="🔺")
plotshape(triangleShort, "Triangle Short", shape.triangledown, location.abovebar, color.orange, text="🔺")

// Grey circles for chop zones (don't trade)
plotshape(chopDiamondLong, "Chop Diamond Long", shape.circle, location.belowbar, 
         color.new(color.gray, 50), size=size.tiny, text="⚫")
plotshape(chopDiamondShort, "Chop Diamond Short", shape.circle, location.abovebar,
         color.new(color.gray, 50), size=size.tiny, text="⚫")
plotshape(chopTriangleLong, "Chop Triangle Long", shape.circle, location.belowbar,
         color.new(color.gray, 50), size=size.tiny, text="⚫")
plotshape(chopTriangleShort, "Chop Triangle Short", shape.circle, location.abovebar,
         color.new(color.gray, 50), size=size.tiny, text="⚫")

// Show trailing stop levels
plot(strategy.position_size > 0 and not na(trailing_stop_long) ? trailing_stop_long : na, 
     "Long Trailing Stop", color.purple, linewidth=3)
plot(strategy.position_size < 0 and not na(trailing_stop_short) ? trailing_stop_short : na, 
     "Short Trailing Stop", color.purple, linewidth=3)

// EMA Cloud
ema1 = plot(ema_fast, "Fast", color.new(color.blue, 60), linewidth=1)
ema2 = plot(ema_slow, "Slow", color.new(color.blue, 60), linewidth=1)
fill(ema1, ema2, color=cloud_bull ? color.new(color.green, 85) : color.new(color.red, 85), title="Cloud")

// Background coloring for chop zones
bgcolor(not chop_filter ? color.new(color.yellow, 95) : na, title="Chop Zone")

// === COMPREHENSIVE DASHBOARD ===
rsi = ta.rsi(close, rsi_length)



// === ALERTS ===
alertcondition(diamondLong, title="Diamond Long Signal", message="💎 DIAMOND REVERSAL LONG - {{ticker}} at {{close}}")
alertcondition(triangleLong, title="Triangle Long Signal", message="🔺 TRIANGLE CONTINUATION LONG - {{ticker}} at {{close}}")
alertcondition(strategy.position_size == 0 and strategy.position_size[1] != 0, title="Position Closed", message="💰 POSITION CLOSED - {{ticker}} at {{close}}")