ٹرینڈ لائن بریک آؤٹ ہنٹر

EMA Pivot BREAKOUT TRENDLINE
تخلیق کی تاریخ: 2025-10-29 15:47:08 آخر میں ترمیم کریں: 2025-10-29 15:47:08
کاپی: 0 کلکس کی تعداد: 248
2
پر توجہ دیں
319
پیروکار

ٹرینڈ لائن بریک آؤٹ ہنٹر ٹرینڈ لائن بریک آؤٹ ہنٹر

200 روزہ ای ایم اے + متحرک رجحان لائن ، باکسنگ مارکیٹ کے درد کا مجموعہ

اس حکمت عملی میں 200 دن کے ای ایم اے کا استعمال کیا گیا ہے تاکہ بڑے رجحان کی سمت کا اندازہ لگایا جاسکے ، اور پھر اہم مزاحمت / حمایت کے مقامات پر توڑنے کے مواقع تلاش کیے جائیں۔بنیادی منطق سادہ اور کھردرا ہے: بیل مارکیٹ نیچے کی رجحان لائن کو توڑنے کے لئے زیادہ کام کرتا ہے ، اور ریچھ مارکیٹ اوپر کی رجحان لائن کو توڑنے کے لئے خالی ہے۔

اعداد و شمار بولتے ہیں: حکمت عملی 5 + 5 کے محور کا پتہ لگانے کا استعمال کرتی ہے ، اس بات کو یقینی بناتی ہے کہ سگنل کو دوبارہ تیار نہ کیا جائے۔ 20 سیکنڈ کی نظر ثانی کی ونڈو تاریخی اعداد و شمار کی حد کو محدود کرتی ہے ، اور ضرورت سے زیادہ فٹ ہونے سے بچتی ہے۔ یہ سائنس نہیں ہے ، یہ خالص طور پر قیمت کے رویے کا تجزیہ ہے۔

1:3 ڈیزائن کے مقابلے میں خطرے کے بدلے میں، ریاضی آپ کی طرف سے کھڑے ہونے کی توقع

سٹاپ نقصان کا تعین پچھلی K لائن کے سب سے زیادہ / کم سے کم نقطہ پر کیا گیا ہے ، اور اسٹاپ نقصان کا ہدف اسٹاپ نقصان کے فاصلے کا 3 گنا ہے۔اس کا مطلب یہ ہے کہ اگر آپ کی جیت کی شرح 30 فیصد ہے، تو آپ طویل مدتی میں منافع بخش رہیں گے۔

