کیلٹنر چینلز پر مبنی لچکدار طویل اور مختصر تجارتی حکمت عملی

ATR EMA SMA MA TR
تخلیق کی تاریخ: 2025-02-10 15:07:12 آخر میں ترمیم کریں: 2025-02-10 15:07:12
کاپی: 4 کلکس کی تعداد: 448
1
پر توجہ دیں
1617
پیروکار

کیلٹنر چینلز پر مبنی لچکدار طویل اور مختصر تجارتی حکمت عملی

جائزہ

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

حکمت عملی کا اصول

یہ حکمت عملی بنیادی طور پر مندرجہ ذیل بنیادی اصولوں پر مبنی ہے:

  1. ای ایم اے یا ایس ایم اے کے ذریعہ قیمتوں کے حساب سے مرکزی رجحانات ، چینل کے وسط میں تشکیل دیں
  2. اے ٹی آر ، ٹی آر یا رینج کے حساب سے اتار چڑھاؤ کی شرح کا استعمال کرتے ہوئے ، راستے کو ٹریک پر اور نیچے بنائیں
  3. جب قیمت اوپر کی طرف بڑھتی ہے تو ایک سے زیادہ سگنل کو متحرک کریں ، جب قیمت نیچے کی طرف بڑھتی ہے تو ایک خالی سگنل کو متحرک کریں
  4. اسٹاپ لاسرس ٹرسٹ کے ایک ہی طریقہ کار کے ذریعے داخلے اور باہر نکلنے کے لئے ٹریڈ ایگزیکیوشن کو بہتر بنانا
  5. لچکدار ٹریڈنگ موڈ کے اختیارات کی حمایت کریں: صرف زیادہ، صرف خالی یا دو طرفہ تجارت

اسٹریٹجک فوائد

  1. لچکدار - اے ٹی آر کے ذریعے چینل کی چوڑائی کو متحرک طور پر ایڈجسٹ کریں تاکہ حکمت عملی مختلف مارکیٹ کے اتار چڑھاؤ کے ماحول میں لگی رہ سکے
  2. خطرہ کنٹرول میں بہتری - اسٹاپ نقصانات کے لئے واحد ٹرانزیکشن کا استعمال کرتے ہوئے ، خطرے کو مؤثر طریقے سے کنٹرول کریں
  3. آپریشنل لچک - مارکیٹ کی خصوصیات اور ٹریڈنگ کی ترجیحات کے مطابق ایڈجسٹ کرنے کے لئے متعدد ٹریڈنگ کے طریقوں کی حمایت کرتا ہے
  4. تصدیق شدہ - کریپٹوکرنسی اور اسٹاک مارکیٹوں میں خاص طور پر زیادہ اتار چڑھاؤ والی مارکیٹوں میں اچھی کارکردگی کا مظاہرہ
  5. بصری وضاحت - ٹریڈنگ سگنل اور پوزیشن ہولڈنگ کی حیثیت کی بصری نمائش فراہم کرنا

اسٹریٹجک رسک

  1. ہلچل مارکیٹ کا خطرہ - ہلچل والے بازاروں میں اکثر جھوٹے بریک سگنل پیدا ہوسکتے ہیں
  2. سلائڈ پوائنٹ کا خطرہ - غیر لیکویڈیٹی والے بازاروں میں ، اسٹاپ نقصان والے ٹرانزیکشنز کو زیادہ سلائڈ پوائنٹس کا سامنا کرنا پڑ سکتا ہے
  3. رجحان میں ردوبدل کا خطرہ - اچانک رجحان میں ردوبدل ہونے پر زیادہ نقصان کا خطرہ
  4. پیرامیٹر حساسیت - چینل پیرامیٹرز کے انتخاب کی حکمت عملی کی کارکردگی پر اہم اثر

حکمت عملی کی اصلاح کی سمت

  1. رجحان فلٹر متعارف کرایا - رجحان کے فیصلے کے اشارے کو شامل کرکے جھوٹے بریک سگنل کو کم کریں
  2. متحرک پیرامیٹرز کی اصلاح - مارکیٹ کے اتار چڑھاو کے مطابق چینل پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنا
  3. نقصانات کو روکنے کے طریقہ کار کو بہتر بنائیں - منافع کو بہتر طور پر بچانے کے لئے موبائل نقصانات کو روکنے کا اضافہ کریں
  4. ٹرانزیکشن کی تصدیق میں اضافہ - سگنل کی وشوسنییتا کو بہتر بنانے کے لئے ٹرانزیکشن کے اشارے کا مجموعہ
  5. پوزیشن مینجمنٹ کو بہتر بنائیں - خطرے کو بہتر طور پر کنٹرول کرنے کے لئے متحرک پوزیشن مینجمنٹ متعارف کروائیں

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-02-11 00:00:00
end: 2025-02-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(title = "Jaakko's Keltner Strategy", overlay = true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// ──────────────────────────────────────────────────────────────────────────────
// ─── USER INPUTS ─────────────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
length      = input.int(20,     minval=1,  title="Keltner MA Length")
mult        = input.float(2.0,             title="Multiplier")
src         = input(close,                 title="Keltner Source")
useEma      = input.bool(true,             title="Use Exponential MA")
BandsStyle  = input.string(title = "Bands Style", defval  = "Average True Range", options = ["Average True Range", "True Range", "Range"])
atrLength   = input.int(10,                title="ATR Length")

// Choose which side(s) to trade
tradeMode = input.string(title   = "Trade Mode", defval  = "Long Only", options = ["Long Only", "Short Only", "Both"])

// ──────────────────────────────────────────────────────────────────────────────
// ─── KELTNER MA & BANDS ───────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
f_ma(source, length, emaMode) =>
    maSma = ta.sma(source, length)
    maEma = ta.ema(source, length)
    emaMode ? maEma : maSma

ma    = f_ma(src, length, useEma)
rangeMa = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrLength) : ta.rma(high - low, length)

