
رجحان کی واپسی کے لئے ایڈجسٹ کرنے کے لئے خطرہ متحرک داخلے کی حکمت عملی ایک کثیر جہتی پوزیشن قائم کرنے کے لئے ڈیزائن کیا گیا ہے جس کی امید ہے کہ مختصر مدت کے رجحان کی تبدیلی کے بعد واپسی میں ، اور اس کے ساتھ ساتھ ایک ہلچل والا تاجر جو فوری طور پر نیچے کی طرف جانے کے لئے مارکیٹ کے حالات کے موافق ہونے پر اوپر کی طرف جاتا ہے۔ یہ حکمت عملی ایس ایم اے کراس کی تصدیق کے رجحان ، مقررہ فیصد واپسی کے نقطہ نظر ، اور ایڈجسٹ خطرے کے انتظام کے پیرامیٹرز کو یکجا کرتی ہے ، جس سے بہترین تجارتی عملدرآمد حاصل ہوتا ہے۔
اس حکمت عملی کا بنیادی حصہ یہ ہے کہ رجحان کی سمت کی تصدیق کے لئے 10 اور 25 ادوار کی سادہ حرکت پذیر اوسط (ایس ایم اے) کی کراسنگ کا استعمال کیا جائے ، اور 150 ادوار کے اشاریہ کی حرکت پذیر اوسط (ای ایم اے) کے ساتھ مل کر ، خالی تجارت کے لئے اضافی فلٹرنگ کی شرط کے طور پر۔ کثیر تجارت ایس ایم اے کراسنگ کے بعد فوری طور پر داخل نہیں ہوتی ہے ، بلکہ قیمت کے ایک مخصوص فیصد میں واپسی کے بعد داخل ہونے کا انتظار کرتی ہے ، جس سے داخلے کی قیمت کو بہتر بنایا جاتا ہے ، جس سے خطرے کی واپسی کی شرح میں اضافہ ہوتا ہے۔
اس حکمت عملی کے کام کرنے کے اصول کو کئی اہم حصوں میں تقسیم کیا جا سکتا ہے:
رجحانات کی تصدیق کا طریقہ کار:
ملٹی ہیڈ ریکل آؤٹ میکانزم:
خالی سر داخلے کے قواعد:
خطرے کے انتظام اور انخلا کی حکمت عملی:
حکمت عملی کا استعمال کرتے ہوئے پائیدار متغیرات کو ٹریک کرنے کے لئے واپسی کے سگنل کو یقینی بنانے کے لئے صحیح وقت پر داخلہ. جب کوئی پوزیشن نہیں ہے تو ، نظام اگلے تجارتی سگنل کی تیاری کے لئے تمام علامتوں اور سطحوں کو دوبارہ ترتیب دے گا۔
کوڈ کا گہرائی سے تجزیہ کرنے کے بعد ، اس حکمت عملی میں درج ذیل نمایاں فوائد ہیں:
زیادہ سے زیادہ داخلے کا وقت:
مکمل خطرے کا انتظام:
رجحانات کی صف بندی:
بصری آراء:
انتہائی موافقت پذیر:
اس حکمت عملی کے بہت سے فوائد کے باوجود ، مندرجہ ذیل خطرات سے آگاہ رہنا چاہئے:
تیزی سے مارکیٹ کے خطرات:
مارکیٹ میں ہلچل:
فکسڈ پوائنٹ رسک مینجمنٹ کی حدود:
تکنیکی اشارے پر زیادہ انحصار:
پیرامیٹر کی اصلاح کے خطرات:
کوڈ تجزیہ کی بنیاد پر ، اس حکمت عملی کو بہتر بنانے کے لئے کچھ اہم نکات یہ ہیں:
متحرک خطرے کے انتظام:
stopDistance = input.float(2.0) * ta.atr(14)کے حساب سےرجحان کی طاقت فلٹرنگ:
ملٹی ٹائم فریم تجزیہ:
اسمارٹ ریپیڈ شناخت:
ٹرانزیکشن کی تصدیق:
موافقت کے پیرامیٹرز:
رجحان کی واپسی کو خطرہ کے متحرک داخلے کی حکمت عملی کے ساتھ ایڈجسٹ کیا جاسکتا ہے۔ یہ ایک اچھی طرح سے ڈیزائن کیا گیا تجارتی نظام ہے جو رجحان کی شناخت ، داخلہ کو بہتر بنانے اور خطرے کے مکمل انتظام کو جوڑتا ہے۔ قیمت کی واپسی کا انتظار کرکے اور پھر داخل ہونے کے بعد ، حکمت عملی کو سادہ SMA کراس نظام کے مقابلے میں بہتر داخلے کی قیمت اور رسک ریٹرن ملتا ہے۔
اس حکمت عملی کا بنیادی فائدہ اس کی لچک اور ایڈجسٹمنٹ ہے ، جس سے تاجروں کو انفرادی خطرے کی ترجیحات اور مارکیٹ کے حالات کے مطابق پیرامیٹرز کو ایڈجسٹ کرنے کی اجازت ملتی ہے۔ اس کے علاوہ ، مربوط رسک مینجمنٹ فنکشن (بشمول اسٹاپ ، اسٹاپ اور سیکیورٹی پوائنٹس) فنڈز کو مکمل تحفظ فراہم کرتا ہے۔
تاہم ، اس حکمت عملی میں کچھ حدود بھی ہیں ، بشمول اتار چڑھاؤ والی منڈیوں میں کارکردگی اور فکسڈ پوائنٹ رسک مینجمنٹ کی حدود۔ متحرک رسک مینجمنٹ ، رجحان کی طاقت کے فلٹرنگ اور تجارت کی مقدار کی تصدیق جیسے سفارشات پر عمل درآمد کے ذریعہ حکمت عملی کی استحکام اور مجموعی کارکردگی کو نمایاں طور پر بہتر بنایا جاسکتا ہے۔
یہ ایک مثالی بنیادی حکمت عملی ہے جو شوب ٹریڈر کے لئے ہے اور اسے انفرادی تجارتی طرز اور اہداف کے مطابق مزید تخصیص کیا جاسکتا ہے۔ معقول پیرامیٹرز کی ترتیب اور مسلسل نگرانی کے ساتھ ، اس حکمت عملی میں مارکیٹ کے مختلف ماحول میں مستحکم تجارتی نتائج فراہم کرنے کی صلاحیت ہے۔
/*backtest
start: 2024-08-01 00:00:00
end: 2025-03-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("BTCUSD with adjustable sl,tp",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
calc_on_every_tick=true)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────
longSignalStyle = input.string("Label Up", title="Long Signal Style", options=["Label Up", "Arrow Up", "Cross"])
shortSignalStyle = input.string("Label Down", title="Short Signal Style", options=["Label Down", "Arrow Down", "Cross"])
// Adjustable exit parameters (in points)
tpDistance = input.int(1000, "Take Profit Distance (points)", minval=1)
slDistance = input.int(250, "Stop Loss Distance (points)", minval=1)
beTrigger = input.int(500, "Break-Even Trigger Distance (points)", minval=1)
// Adjustable retracement percentage for long pullback entry (e.g. 0.01 = 1%)
retracementPct = input.float(0.01, "Retracement Percentage (e.g. 0.01 for 1%)", step=0.001)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ INDICATORS: SMA & EMA
// ─────────────────────────────────────────────────────────────────────────────
sma10 = ta.sma(close, 10)
sma25 = ta.sma(close, 25)
ema150 = ta.ema(close, 150)
plot(sma10, color=color.blue, title="SMA 10")
plot(sma25, color=color.red, title="SMA 25")
plot(ema150, color=color.orange, title="EMA 150")
// ─────────────────────────────────────────────────────────────────────────────
// ▌ ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────
longCondition = ta.crossover(sma10, sma25)
shortCondition = ta.crossunder(sma10, sma25)
shortValid = close < ema150 // Only take shorts if price is below EMA150
// Plot immediate entry signals (for visual reference)
plotshape(longCondition and (strategy.position_size == 0), title="Long Signal",
style=(longSignalStyle == "Label Up" ? shape.labelup : (longSignalStyle == "Arrow Up" ? shape.triangleup : shape.cross)),
location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition and shortValid and (strategy.position_size == 0), title="Short Signal",
style=(shortSignalStyle == "Label Down" ? shape.labeldown : (shortSignalStyle == "Arrow Down" ? shape.triangledown : shape.cross)),
location=location.abovebar, color=color.red, text="Short", size=size.small)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ LONG PULLBACK ENTRY USING FIXED PERCENTAGE RETRACEMENT
// ─────────────────────────────────────────────────────────────────────────────
// We use persistent variables to track the pullback signal.
var bool longSignalActive = false
var float pullHigh = na // highest high since long signal activation
var float retraceLevel = na // level = pullHigh * (1 - retracementPct)
// Only consider new entries when no position is open.
if strategy.position_size == 0
// When a long crossover occurs, activate the signal and initialize pullHigh.
if longCondition
longSignalActive := true
pullHigh := high
// If signal active, update pullHigh and compute retracement level.
if longSignalActive
pullHigh := math.max(pullHigh, high)
retraceLevel := pullHigh * (1 - retracementPct)
// When price bounces upward and crosses above the retracement level, enter long
if ta.crossover(close, retraceLevel)
strategy.entry("Long", strategy.long)
longSignalActive := false
// Short entries: enter immediately if conditions are met
if shortCondition and shortValid
strategy.entry("Short", strategy.short)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ EXIT CONDITIONS WITH ADJUSTABLE TP, SL & BE
// ─────────────────────────────────────────────────────────────────────────────
var bool beLong = false
var bool beShort = false
// LONG EXIT LOGIC
if strategy.position_size > 0 and strategy.position_avg_price > 0
longEntry = strategy.position_avg_price
// Additional exit: if SMA(10) crosses below SMA(25) while price < EMA150, exit long
if ta.crossunder(sma10, sma25) and close < ema150
label.new(bar_index, low, "SMA Exit", style=label.style_label_down, color=color.red, textcolor=color.white)
strategy.close("Long", comment="SMA Cross Exit")
// Break-even trigger if price moves in favor by beTrigger points
if close >= longEntry + beTrigger
beLong := true
effectiveLongStop = beLong ? longEntry : (longEntry - slDistance)
if close <= effectiveLongStop
label.new(bar_index, low, (beLong ? "BE Hit" : "SL Hit"), style=label.style_label_down, color=color.red, textcolor=color.white)
strategy.close("Long", comment=(beLong ? "BE Hit" : "SL Hit"))
if close >= longEntry + tpDistance
label.new(bar_index, high, "TP Hit", style=label.style_label_up, color=color.green, textcolor=color.white)
strategy.close("Long", comment="TP Hit")
// SHORT EXIT LOGIC
if strategy.position_size < 0 and strategy.position_avg_price > 0
shortEntry = strategy.position_avg_price
// Basic stop logic
if close >= shortEntry + slDistance
label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))
// Take profit logic
if close <= shortEntry - tpDistance
label.new(bar_index, low, "TP Hit", style=label.style_label_down, color=color.green, textcolor=color.white)
strategy.close("Short", comment="TP Hit")
// Break-even trigger
if close <= shortEntry - beTrigger
beShort := true
effectiveShortStop = beShort ? shortEntry : (shortEntry + slDistance)
if close >= effectiveShortStop
label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))
// Reset BE flags when no position is open
if strategy.position_size == 0
beLong := false
beShort := false
// Reset the pullback signal
if not longSignalActive
pullHigh := na
retraceLevel := na