مخصوص عملدرآمد: کثیر سر توڑنے کے بعد ، اسٹاپ = سابقہ کم ، اسٹاپ = داخلے کی قیمت + 3 × ((داخلی کی قیمت - سابقہ کم) خالی سر برعکس خطرہ کنٹرول اکاؤنٹ فنڈز کا 1٪ ڈیفالٹ کے طور پر مقرر کیا گیا ہے ، اس کی حد 0.1٪ -10٪ تک ایڈجسٹ کی جاسکتی ہے۔ 100 گنا زیادہ محفوظ ہے ان حکمت عملیوں کے مقابلے میں جن کے پاس دماغ نہیں ہے۔

محور پوائنٹ کا پتہ لگانے کا طریقہ کار ، موضوعی ڈرائنگ لائنوں کا دور الوداع

روایتی تکنیکی تجزیہ کے ساتھ سب سے بڑا مسئلہ یہ ہے کہ یہ بہت زیادہ ذہنی ہے۔ اس حکمت عملی کا استعمال کرتے ہوئے الگورتھم خود بخود اہم اعلی اور کم کی شناخت کرتا ہے:

  • بائیں طرف 5 K لائن + دائیں طرف 5 K لائن تصدیق محور
  • صرف 20 دوروں میں حالیہ دو مؤثر محوروں سے منسلک
  • بیل مارکیٹ کی سمت: گرنے والی اونچائیوں کو جوڑ کر نیچے کی رجحان لائن بنائی گئی
  • ریچھ کی مارکیٹ کی سمت: بڑھتی ہوئی نچلی لائنوں کے ساتھ بڑھتی ہوئی رجحان کی لائنیں

اس کا نتیجہ کیا ہے؟ مکمل طور پر غیر جانبدار، صفر دوبارہ پینٹ، اور دوبارہ قابل تجدید۔ یہ آپ کے ہاتھ سے تیار کردہ لائنوں سے 1000 گنا زیادہ درست ہے۔

ڈبل فلٹرنگ میکانزم ، جعلی توڑنے کے امکانات کو نمایاں طور پر کم کرتا ہے

پہلی تہہ: ای ایم اے رجحانات کی جانب مائل فیصلےقیمت 200 دن کے ای ایم اے سے اوپر صرف ایک سے زیادہ ٹوٹ جاتا ہے ، اس کے نیچے صرف ایک ہی ٹوٹ جاتا ہے۔ یہ چال 80٪ منفی تجارت کو براہ راست فلٹر کرتی ہے۔

دوسرا فلٹر: ٹرینڈ لائن کی تاثیر کی تصدیقسسٹم کا تقاضا ہے کہ رجحان لائن کو ڈرائنگ کرنے کے لئے دو اہل محور پوائنٹس تلاش کیے جائیں۔ کافی اعداد و شمار کی حمایت نہ کرنے والی ‘رجحان لائن’ کو براہ راست نظرانداز کیا جائے۔

عملی جنگ کا اثر: ہلچل والے شہروں میں غیر موثر سگنلوں میں نمایاں کمی ، رجحان والے شہروں میں کامیابی کے مواقع کو درست طریقے سے پکڑنا۔

متحرک پوزیشن مینجمنٹ ، منافع سے زیادہ خطرہ کنٹرول

آپ کو دو پوزیشنوں کا انتخاب کرنا ہوگا:

  1. فی صد خطرہ ماڈل: اسٹاپ نقصان کے فاصلے کے مطابق پوزیشن کو متحرک طور پر ایڈجسٹ کریں ، اس بات کو یقینی بنائیں کہ ہر تجارت کا خطرہ طے ہوجائے
  2. فکسڈ معاہدہ ماڈلتجربہ کار تاجروں کے لئے موزوں: پوزیشنوں کو طے کیا جاتا ہے لیکن خطرے کو روکنے کے فاصلے میں تبدیلی آتی ہے

ریاضی کا فارمولا: پوزیشن کا سائز = (اکاؤنٹ فنڈ × خطرے کا فیصد) ÷ اسٹاپ نقصان کا فاصلہ

یہ پوزیشن مینجمنٹ مارکیٹ میں 90٪ حکمت عملی سے زیادہ سائنسی ہے۔ مسلسل نقصان پر پوزیشن کو خود بخود کم کیا جاتا ہے ، منافع پر آہستہ آہستہ پوزیشن میں اضافہ ہوتا ہے۔

حکمت عملی کی حدود، میں چھپے چھپے نہیں رہوں گا

یہ حکمت عملی ہر جگہ کام نہیں کر سکتی اور اس میں مندرجہ ذیل صورتوں میں بہتری نہیں آئی ہے:

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

پیرامیٹر حساسیت کی یاد دہانی:

  • محور کی حساسیت کو بہت کم کرنے سے شور سگنل پیدا ہوتا ہے
  • ٹرینڈ لائنوں کو تلاش کرنے کے لئے بہت مختصر واپسی ونڈو
  • 2 فیصد سے زیادہ کا خطرہ محتاط غور طلب ہے

عملی طور پر تعینات کرنے کی تجویز، نظریاتی طور پر بھی بہتر

بہترین اطلاق کے حالات:

  • مڈل اور طویل مدتی رجحانات کے لئے اہم قسمیں
  • دن کی لکیر یا 4 گھنٹے کی سطح کا چارٹ
  • کچھ اتار چڑھاؤ کے ساتھ ، لیکن بہت زیادہ پاگل پن کے بغیر

پیرامیٹرز کو بہتر بنانے کی سفارش:

  • نئے آنے والوں کے مطابق خطرے کو 0.5 فیصد سے 1 فیصد تک کنٹرول کیا جا سکتا ہے۔
  • محور نقطہ حساسیت پرجاتیوں کی خصوصیات کے مطابق
  • واپسی کی ونڈو کو مارکیٹ کے دورانیے کے مطابق مناسب طریقے سے بڑھایا جاسکتا ہے

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-10-29 00:00:00
end: 2025-10-27 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Trendline Breakout Strategy", overlay=true, max_lines_count=500, max_labels_count=500, max_boxes_count=500)

// === INPUTS ===
ema_len = input.int(200, "EMA Length", minval=1, group="Trend Detection")
src = input.source(close, "EMA Source", group="Trend Detection")
lookback = input.int(20, "Lookback Window for Pivots (bars)", minval=5, group="Trend Detection")
left_bars = input.int(5, "Pivot Left Sensitivity (bars)", minval=1, group="Trend Detection")
right_bars = input.int(5, "Pivot Right Sensitivity (bars)", minval=1, group="Trend Detection")

qty_mode = input.string("Risk Percent", "Position Sizing Mode", options=["Risk Percent", "Fixed Contracts"], group="Position Sizing")
risk_pct = input.float(1.0, "Risk % of Equity", minval=0.1, maxval=10.0, step=0.1, group="Position Sizing")
fixed_size = input.int(1, "Fixed Contract Size", minval=1, group="Position Sizing")

show_trendline = input.bool(true, "Show Trendline", group="Visuals")
enable_prints = input.bool(true, "Enable Info Table", group="Visuals")

// === CORE LOGIC ===
// EMA Calculation
ema = ta.ema(src, ema_len)
bias_bull = close > ema
bias_bear = close < ema

// Pivot Detection (confirmed, no repainting)
ph = ta.pivothigh(high, left_bars, right_bars)
pl = ta.pivotlow(low, left_bars, right_bars)

// Arrays to store historical pivots (limited to prevent memory issues)
var array<float> ph_values = array.new<float>()
var array<int> ph_bars = array.new<int>()
var array<float> pl_values = array.new<float>()
var array<int> pl_bars = array.new<int>()

// Update pivot highs array
if not na(ph)
    array.push(ph_values, ph)
    array.push(ph_bars, bar_index - right_bars)
    if array.size(ph_values) > 100
        array.shift(ph_values)
        array.shift(ph_bars)

// Update pivot lows array
if not na(pl)
    array.push(pl_values, pl)
    array.push(pl_bars, bar_index - right_bars)
    if array.size(pl_values) > 100
        array.shift(pl_values)
        array.shift(pl_bars)

// Function to find two most recent pivots within lookback
get_two_pivots(arr_vals, arr_bars) =>
    int p1_bar = na
    float p1_val = na
    int p2_bar = na
    float p2_val = na
    for j = array.size(arr_bars) - 1 to 0
        int pb = array.get(arr_bars, j)
        if pb < bar_index - lookback
            break
        if na(p1_bar)
            p1_bar := pb
            p1_val := array.get(arr_vals, j)
        else if na(p2_bar)
            p2_bar := pb
            p2_val := array.get(arr_vals, j)
            break  // Only need the two most recent
    [p1_bar, p1_val, p2_bar, p2_val]

// Get pivots for bullish bias
int p1h_bar = na
float p1h_val = na
int p2h_bar = na
float p2h_val = na
if bias_bull
    [tmp1, tmp2, tmp3, tmp4] = get_two_pivots(ph_values, ph_bars)
    p1h_bar := tmp1
    p1h_val := tmp2
    p2h_bar := tmp3
    p2h_val := tmp4

// Get pivots for bearish bias
int p1l_bar = na
float p1l_val = na
int p2l_bar = na
float p2l_val = na
if bias_bear
    [tmp5, tmp6, tmp7, tmp8] = get_two_pivots(pl_values, pl_bars)
    p1l_bar := tmp5
    p1l_val := tmp6
    p2l_bar := tmp7
    p2l_val := tmp8

// Validate trendlines
bull_valid = bias_bull and not na(p1h_bar) and not na(p2h_bar) and p2h_bar < p1h_bar and p2h_val > p1h_val  // Descending: older high > newer high
bear_valid = bias_bear and not na(p1l_bar) and not na(p2l_bar) and p2l_bar < p1l_bar and p2l_val < p1l_val  // Ascending: older low < newer low

// Calculate trendline Y at current bar
float bull_y = na
if bull_valid and p1h_bar != p2h_bar
    float slope = (p1h_val - p2h_val) / (p1h_bar - p2h_bar)
    bull_y := p1h_val + slope * (bar_index - p1h_bar)

float bear_y = na
if bear_valid and p1l_bar != p2l_bar
    float slope = (p1l_val - p2l_val) / (p1l_bar - p2l_bar)
    bear_y := p1l_val + slope * (bar_index - p1l_bar)

// Breakout conditions (confirmed on close, no repainting)
long_breakout = bull_valid and ta.crossover(close, bull_y)
short_breakout = bear_valid and ta.crossunder(close, bear_y)

// === POSITION SIZING AND ENTRIES ===
var float entry_price = na
var float sl_price = na
var float tp_price = na

if long_breakout and strategy.position_size == 0
    entry_price := close
    sl_price := low[1]
    float risk = entry_price - sl_price
    if risk > 0
        strategy.entry("Long", strategy.long, qty = qty_mode == "Fixed Contracts" ? float(fixed_size) : (strategy.equity * risk_pct / 100) / risk)
        tp_price := sl_price + 3 * risk
        strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if short_breakout and strategy.position_size == 0
    entry_price := close
    sl_price := high[1]
    float risk = sl_price - entry_price
    if risk > 0
        strategy.entry("Short", strategy.short, qty = qty_mode == "Fixed Contracts" ? float(fixed_size) : (strategy.equity * risk_pct / 100) / risk)
        tp_price := sl_price - 3 * risk
        strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// === VISUAL LABELS ===
if long_breakout
    label.new(bar_index, low, text="Long\nEntry: " + str.tostring(entry_price, "#.##") + "\nSL: " + str.tostring(sl_price, "#.##") + "\nTP: " + str.tostring(tp_price, "#.##") + "\nReason: Trendline Breakout", 
              style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

if short_breakout
    label.new(bar_index, high, text="Short\nEntry: " + str.tostring(entry_price, "#.##") + "\nSL: " + str.tostring(sl_price, "#.##") + "\nTP: " + str.tostring(tp_price, "#.##") + "\nReason: Trendline Breakout", 
              style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// === INFO TABLE ===
if enable_prints and barstate.islast
    var table info_table = table.new(position.top_right, 2, 4, bgcolor=color.white, border_width=1)
    table.cell(info_table, 0, 0, "Bias", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 0, bias_bull ? "Bull" : "Bear", text_color=bias_bull ? color.green : color.red)
    table.cell(info_table, 0, 1, "Trendline", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 1, bull_valid or bear_valid ? (bull_valid ? "Descending" : "Ascending") : "None", text_color=color.black)
    table.cell(info_table, 0, 2, "Position", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 2, strategy.position_size > 0 ? "Long" : strategy.position_size < 0 ? "Short" : "Flat", text_color=color.black)
    table.cell(info_table, 0, 3, "P&L", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 3, str.tostring(strategy.netprofit, "#.##"), text_color=strategy.netprofit >= 0 ? color.green : color.red)

// === EMA PLOT ===
plot(ema, "EMA", color=color.blue, linewidth=2)

// === ALERTS ===
alertcondition(long_breakout, title="Long Entry Alert", message="Bullish bias: Price broke above descending trendline. Enter Long.")
alertcondition(short_breakout, title="Short Entry Alert", message="Bearish bias: Price broke below ascending trendline. Enter Short.")
alertcondition(strategy.position_size[1] != 0 and strategy.position_size == 0, title="Exit Alert", message="Position closed at SL or TP.")

// === COMMENTS AND LIMITATIONS ===
// Comments:
// - Pivots are detected using ta.pivothigh/low with user-defined sensitivity to identify "significant" swings.
// - Trendlines are redrawn only when bias is active and valid (two qualifying pivots found).
// - Entries/exits use strategy.entry/exit for backtesting; position size closes opposite trades automatically.
// - No repainting: All pivots require 'right_bars' confirmation; breakouts checked on bar close.
// - Variable names: Descriptive (e.g., p1h_bar for most recent pivot high bar).
//
// Limitations:
// - Trendline uses the two *most recent* pivot highs/lows within lookback; may not always connect the absolute highest/lowest if more pivots exist.
// - Pivot sensitivity (left/right bars) approximates "significant" swings—too low may include noise, too high may miss turns.
// - Only one trendline per bias; does not handle multiple parallel lines or complex channels.
// - Position sizing assumes equity-based risk; in "Fixed Contracts" mode, risk % varies with SL distance.
// - Lookback window limits historical context—short windows may yield few/no valid trendlines on low-volatility periods.
// - Strategy does not filter for overall trend strength beyond EMA bias; add filters (e.g., volume) for production use.