
یہ حکمت عملی ایک رجحان ٹریکنگ سسٹم ہے جس میں متعدد اشارے شامل ہیں ، بنیادی طور پر مارکیٹ میں رجحان سازی کے مواقع کو پکڑنے کے لئے قیمتوں کے خلاف ورزیوں کی نشاندہی ، حجم کی تصدیق اور مساوی نظام کا استعمال کرتے ہوئے۔ حکمت عملی حالیہ اونچائیوں / نچلی سطحوں پر قیمتوں کی نگرانی ، تجارت کے حجم میں نمایاں اضافے اور کثیر اشاریہ منتقل اوسط (ای ایم اے) کی ترتیب کے ذریعہ تجارتی سگنل کی نشاندہی کرتی ہے۔ اس حکمت عملی میں ایک جدید تنگ صف کی شناخت کا طریقہ کار بھی شامل ہے ، جس میں ممکنہ خلائی مواقع کو پکڑنے کے لئے استعمال کیا جاتا ہے۔
اس حکمت عملی کی بنیادی منطق مندرجہ ذیل اہم عناصر پر مبنی ہے:
ایک سے زیادہ رجحان توڑنے والی رفتار کی تجارت کی حکمت عملی ایک جامع رجحان ٹریکنگ سسٹم ہے ، جس میں متعدد تکنیکی اشارے کے ساتھ مل کر استعمال کیا جاتا ہے ، جس سے سگنل کی وشوسنییتا کو یقینی بناتے ہوئے لچکدار تجارت کے مواقع فراہم کیے جاتے ہیں۔ حکمت عملی کی جدت اس میں ہے کہ روایتی توڑنے والی تجارت کے طریقوں اور ایک نئے قسم کے تنگ صف بندی کی شناخت کے طریقہ کار کو جوڑ دیا جائے ، جس سے یہ مختلف مارکیٹ کے حالات کے مطابق ڈھال سکے۔ اگرچہ کچھ خطرہ موجود ہے ، لیکن معقول پیرامیٹرز کی اصلاح اور خطرے کے انتظام کے اقدامات کے ذریعہ ، حکمت عملی کو رجحان کی مارکیٹ میں مستحکم کارکردگی کا امکان ہے۔
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Breakout Strategy (Long & Short) + Slope of 200 EMA", overlay=true)
// -------------------
// 1. Settings
// -------------------
breakout_candles = input.int(20, title="Number of Candles for Breakout")
range_candles = input.int(10, title="Number of Candles for Previous Range")
ema_long_period = input.int(200, title="Long EMA Period")
ema_medium_period = input.int(50, title="Medium EMA Period")
ema_short_period = input.int(30, title="Short EMA Period")
// Checkbox to allow/disallow short positions
allowShort = input.bool(true, title="Allow Short Positions")
// Inputs for the new Narrow Consolidation Short setup
consolidationBars = input.int(10, "Consolidation Bars", minval=1)
narrowThreshInAtr = input.float(0.5,"Narrowness (ATR Mult.)",minval=0.0)
atrLength = input.int(14, "ATR Length for Range")
// -------------------
// 2. Calculations
// -------------------
breakout_up = close > ta.highest(high, breakout_candles)[1]
breakout_down = close < ta.lowest(low, breakout_candles)[1]
prev_range_high = ta.highest(high, range_candles)[1]
prev_range_low = ta.lowest(low, range_candles)[1]
ema_long = ta.ema(close, ema_long_period)
ema_medium = ta.ema(close, ema_medium_period)
ema_short = ta.ema(close, ema_short_period)
average_vol = ta.sma(volume, breakout_candles)
volume_condition = volume > 2 * average_vol
// 200 EMA sloping down?
ema_long_slope_down = ema_long < ema_long[1]
// For the Narrow Consolidation Short
rangeHigh = ta.highest(high, consolidationBars)
rangeLow = ta.lowest(low, consolidationBars)
rangeSize = rangeHigh - rangeLow
atrValue = ta.atr(atrLength)
// Condition: Price range is "narrow" if it's less than (ATR * threshold)
narrowConsolidation = rangeSize < (atrValue * narrowThreshInAtr)
// Condition: All bars under Medium EMA if the highest difference (high - ema_medium) in last N bars is < 0
allBelowMedium = ta.highest(high - ema_medium, consolidationBars) < 0
// -------------------
// 3. Long Entry
// -------------------
breakout_candle_confirmed_long = ta.barssince(breakout_up) <= 3
long_condition = breakout_candle_confirmed_long
and volume_condition
and close > prev_range_high
and close > ema_long
and ema_short > ema_medium
and ema_medium > ema_long
and strategy.opentrades == 0
if long_condition
strategy.entry("Long", strategy.long)
// -------------------
// 4. Short Entries
// -------------------
// (A) Original breakout-based short logic
breakout_candle_confirmed_short = ta.barssince(breakout_down) <= 3
short_condition_breakout = breakout_candle_confirmed_short
and volume_condition
and close < prev_range_low
and close < ema_long
and ema_short < ema_medium
and ema_medium < ema_long
and ema_long_slope_down
and strategy.opentrades == 0
// (B) NEW: Narrow Consolidation Short
short_condition_consolidation = narrowConsolidation
and allBelowMedium
and strategy.opentrades == 0
// Combine them: if either short scenario is valid, go short
short_condition = (short_condition_breakout or short_condition_consolidation) and allowShort
if short_condition
// Use a different order ID if you want to distinguish them
// but "Short" is fine for a single position
strategy.entry("Short", strategy.short)
// -------------------
// 5. Exits
// -------------------
if strategy.position_size > 0 and close < ema_long
strategy.close("Long", qty_percent=100)
if strategy.position_size < 0 and close > ema_long
strategy.close("Short", qty_percent=100)
// ======================================================================
// 5. ADDITIONAL PARTIAL EXITS / STOPS
// ======================================================================
// You can add partial exits for shorts or longs similarly.
// For example:
// if strategy.position_size < 0 and close > stop_level_for_short
// strategy.close("Short", qty_percent=50)