upper = ma + rangeMa * mult
lower = ma - rangeMa * mult

// ──────────────────────────────────────────────────────────────────────────────
// ─── CROSS CONDITIONS ─────────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
crossUpper = ta.crossover(src, upper) // potential long signal
crossLower = ta.crossunder(src, lower) // potential short signal

// ──────────────────────────────────────────────────────────────────────────────
// ─── PRICE LEVELS FOR STOP ENTRY (LONG) & STOP ENTRY (SHORT) ─────────────────
// ──────────────────────────────────────────────────────────────────────────────
bprice = 0.0
bprice := crossUpper ? high + syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low - syminfo.mintick : nz(sprice[1])

// ──────────────────────────────────────────────────────────────────────────────
// ─── BOOLEAN FLAGS FOR PENDING LONG/SHORT ─────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
crossBcond = false
crossBcond := crossUpper ? true : crossBcond[1]

crossScond = false
crossScond := crossLower ? true : crossScond[1]

// Cancel logic for unfilled orders (same as original)
cancelBcond = crossBcond and (src < ma or high >= bprice)
cancelScond = crossScond and (src > ma or low <= sprice)

// ──────────────────────────────────────────────────────────────────────────────
// ─── LONG SIDE ────────────────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
if (tradeMode == "Long Only" or tradeMode == "Both")  // Only run if mode is long or both
    // Cancel unfilled long if invalid
    if cancelBcond
        strategy.cancel("KltChLE")

    // Place long entry
    if crossUpper
        strategy.entry("KltChLE", strategy.long, stop=bprice, comment="Long Entry")

    // If we are also using “Both,” we rely on short side to flatten the long.
    // But if “Long Only,” we can exit on crossLower or do nothing.
    // Let’s do a "stop exit" if in "Long Only" (like the improved version).
    if tradeMode == "Long Only"
        // Cancel unfilled exit
        if cancelScond
            strategy.cancel("KltChLX")

        // Place exit if crossLower
        if crossLower
            strategy.exit("KltChLX", from_entry="KltChLE", stop=sprice, comment="Long Exit")

// ──────────────────────────────────────────────────────────────────────────────
// ─── SHORT SIDE ───────────────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
if (tradeMode == "Short Only" or tradeMode == "Both") // Only run if mode is short or both
    // Cancel unfilled short if invalid
    if cancelScond
        strategy.cancel("KltChSE")

    // Place short entry
    if crossLower
        strategy.entry("KltChSE", strategy.short, stop=sprice, comment="Short Entry")

    // If “Short Only,” we might do a symmetrical exit approach for crossUpper
    // Or if "Both," going long automatically flattens the short in a no-hedge account.
    // Let's replicate "stop exit" for short side if "Short Only" is chosen:
    if tradeMode == "Short Only"
        // Cancel unfilled exit
        if cancelBcond
            strategy.cancel("KltChSX")

        // Place exit if crossUpper
        if crossUpper
            strategy.exit("KltChSX", from_entry="KltChSE", stop=bprice, comment="Short Exit")

// ──────────────────────────────────────────────────────────────────────────────
// ─── OPTIONAL VISUALS ─────────────────────────────────────────────────────────
// ──────────────────────────────────────────────────────────────────────────────
barcolor(strategy.position_size > 0 ? color.green : strategy.position_size < 0 ? color.red : na)

plotshape(    strategy.position_size > 0 and strategy.position_size[1] <= 0, title     = "BUY",  text      = '🚀',  style     = shape.labelup,    location  = location.belowbar,     color     = color.green,     textcolor = color.white,      size      = size.small)

plotshape(    strategy.position_size <= 0 and strategy.position_size[1] > 0,     title     = "SELL",     text      = '☄️',     style     = shape.labeldown,     location  = location.abovebar,     color     = color.red,       textcolor = color.white,     size      = size.small)

plotshape(crossLower, style=shape.triangledown, color=color.red, location=location.abovebar, title="CrossLower Trigger")