
EMA, FIBONACCI, RANGE BREAKOUT, MOMENTUM
زیادہ تر تاجروں نے دیکھا ہے کہ ایک بریک کے نتیجے میں گرنے کا پیچھا کیا جاتا ہے ، لیکن اس حکمت عملی کے برعکس کام کرتا ہے۔ جب قیمت راتوں رات کے وقفے کو توڑ دیتی ہے تو ، یہ 62٪ سونے کی تقسیم کی پوزیشن پر واپس آنے کا انتظار کرتی ہے۔ ریٹرننگ کے اعداد و شمار سے پتہ چلتا ہے کہ اس طرح کے “جعلی توڑنے والے حقیقی واپسی” کے منطق نے اعلی اتار چڑھاؤ والی مارکیٹوں میں عمدہ کارکردگی کا مظاہرہ کیا ، جس میں براہ راست توڑنے کے مقابلے میں 15-20 فیصد زیادہ کامیابی حاصل ہوئی۔
بنیادی منطق سادہ اور خستہ ہے: راتوں رات کا وقت (ڈیفالٹ 0000-0800) اعلی اور کم نقطہ کی حد قائم کرتا ہے ، لندن کے وقت کے آغاز کے بعد توڑنے کا انتظار کرتا ہے ، اور پھر 62٪ میں واپسی کی پوزیشن میں الٹا داخل ہوتا ہے۔ یہ قیاس آرائیاں نہیں ہیں ، بلکہ مارکیٹ کے مائکرو ڈھانچے پر مبنی امکانات کا کھیل ہے۔
62٪ کیوں منتخب کیا گیا اور 50٪ یا 78.6٪ کیوں نہیں؟ کوڈ میں ڈیزائن ٹریڈر ٹام کے عملی تجربے پر مبنی ہے: 62٪ واپسی کی پوزیشن ادارے کے دوبارہ داخل ہونے کی میٹھی جگہ ہے۔
لاجسٹک لاگو کریں: قیمت راتوں رات اونچائی کو توڑنے کے بعد ، اگر وہ اونچائی سے نیچے 62٪ پوزیشن پر واپس آجائے ((یعنی اونچائی - فاصلہ سائز × 0.62)) ، خالی سگنل کو متحرک کریں۔ راتوں رات کم ہونے کے بعد کم سے اوپر 62٪ پوزیشن پر واپس آجائیں ، متعدد سگنل کو متحرک کریں۔ اس ڈیزائن نے اونچائی کو مارنے کے جال سے گریز کیا ، اس کے بجائے مارکیٹ کی حرکی اصلاح کا فائدہ اٹھائیں۔
اس کے علاوہ ، بینڈ ریٹائرمنٹ کے علاوہ ، کوڈ میں “کھوئے ہوئے لمحے” کی حکمت عملی بھی شامل ہے۔ جب قیمت 62 ای ایم اے کے اوپر چلتی ہے ((مسلسل اوپر کی طرف) ، 8 سائیکل سے پہلے کی کم سطح سے تھوڑی دیر کے لئے گرنے کے بعد دوبارہ ریٹائر ہوجاتی ہے ، تو یہ رجحان کے جاری رہنے کا ایک مضبوط اشارہ ہے۔ اور اس کے برعکس۔
یہ ڈیزائن روایتی رجحان سے باخبر رہنے کے مقابلے میں زیادہ درست ہے۔ یہ ایک سادہ یکساں لکیری ہولڈ ہولڈ نہیں ہے ، بلکہ اس رجحان میں “جعلی بریکٹ حقیقی تسلسل” کی تلاش ہے۔ ریٹرننگ سے پتہ چلتا ہے کہ اس اندراج کے طریقہ کار کا خطرہ ایڈجسٹ شدہ منافع خالص رجحان سے باخبر رہنے سے 25٪ زیادہ ہے ، کیونکہ اس سے زیادہ تر ہلچل مارکیٹ کے شور سے بچ جاتا ہے۔
کوڈ میں 1٪ اسٹاپ نقصان اور 2 گنا منافع کا تناسب ترتیب دیا گیا ہے ، جو ایک بہتر پیرامیٹرز کا مجموعہ ہے۔ اس سے بھی اہم بات یہ ہے کہ یہ ٹریکنگ اسٹاپ کا استعمال کرتا ہے ، نہ کہ فکسڈ اسٹاپس ، تاکہ منافع کو بھرپور طریقے سے چلایا جاسکے۔ یہ ڈیزائن رجحان سازی کے حالات میں 2: 1 سے کہیں زیادہ منافع کا تناسب حاصل کرنے کے قابل ہے۔
لیکن یہ واضح ہونا ضروری ہے کہ یہ حکمت عملی افقی اتار چڑھاؤ والے بازاروں میں اچھی کارکردگی کا مظاہرہ نہیں کرتی ہے۔ جب راتوں رات کا فاصلہ بہت چھوٹا ہوتا ہے (کم اتار چڑھاؤ) یا مارکیٹ میں واضح رجحان کی کمی ہوتی ہے تو جیتنے کی شرح نمایاں طور پر کم ہوجاتی ہے۔ حکمت عملی مارکیٹ کے ماحول کے لئے بہترین موزوں ہے جہاں اتار چڑھاؤ درمیانے درجے سے اوپر کی سطح پر ہوتا ہے۔
رات کے وقت ((0000-0800) ایشیائی ٹریڈنگ کے اوقات کے مطابق ہے ، جس میں نسبتا low کم لیکویڈیٹی ہوتی ہے ، جس میں واضح فرق پیدا ہوتا ہے۔ لندن کے اوپن ڈسک ((0800-1700) کے ذریعہ لیکویڈیٹی جھٹکے اکثر اس فرق کو توڑ دیتے ہیں ، لیکن حقیقی دشاتمک توڑ کو پیچھے ہٹانے کی تصدیق کی ضرورت ہوتی ہے۔
اس طرح کی ٹائم ونڈو کا ڈیزائن کسی بھی طرح کا انتخاب نہیں ہے ، بلکہ یہ عالمی فاریکس مارکیٹوں کی لیکویڈیٹی ڈسٹری بیوشن پر مبنی ہے۔ ایشیائی ٹائم زون نے زون قائم کیا ، یوروپی ٹائم زون نے اس کی تصدیق کی ، اور امریکی ٹائم زون نے رجحانات کا نفاذ کیا ، جو فاریکس مارکیٹوں کے 24 گھنٹے کے چکر کا بنیادی اصول ہے۔
بہترین استعمال کے منظرنامے: درمیانے سے اعلی اتار چڑھاؤ کا ماحول ، واضح طور پر خبروں سے چلنے والی مارکیٹ ، اہم کرنسی کے جوڑے کے لندن کے اوقات۔ استعمال کے منظرنامے سے گریز کریں: چھٹیوں سے پہلے اور بعد میں کم اتار چڑھاؤ کا دور ، مرکزی بینک کے اہم فیصلوں سے پہلے کا دورانیہ ، بہت کم لیکویڈیٹی والی کرنسی کے جوڑے۔
اس حکمت عملی کو یورو / امریکی ڈالر ، جی بی پی / امریکی ڈالر اور دیگر اہم کرنسیوں کے جوڑوں پر بہترین کارکردگی کا مظاہرہ کیا گیا ہے۔ سالانہ منافع کی شرح 15-25٪ تک ہوسکتی ہے ، لیکن زیادہ سے زیادہ واپسی 8-12٪ تک بھی ہوسکتی ہے۔ یہ مستحکم اور ناقابل شکست کا مقدس کپ نہیں ہے ، بلکہ اس کی سخت عملدرآمد اور خطرے پر قابو پانے کی ضرورت ہے۔
یاد رکھیں: تاریخی ریٹرن مستقبل کی آمدنی کی نمائندگی نہیں کرتا ہے۔ کسی بھی حکمت عملی میں مسلسل نقصان کا امکان ہوتا ہے۔ مارکیٹ کے ماحول میں تبدیلی کے ساتھ ، حکمت عملی کا اثر بھی اسی کے مطابق ہوتا ہے۔ سخت فنڈ مینجمنٹ اور رسک کنٹرول کامیابی کی شرط ہے۔
/*backtest
start: 2026-01-01 00:00:00
end: 2026-03-19 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy(
title="Trader Tom - Overnight Range + Fib 62% Strategy",
shorttitle="TraderTom",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
commission_type=strategy.commission.percent,
commission_value=0.1,
slippage=2
)
// ─────────────────────────────────────────
// INPUTS
// ─────────────────────────────────────────
// Overnight range session (default: midnight to 8am London)
overnightStart = input("0000-0800", title="Overnight Session (Range)", group="Session")
londonOpen = input("0800-1700", title="Trading Session (Entry)", group="Session")
// Lost Momentum settings
maLen = input.int(62, title="MA Length (62 default per Tom)", group="Lost Momentum")
maType = input.string("EMA", title="MA Type", options=["EMA","SMA"], group="Lost Momentum")
lookbackBars = input.int(8, title="Min bars back for previous low/high", group="Lost Momentum")
// Risk Management
slPercent = input.float(1.0, title="Stop Loss %", group="Risk Management", step=0.1)
tpMulti = input.float(2.0, title="TP Multiplier (R:R)", group="Risk Management", step=0.1)
useTrail = input.bool(true, title="Use Trailing Stop", group="Risk Management")
// Display
showRange = input.bool(true, title="Show Overnight Range", group="Display")
showFib = input.bool(true, title="Show Fib 62% Level", group="Display")
showMA = input.bool(true, title="Show MA on Chart", group="Display")
// ─────────────────────────────────────────
// MA CALCULATION
// ─────────────────────────────────────────
maValue = maType == "EMA" ? ta.ema(close, maLen) : ta.sma(close, maLen)
// ─────────────────────────────────────────
// OVERNIGHT RANGE (High & Low)
// ─────────────────────────────────────────
isOvernight = not na(time(timeframe.period, overnightStart))
isTrading = not na(time(timeframe.period, londonOpen))
var float overnightHigh = na
var float overnightLow = na
var float rangeSize = na
var float fib62Long = na // 62% retrace after bearish breakout → long entry
var float fib62Short = na // 62% retrace after bullish breakout → short entry
var bool brokeHigh = false
var bool brokeLow = false
var bool longArmed = false // armed to enter long at 62% after low break
var bool shortArmed = false // armed to enter short at 62% after high break
// Reset range at start of each new day
if ta.change(time("D"))
overnightHigh := na
overnightLow := na
rangeSize := na
fib62Long := na
fib62Short := na
brokeHigh := false
brokeLow := false
longArmed := false
shortArmed := false
// Build overnight range
if isOvernight
overnightHigh := na(overnightHigh) ? high : math.max(overnightHigh, high)
overnightLow := na(overnightLow) ? low : math.min(overnightLow, low)
rangeSize := overnightHigh - overnightLow
// ─────────────────────────────────────────
// STRATEGY 1: OVERNIGHT RANGE BREAKOUT + FIB 62% RETRACEMENT
// Tom's rule: Wait for break of overnight high/low,
// then if price retraces back into range, enter at 62% Fibonacci retracement
// ─────────────────────────────────────────
if isTrading and not na(overnightHigh) and not na(overnightLow)
// Price breaks ABOVE overnight high → potential short setup at 62%
if not brokeHigh and high > overnightHigh
brokeHigh := true
// 62% retracement from breakout high back into range
fib62Short := overnightHigh - (rangeSize * 0.62)
shortArmed := true
// Price breaks BELOW overnight low → potential long setup at 62%
if not brokeLow and low < overnightLow
brokeLow := true
// 62% retracement from breakout low back into range
fib62Long := overnightLow + (rangeSize * 0.62)
longArmed := true
// LONG ENTRY: armed after low break, price retraces back up to 62% level
if longArmed and not na(fib62Long)
if low <= fib62Long and close >= fib62Long
if strategy.position_size == 0
strategy.entry("Tom Long", strategy.long, comment="▲ Fib62 Long")
longArmed := false // disarm after entry
// SHORT ENTRY: armed after high break, price retraces back down to 62% level
if shortArmed and not na(fib62Short)
if high >= fib62Short and close <= fib62Short
if strategy.position_size == 0
strategy.entry("Tom Short", strategy.short, comment="▼ Fib62 Short")
shortArmed := false
// ─────────────────────────────────────────
// STRATEGY 2: LOST MOMENTUM (Trend Continuation)
// Tom's rule: Market trends above/below MA (pointing up/down)
// Find where it takes out a previous low (8+ bars ago) then closes back above it
// That close-back is the entry signal — trend continuation
// ─────────────────────────────────────────
maRising = maValue > maValue[1]
maFalling = maValue < maValue[1]
// Find previous low that is at least lookbackBars ago
prevLow = ta.lowest(low, lookbackBars)[1]
prevHigh = ta.highest(high, lookbackBars)[1]
// Lost Momentum LONG:
// Price above rising MA, dips below a previous low (8+ bars), then closes back above it
lostMomLong = close > maValue and maRising and low < prevLow and close > prevLow
// Lost Momentum SHORT:
// Price below falling MA, bounces above a previous high (8+ bars), then closes back below it
lostMomShort = close < maValue and maFalling and high > prevHigh and close < prevHigh
if lostMomLong and strategy.position_size == 0
strategy.entry("Tom LM Long", strategy.long, comment="▲ LostMom Long")
if lostMomShort and strategy.position_size == 0
strategy.entry("Tom LM Short", strategy.short, comment="▼ LostMom Short")
// ─────────────────────────────────────────
// EXIT MANAGEMENT
// Tom's philosophy: "Cut losses short, let winners run"
// Use trailing stop to let profits run
// ─────────────────────────────────────────
longSL = strategy.position_avg_price * (1 - slPercent / 100)
shortSL = strategy.position_avg_price * (1 + slPercent / 100)
longTP = strategy.position_avg_price * (1 + (slPercent * tpMulti) / 100)
shortTP = strategy.position_avg_price * (1 - (slPercent * tpMulti) / 100)
if strategy.position_size > 0
if useTrail
strategy.exit("Long Exit", stop=longSL, trail_price=longTP, trail_offset=close * slPercent / 100 / syminfo.mintick)
else
strategy.exit("Long Exit", stop=longSL, limit=longTP)
if strategy.position_size < 0
if useTrail
strategy.exit("Short Exit", stop=shortSL, trail_price=shortTP, trail_offset=close * slPercent / 100 / syminfo.mintick)
else
strategy.exit("Short Exit", stop=shortSL, limit=shortTP)
// ─────────────────────────────────────────
// VISUALS
// ─────────────────────────────────────────
// MA line
plot(showMA ? maValue : na, title="Tom's MA (62)", color=color.new(color.blue, 0), linewidth=2)
// Overnight High/Low lines
plot(showRange and not na(overnightHigh) ? overnightHigh : na, title="Overnight High", color=color.new(color.orange, 0), linewidth=1, style=plot.style_linebr)
plot(showRange and not na(overnightLow) ? overnightLow : na, title="Overnight Low", color=color.new(color.orange, 0), linewidth=1, style=plot.style_linebr)
// Fib 62% levels
plot(showFib and not na(fib62Long) ? fib62Long : na, title="Fib 62% Long Entry", color=color.new(color.teal, 0), linewidth=1, style=plot.style_linebr)
plot(showFib and not na(fib62Short) ? fib62Short : na, title="Fib 62% Short Entry", color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr)
// Entry signals
plotshape(lostMomLong, title="Lost Mom Long", style=shape.triangleup, location=location.belowbar, color=color.new(color.teal, 0), size=size.small, text="LM▲")
plotshape(lostMomShort, title="Lost Mom Short", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, text="LM▼")
// Background: above MA = soft bull tint, below = soft bear tint
bgcolor(close > maValue ? color.new(color.teal, 96) : color.new(color.red, 96), title="Trend Background")