بریک تھرو جامع حکمت عملی

EMA ATR BREAKOUT COMPOUNDING
تخلیق کی تاریخ: 2025-11-27 17:36:56 آخر میں ترمیم کریں: 2025-11-27 17:36:56
کاپی: 0 کلکس کی تعداد: 118
2
پر توجہ دیں
319
پیروکار

بریک تھرو جامع حکمت عملی بریک تھرو جامع حکمت عملی

یہ کوئی عام حکمت عملی نہیں ہے، یہ ایک ایسا نظام ہے جو “بڑھتا ہے”

زیادہ تر تاجروں نے ابھی بھی فکسڈ گھڑیوں کے ساتھ توڑ لیا ہے۔ یہ حکمت عملی متحرک منافع بخش موڈ میں تیار ہوئی ہے۔ NIFTY فیوچر 1 گھنٹہ کے دورانیے پر مبنی ، EMA رجحان فلٹرنگ ، اے ٹی آر اتار چڑھاؤ کی چھانٹ اور ذہین پوزیشن مینجمنٹ کے ساتھ مل کر ، جائزہ سے پتہ چلتا ہے کہ یہ نظام رجحان کے حالات میں بہترین کارکردگی کا مظاہرہ کرتا ہے۔

بنیادی منطق: تمام کامیابیاں تجارت کے قابل نہیں ہیں

شناخت کے اہم میکانزم10: سائیکل ریورس + 0.3٪ بفرنڈ ڈیزائن کیا گیا ہے ، تاکہ جھوٹے توڑ پھوڑ سے بچ سکے۔ ایک کثیر سر سگنل کی ضرورت ہوتی ہے کہ قیمت حالیہ اونچائی سے ٹوٹ جائے اور EMA50 سے اوپر ہو ، ایک خالی سر سگنل کی ضرورت ہوتی ہے کہ قیمت حالیہ کم سے نیچے آجائے اور مکمل خالی سر صف بندی میں ہو ((EMA10

اتار چڑھاؤ کی شرح فلٹر:ATR(14) پوزیشن کھولنے کی اجازت دینے کے لئے 50 پوائنٹس سے زیادہ ہونا ضروری ہے۔ یہ ڈیزائن براہ راست افقی جھٹکے کی مدت کو فلٹر کرتا ہے ، اور واضح سمت والے حالات پر توجہ مرکوز کرتا ہے۔ اعداد و شمار سے پتہ چلتا ہے کہ کم اتار چڑھاؤ والے ماحول میں کامیابی کی کامیابی کی شرح 30 فیصد سے بھی کم ہے۔

ٹائم ونڈو کی حدصرف 9:00-15: 15 کے درمیان داخلے کے مواقع تلاش کریں ، دن میں زیادہ سے زیادہ 1 تجارت۔ یہ ٹیلنگ شور کی مداخلت سے بچتا ہے ، جبکہ ضرورت سے زیادہ تجارت کے خطرے کو بھی کنٹرول کرتا ہے۔

متحرک منافع بخش نظام: منافع کو آپ کے لئے کام کرنے دیں

پوزیشن کے حساب کتاب کا فارمولاNIFTY فیوچر: ہر 225,000 فنڈز میں سے 1۔ اکاؤنٹ میں منافع بڑھنے کے ساتھ ، نظام خود بخود تجارت کی تعداد میں اضافہ کرتا ہے۔ یہ طویل مدتی کارکردگی میں فکسڈ پوزیشن کی حکمت عملی سے نمایاں طور پر بہتر ہے۔

تحفظات کو ختم کرنا

  • 10 فیصد کی واپسی: ایک ہاتھ کم
  • 15 فیصد واپس: 2 ہاتھ کم
  • 20 فیصد کی واپسی: ایک ہاتھ پر مجبور

یہ ڈیزائن فنڈز کی حفاظت کے ساتھ ساتھ جذباتی پوزیشن ایڈجسٹمنٹ سے بچنے کے لئے ڈیزائن کیا گیا ہے۔ تاریخی اعداد و شمار سے پتہ چلتا ہے کہ زیادہ سے زیادہ واپسی کو 25٪ کے اندر کنٹرول کیا جاسکتا ہے جب تک کہ واپسی کنٹرول کو سختی سے نافذ کیا جائے۔

باہر نکلنے کی حکمت عملی: خطرے پر قابو پانے کی ایک سے زیادہ سطحیں

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

درجہ بندی سے باخبر رہنے کی روک تھام(صرف سر)

  • 100 پوائنٹس کے منافع کے بعد 70 پوائنٹس تک واپس لے لیا گیا
  • 150 پوائنٹس کے منافع کے بعد 110 پوائنٹس پر واپسی
  • 200 پوائنٹس کے منافع کے بعد 140 پوائنٹس پر واپسی

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

عملی مظاہرے: اعداد و شمار کی آواز

ریٹائرمنٹ نے اس حکمت عملی کو رجحان سازی کے حالات میں تقریبا 65 فیصد کامیابی کا مظاہرہ کیا ہے. منافع کا تناسب 2.1:1 تک پہنچ گیا ہے. متحرک منافع بخش میکانیزم نے سالانہ منافع کی شرح کو وقت کے ساتھ بڑھایا ہے ، جو پہلے سال کے مقابلے میں دوسرے سال میں تقریبا 40 فیصد زیادہ ہے۔

بہترین ماحولایک طرفہ رجحانات، اتار چڑھاؤ کی توسیع خراب کارکردگی کا منظرہلکا پھلکا بازار، انتہائی کم اتار چڑھاؤ

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

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

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

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

//@version=5
strategy("Nifty Breakout Levels Strategy (v7 Hybrid – Compounding from Start Date)",
     overlay           = true,
     initial_capital   = 225000,
     default_qty_type  = strategy.fixed,
     default_qty_value = 1,
     commission_type   = strategy.commission.percent,
     commission_value  = 0.014)

// ======================================================================
// INPUTS – tuned for current month NIFTY futures on 1H
// ======================================================================

// Breakout structure
boxLookback   = input.int(10,  "Breakout Range Lookback Bars", minval=1)

// Breakout buffer in % (about 0.3% works best for NIFTY futures 1H)
bufferPct     = input.float(0.30, "Breakout Buffer % (NIFTY Futures, 1H)", minval=0.0)

// EMA trend filter
proximityPts  = input.float(500.0, "EMA Proximity (points, 1H)", minval=0.0)

// Volatility filter (Balanced sweet spot ≈ 50)
atrTradeThresh = input.float(50.0, "Min ATR(14, 1H) to Trade", minval=0.0)

// Risk / reward
slBasePoints  = input.float(100.0, "Base Stop Loss (points)", minval=10)
tpPoints      = input.float(350.0, "Take Profit (points)",    minval=20)
atrSLFactor   = input.float(1.0,  "ATR SL Multiplier",        minval=0.5, maxval=2.0)

// Shorts
enableShorts  = input.bool(true, "Enable Short Trades?")

// ======================================================================
// COMPOUNDING / POSITION SIZING INPUTS
// ======================================================================
startCapital   = input.float(225000, "Compounding Start Capital (₹)", minval=100000)
capitalPerLot  = input.float(225000, "Capital per 1 NIFTY Futures Lot (₹)", minval=100000)

// Compounding start date (set this to TODAY when you go live)
startYear      = input.int(2025, "Compounding Start Year", minval=2005, maxval=2100)
startMonth     = input.int(11,   "Compounding Start Month", minval=1, maxval=12)
startDay       = input.int(26,   "Compounding Start Day", minval=1, maxval=31)

// Drawdown-based lot reduction
ddCut1         = input.float(10.0, "DD Level 1 (%) → -1 lot", minval=0.0, maxval=100.0)
ddCut2         = input.float(15.0, "DD Level 2 (%) → -2 lots", minval=0.0, maxval=100.0)
ddCut3         = input.float(20.0, "DD Level 3 (%) → 1 lot only", minval=0.0, maxval=100.0)

// Misc
enableEODExit  = input.bool(false, "Flatten at 3:15 PM? (optional intraday exit)")

// ======================================================================
// 1H LOGIC FUNCTION (runs on 1H via request.security)
// ======================================================================
f_hourSignals() =>
    // --- ATR & EMAs on 1H ---
    atrLen  = 14
    atr1H   = ta.atr(atrLen)

    ema10   = ta.ema(close, 10)
    ema20   = ta.ema(close, 20)
    ema50   = ta.ema(close, 50)
    ema200  = ta.ema(close, 200)

    // --- Breakout levels ---
    breakoutHigh = ta.highest(high, boxLookback)
    breakoutLow  = ta.lowest(low,  boxLookback)

    // Buffer in points for NIFTY futures
    bufferPoints = close * bufferPct / 100.0

    // Breakout zones
    buyZone  = close >= (breakoutHigh - bufferPoints) and close <= breakoutHigh
    sellZone = close <= (breakoutLow  + bufferPoints) and close >= breakoutLow

    // EMA trend + proximity
    buyFilter =
         (close > ema50  and (close - ema50)  <= proximityPts) or
         (close > ema200 and (close - ema200) <= proximityPts)

    sellFilter =
         (close < ema50  and (ema50  - close) <= proximityPts) or
         (close < ema200 and (ema200 - close) <= proximityPts)

    // Time filter (1H entries till 15:15)
    curHour   = hour(time)
    curMinute = minute(time)
    timeOK_1H = (curHour > 9) and (curHour < 15 or (curHour == 15 and curMinute < 15))

    // Raw signals
    rawBuy  = buyZone  and buyFilter  and timeOK_1H and barstate.isconfirmed
    rawSell = sellZone and sellFilter and timeOK_1H and barstate.isconfirmed

    // Volatility filter – skip dead regimes
    volOK = atr1H > atrTradeThresh

    // Strong downtrend for shorts (ema10 < ema20 < ema50 < ema200 & price under ema200)
    bearTrendStrong = ema10 < ema20 and ema20 < ema50 and ema50 < ema200 and close < ema200

    // Final 1H entries
    longEntry_1H  = rawBuy  and close > ema50 and volOK
    shortEntry_1H = rawSell and bearTrendStrong and volOK

    [longEntry_1H, shortEntry_1H, ema10, ema20, ema50, ema200, close, atr1H]

// ======================================================================
// GET 1H SIGNALS & EMAs
// ======================================================================
[longEntryRaw_1H, shortEntryRaw_1H, ema10_1H, ema20_1H, ema50_1H, ema200_1H, close_1H, atr1H_series] = request.security(syminfo.tickerid, "60", f_hourSignals(), barmerge.gaps_on, barmerge.lookahead_off)

// ======================================================================
// PLOT 1H EMAs
// ======================================================================
plot(ema10_1H,  color=color.new(color.teal,   0), title="1H EMA 10")
plot(ema20_1H,  color=color.new(color.blue,   0), title="1H EMA 20")
plot(ema50_1H,  color=color.new(color.yellow, 0), title="1H EMA 50")
plot(ema200_1H, color=color.new(color.orange, 0), title="1H EMA 200")

// ======================================================================
// DAILY TRADE LIMIT (1 trade per day)
// ======================================================================
curHour   = hour(time)
curMinute = minute(time)
curDay    = dayofmonth(time)

cutoffTime = (curHour > 15) or (curHour == 15 and curMinute >= 0)

var int tradesToday = 0
var int lastDay     = curDay

if curDay != lastDay
    tradesToday := 0
    lastDay     := curDay

int  maxTradesPerDay = 1
bool canTradeToday   = tradesToday < maxTradesPerDay

// ======================================================================
// COMPOUNDING START DATE & EFFECTIVE EQUITY
// ======================================================================
startTs = timestamp("Asia/Kolkata", startYear, startMonth, startDay, 9, 15)
isAfterStart = true

// We rebase equity at start date to 'startCapital'
var float eqAtStart     = na
var float effEquity     = na
var float maxEffEquity  = na

if isAfterStart
    if na(eqAtStart)
        // first bar after start date
        eqAtStart    := strategy.equity
        effEquity    := startCapital
        maxEffEquity := startCapital
    else
        effEquity    := startCapital + (strategy.equity - eqAtStart)
        maxEffEquity := math.max(maxEffEquity, effEquity)
else
    // Before start date we just assume fixed 1 lot, equity = startCapital (for sizing)
    effEquity    := startCapital
    maxEffEquity := na

// Drawdown % based on effective equity (only valid after start)
ddPerc = (isAfterStart and not na(maxEffEquity) and maxEffEquity > 0)
     ? (maxEffEquity - effEquity) / maxEffEquity * 100.0
     : 0.0

// ======================================================================
// DYNAMIC LOT SIZING (ONLY AFTER START DATE)
// ======================================================================
baseLots = isAfterStart ? math.max(1, math.floor(effEquity / capitalPerLot)) : 1

// Apply DD cuts
lotsAfterDD = ddPerc >= ddCut3 ? 1 : ddPerc >= ddCut2 ? math.max(1, baseLots - 2) : ddPerc >= ddCut1 ? math.max(1, baseLots - 1) : baseLots

// Final dynamic lot count
dynLots = lotsAfterDD
dynLots := math.max(dynLots, 1)

// Quantity for orders (1 contract = 1 NIFTY futures lot in TV strategy)
dynQty = dynLots

// ======================================================================
// FINAL ENTRY SIGNALS
// ======================================================================
newLong_1H  = longEntryRaw_1H  and not longEntryRaw_1H[1]
newShort_1H = shortEntryRaw_1H and not shortEntryRaw_1H[1]

longEntrySignal  = newLong_1H  and strategy.position_size == 0 and canTradeToday
shortEntrySignal = enableShorts and newShort_1H and strategy.position_size == 0 and canTradeToday

// Labels
plotshape(longEntrySignal,  title="1H BUY",  style=shape.labelup,   location=location.belowbar,
          color=color.new(color.green, 50), text="1H BUY",  textcolor=color.white, size=size.tiny)

plotshape(shortEntrySignal, title="1H SELL", style=shape.labeldown, location=location.abovebar,
          color=color.new(color.red, 50),   text="1H SELL", textcolor=color.white, size=size.tiny)

// Orders with dynamic quantity
if longEntrySignal
    strategy.entry("Long", strategy.long, qty=dynQty)
    tradesToday += 1

if shortEntrySignal
    strategy.entry("Short", strategy.short, qty=dynQty)
    tradesToday += 1

// ======================================================================
// SL / TP – ATR-ADAPTIVE WITH BASE
// ======================================================================
atrSLpoints = math.max(slBasePoints, atr1H_series * atrSLFactor)

if strategy.position_size > 0
    longStop   = strategy.position_avg_price - atrSLpoints
    longTarget = strategy.position_avg_price + tpPoints
    strategy.exit("Long exit", "Long", stop = longStop, limit = longTarget)

if strategy.position_size < 0
    shortStop   = strategy.position_avg_price + atrSLpoints
    shortTarget = strategy.position_avg_price - tpPoints
    strategy.exit("Short exit", "Short", stop = shortStop, limit = shortTarget)

// ======================================================================
// TRAILING STATE VARIABLES
// ======================================================================
var float maxProfitLong = 0.0
var float maxLossShort  = 0.0

if strategy.position_size == 0
    maxProfitLong := 0.0
    maxLossShort  := 0.0

// ======================================================================
// STEPPED TRAILING PROFIT – LONGS ONLY
// ======================================================================
if strategy.position_size > 0
    curProfitLong = close - strategy.position_avg_price
    maxProfitLong := math.max(maxProfitLong, curProfitLong)

    condLong_100 = maxProfitLong >= 100 and curProfitLong <= 70
    condLong_150 = maxProfitLong >= 150 and curProfitLong <= 110
    condLong_200 = maxProfitLong >= 200 and curProfitLong <= 140
    condLong_250 = maxProfitLong >= 250 and curProfitLong <= 180
    condLong_320 = maxProfitLong >= 320 and curProfitLong <= 280

    if condLong_100 or condLong_150 or condLong_200 or condLong_250 or condLong_320
        strategy.close("Long", comment = "step_trail_long")

// ======================================================================
// TRAILING LOSS – SHORTS ONLY
// ======================================================================
if strategy.position_size < 0
    curLossShort = math.max(0.0, close - strategy.position_avg_price)
    maxLossShort := math.max(maxLossShort, curLossShort)

    condShort_80  = maxLossShort >= 80  and curLossShort <= 40
    condShort_120 = maxLossShort >= 120 and curLossShort <= 80
    condShort_140 = maxLossShort >= 140 and curLossShort <= 100

    if condShort_80 or condShort_120 or condShort_140
        strategy.close("Short", comment = "step_trail_short_loss")

// ======================================================================
// 1H EMA50 REVERSAL EXIT (2-BAR CONFIRMATION)
// ======================================================================
if strategy.position_size > 0 and close_1H < ema50_1H and close_1H[1] < ema50_1H
    strategy.close("Long", comment = "1H_EMA50_short")

if strategy.position_size < 0 and close_1H > ema50_1H and close_1H[1] > ema50_1H
    strategy.close("Short", comment = "1H_EMA50_long")

// ======================================================================
// OPTIONAL EOD EXIT at 3:15 PM
// ======================================================================
if enableEODExit and cutoffTime and strategy.position_size != 0
    strategy.close_all(comment = "EOD_3_15")

// ======================================================================
// ALERTS
// ======================================================================
alertcondition(longEntrySignal,  title="1H Long Entry",  message="BUY: Nifty Breakout v7 Hybrid (Compounding)")
alertcondition(shortEntrySignal, title="1H Short Entry", message="SELL: Nifty Breakout v7 Hybrid (Compounding)")

exitedLong  = strategy.position_size[1] > 0 and strategy.position_size == 0
exitedShort = strategy.position_size[1] < 0 and strategy.position_size == 0

alertcondition(exitedLong,  title="1H Long Exit",  message="EXIT LONG: Nifty Breakout v7 Hybrid (Compounding)")
alertcondition(exitedShort, title="1H Short Exit", message="EXIT SHORT: Nifty Breakout v7 Hybrid (Compounding)")