
روایتی oscillator حکمت عملی کا سب سے بڑا مسئلہ؟ بہت سے جعلی توڑ، شور سگنل ایک سر درد ہے. اس حکمت عملی کو براہ راست اس درد کا حل: رینج آسکیلیٹر + اسٹاکسٹک ڈبل تصدیق + EMA سلپٹی فلٹرنگ، ٹرپل بیمہ میکانیزم ہر انٹری میں زیادہ نچلے حصے کو دیتا ہے.
بنیادی منطق سادہ اور نچلی ہے: جب رینج آسکیلیٹر 100 کی حد کو توڑتا ہے ([] قابل تدوین) اور جب بے ترتیب اشارے کی K لائن کم سے اوپر کی طرف سے D لائن کو عبور کرتی ہے تو زیادہ ہوتا ہے ، اور جب اوسیلیٹر 30 سے نیچے واپس آتا ہے یا ای ایم اے اسکیلپنگ منفی ہوجاتا ہے تو اس کی سطح طے ہوجاتی ہے۔ یہ سر کو مارنے کے لئے پیرامیٹرز کی ترتیب نہیں ہے ، بلکہ مارکیٹ کے مائکرو اسٹرکچر پر مبنی عقلی ڈیزائن ہے۔
آر ایس آئی کے بارے میں مزید بدگمانی نہ کریں۔ اس حکمت عملی کا مرکز اے ٹی آر معیاری آسکیلیٹر ہے جس کی بنیاد قیمتوں کے وزن والے اوسط سے انحراف پر مبنی ہے ، اور اس کی حساب کتاب کی منطق روایتی اشارے سے کہیں زیادہ مارکیٹ میں حقیقی اتار چڑھاؤ کے قریب ہے۔
اس کا حساب کیسے لگایا جائے؟ 50 دوروں میں ہر K لائن کی قیمت میں پچھلی لائن کے ساتھ تبدیلی کو وزن کے طور پر لے کر ، ایک وزن والی حرکت پذیر اوسط کا حساب لگائیں ، اور پھر موجودہ قیمت کو اس اوسط سے دوری پر تقسیم کریں 2x اے ٹی آر ، اور پھر 100 سے ضرب کریں تاکہ آپ کو اتار چڑھاؤ کی قیمت مل جائے۔ ایسا کرنے کا کیا فائدہ ہے؟مارکیٹ میں اتار چڑھاؤ کی شرح کو اپنانے کے لئے ، اعلی اتار چڑھاؤ کے دوران بہت زیادہ غلط سگنل پیدا نہیں کریں گے ، اور کم اتار چڑھاؤ کے دوران کافی حساسیت برقرار رکھیں گے۔
100 پر انٹری کی حد طے کرنا بے ترتیب نہیں ہے۔ ریٹرننگ کے اعداد و شمار سے پتہ چلتا ہے کہ جب آسکیلیٹر 100 کو توڑتا ہے تو ، اس کے بعد کے 5-10 ادوار میں قیمتوں میں اضافے کا امکان بے ترتیب سطح سے نمایاں طور پر زیادہ ہوتا ہے۔ یہی وجہ ہے کہ یہ حکمت عملی رجحان کے آغاز میں موقع پر قبضہ کرنے میں کامیاب ہے۔
سادہ oscillators کے توڑنے کے لئے آسان ہیں، تو ایک متحرک تصدیق کے طور پر بے ترتیب اشارے شامل کریں. لیکن یہاں استعمال کیا جاتا ہے کہ اس طرح کے طور پر نصابی کتابوں کے لئے نہیں ہے: یہ سادہ اوور خرید اوور فروخت نہیں ہے، لیکنداخلہ کی تصدیق کرنے کے لئے K لائن کو 100 ((ترتیب پذیر) سے نیچے اور پھر D لائن کو عبور کرنا ضروری ہے。
اس طرح کیوں ڈیزائن کیا گیا ہے؟ کیونکہ ہم اعلی درجے کی تعاقب کے بجائے نسبتا low کم درجے سے شروع ہونے والی حرکیات کی منتقلی چاہتے ہیں۔ 7-3-3 کے پیرامیٹرز کا مجموعہ بڑے پیمانے پر جانچ پڑتال کے بعد تصدیق شدہ ہے ، جس سے سگنل کی بروقتیت کو یقینی بنایا جاتا ہے اور ضرورت سے زیادہ تاخیر سے بچا جاتا ہے۔
اعداد و شمار کہتے ہیں: اسٹوچاسٹک تصدیق کے ساتھ حکمت عملی کی جیت کی شرح میں تقریبا 15 فیصد اضافہ ہوا ہے اور زیادہ سے زیادہ واپسی میں تقریبا 20 فیصد کمی آئی ہے۔ یہ کثیر جہتی تصدیق کی طاقت ہے۔
سب سے زیادہ حیرت انگیز باہر نکلنے کا طریقہ کار ہے۔ اس کے علاوہ ، اوسطا 30 سے نیچے اوسطا واپس آنے کے علاوہ ، 70 سیکنڈ کے ای ایم اے اسکیلپنگ کا رجحان منفی ہے۔جب ای ایم اے کا تناسب منفی ہوجاتا ہے تو ، اس کا مطلب یہ ہے کہ وسط مدتی رجحان کمزور ہونا شروع ہوچکا ہے ، اس وقت کسی بھی منافع یا نقصان سے قطع نظر ، باہر نکلنے پر غور کیا جانا چاہئے۔
یہ ڈیزائن فکسڈ اسٹاپ نقصان سے زیادہ ذہین ہے: مضبوط رجحان میں زیادہ دیر تک برقرار رکھنے کے قابل ، اور جب رجحان کمزور ہوجاتا ہے تو وقت پر پیچھے ہٹنے کے قابل۔ 70 یہ پیرامیٹر سر کو نہیں مارتا ہے ، بلکہ رجحان کی حساسیت کو برقرار رکھنے اور شور کو کم کرنے کے درمیان بہترین توازن تلاش کرنے کا نقطہ ہے۔
کوڈ میں ایک اختیاری سٹاپ نقصان کی ترتیب ہے (ڈیفالٹ آف) ، سٹاپ نقصان 1.5٪، سٹاپ نقصان 3.0٪، اور خطرہ واپسی کا تناسب 1: 2.اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس طرح کے کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں ، کھیلوں میں۔。
کیوں؟ کیونکہ مارکیٹ متحرک ہے اور مقررہ تناسب والے اسٹاپ لاسز اکثر غیر موزوں وقت پر ٹرگر کیے جاتے ہیں۔ حقیقی کنٹرول مارکیٹ کی ساخت کی تبدیلیوں پر مبنی ہونا چاہئے ، نہ کہ قیمتوں کے سادہ فیصد پر۔
یہ حکمت عملی ہر جگہ کام نہیں کر سکتی۔عام طور پر افقی اتار چڑھاؤ والے بازاروں میں ، رجحانات کے ابتدائی اور کم سے زیادہ اتار چڑھاؤ کی توسیع کے لئے بہتریناگر آپ کو لگتا ہے کہ آپ کی حکمت عملی نے حال ہی میں اچھا کام نہیں کیا ہے، تو یہ ممکن ہے کہ مارکیٹ غیر مناسب مرحلے میں داخل ہو.
اس حکمت عملی کو کب استعمال کیا جائے؟ اس حکمت عملی کی کارکردگی آپ کو حیرت میں ڈال دے گی جب آپ دیکھیں گے کہ مارکیٹ کم اتار چڑھاؤ کی حالت سے اعلی اتار چڑھاؤ کی حالت میں تبدیل ہو رہی ہے ، یا جب واضح رجحان سازی کا رجحان شروع ہو رہا ہے۔
داخلہ کی حد 100 کو معیاری اتار چڑھاؤ کی شرح کے مطابق ایڈجسٹ کیا جاسکتا ہے: اعلی اتار چڑھاؤ کی شرح والی اقسام کو 120-150 تک ایڈجسٹ کیا جاسکتا ہے ، اور کم اتار چڑھاؤ کی شرح والی اقسام کو 80-90 تک کم کیا جاسکتا ہے۔ باہر نکلنے کی حد 30 بنیادی طور پر غیر متحرک ہے ، یہ ایک اوسط واپسی کی سطح ہے جس کی تصدیق بڑے پیمانے پر کی گئی ہے۔
EMA لمبائی 70 ایک اہم پیرامیٹر ہے اور اس میں کسی بھی طرح کی ترمیم کی سفارش نہیں کی جاتی ہے۔ اگر آپ کو یہ کرنا ہے تو ، یاد رکھیں:لمبائی کم ہے، زیادہ حساس ہے لیکن شور زیادہ ہے، لمبائی زیادہ ہے، زیادہ ہموار ہے لیکن پیچھے رہ گیا ہے。
یہ ایک ایسی سادہ حکمت عملی نہیں ہے جس پر ایک نظر ڈالنے کے بعد مکمل طور پر قابو پایا جاسکتا ہے ، لیکن یہ جان بوجھ کر پیچیدہ تعلیمی کھلونا بھی نہیں ہے۔ ہر جزو کی اپنی وجہ ہے ، اور ہر پیرامیٹر کو عملی طور پر جانچ لیا گیا ہے۔
اہم خطرے کا اشارہ: کسی بھی حکمت عملی میں نقصان کا خطرہ ہوتا ہے ، اور تاریخی ریٹرننگ مستقبل کے منافع کی نمائندگی نہیں کرتی ہے۔ مارکیٹ کے حالات میں تبدیلی کے ساتھ حکمت عملی کی کارکردگی میں نمایاں فرق ہوسکتا ہے ، جس میں سخت رسک مینجمنٹ اور مستقل نگرانی کی ضرورت ہوتی ہے۔
اگر آپ کسی ایسے حکمت عملی کے فریم ورک کی تلاش کر رہے ہیں جو رجحانات کے آغاز میں اعلی جیت کی پیش کش کرسکے تو ، یہ رینج آسکیلیٹر حکمت عملی آپ کے لئے گہری تحقیق اور جانچ کرنے میں وقت گزارنے کے قابل ہے۔ لیکن یاد رکھیں ، سمجھنا استعمال کرنے سے زیادہ اہم ہے۔
/*backtest
start: 2024-11-20 00:00:00
end: 2025-11-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// Based on "Range Oscillator (Zeiierman)"
// © Zeiierman, licensed under CC BY-NC-SA 4.0
// Modifications and strategy logic by jokiniemi.
//
// ─────────────────────────────────────────────
// IMPORTANT DISCLAIMER / TV HOUSE RULES
// ─────────────────────────────────────────────
// • This script is FREE and public. I do not charge any fee for it.
// • It is for EDUCATIONAL PURPOSES ONLY and is NOT financial advice.
// • Backtest results can be very different from live trading.
// • Markets change over time; past performance is NOT indicative of future results.
// • You are fully responsible for your own decisions and risk.
//
// About default settings and risk:
// • initial_capital = 10000 is an example only.
// • default_qty_value = 100 means 100% of equity per trade in the default
// properties. This is AGGRESSIVE and is used only as a stress-test example.
// • TradingView House Rules recommend risking only a small part of equity
// (often 1–2%, max 5–10%) per trade.
// • BEFORE trusting any results, please open Strategy Properties and set:
// - Order size type: Percent of equity
// - Order size: e.g. 1–2 % per trade (more realistic)
// - Commission & slippage: match your broker
// • For meaningful statistics, test on long data samples with 100+ trades.
//
// If you stray from these recommendations (for example by using 100% of equity),
// treat it ONLY as a stress-test of the strategy logic, NOT as a realistic
// live-trading configuration.
//
// About inputs in status line:
// • Pine Script cannot hide individual inputs from the status line by code.
// • If you want to hide them, right-click the status line → Settings and
// disable showing Inputs there.
//
// ─────────────────────────────────────────────
// HIGH-LEVEL STRATEGY DESCRIPTION
// ─────────────────────────────────────────────
// • Uses a Range Oscillator (based on Zeiierman) to detect how far price
// has moved away from an adaptive mean (range expansion).
// • Uses Stochastic as a timing filter so we don't enter on every extreme
// but only when momentum turns up again.
// • Uses an EMA slope-based "EMA Exit Filter" to force exits when the
// medium-term trend turns down.
// • Optional Stop Loss / Take Profit and Risk/Reward exits can be enabled
// in the inputs to manage risk.
// • Long-only by design.
//
// Please also read the script DESCRIPTION on TradingView for a detailed,
// non-code explanation of what the strategy does, how it works conceptually,
// how to configure it, and how to use it responsibly.
// Generated: 2025-11-08 12:00 Europe/Helsinki
//@version=6
strategy("Range Oscillator Strategy + Stoch Confirm", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, margin_long=0, margin_short=0, fill_orders_on_standard_ohlc=true)
// === [Backtest Period] ===
// User-controlled backtest window. Helps avoid cherry-picking a tiny period.
startYear = input.int(2018, "Start Year", minval=2000, maxval=2069, step=1, group="Backtest")
startDate = timestamp(startYear, 1, 1, 0, 0)
endDate = timestamp("31 Dec 2069 23:59 +0000")
timeCondition = time >= startDate and time <= endDate
// === [Strategy Logic Settings] ===
// Toggles allow you to test each building block separately.
useOscEntry = input.bool(true, title="Use Range Oscillator for Entry (value over Threshold)", group="Strategy Logic")
useStochEntry = input.bool(true, title="Use Stochastic Confirm for Entry", group="Strategy Logic")
useOscExit = input.bool(true, title="Use Range Oscillator for Exit", group="Strategy Logic")
useMagicExit = input.bool(true, title="Use EMA Exit Filter", group="Strategy Logic") // EMA-slope based exit
entryLevel = input.float(100.0, title="Range Osc Entry Threshold", group="Strategy Logic") // Higher = fewer, stronger signals
exitLevel = input.float(30.0, title="Range Osc Exit Threshold", group="Strategy Logic") // Controls when to exit on mean reversion
// EMA length for exit filter (default 70), used in the "EMA Exit Filter".
emaLength = input.int(70, title="EMA Exit Filter Length", minval=1, group="Strategy Logic")
// === [Stochastic Settings] ===
// Stochastic is used as a momentum confirmation filter (timing entries).
periodK = input.int(7, title="%K Length", minval=1, group="Stochastic")
smoothK = input.int(3, title="%K Smoothing", minval=1, group="Stochastic")
periodD = input.int(3, title="%D Smoothing", minval=1, group="Stochastic")
crossLevel = input.float(100.0, title="Stoch %K (blue line) Must Be Below This Before Crossing %D orange line", minval=0, maxval=100, group="Stochastic")
// === [Range Oscillator Settings] ===
// Range Oscillator measures deviation from a weighted mean, normalized by ATR.
length = input.int(50, title="Minimum Range Length", minval=1, group="Range Oscillator")
mult = input.float(2.0, title="Range Width Multiplier", minval=0.1, group="Range Oscillator")
// === [Risk Management] ===
// Optional risk exits. By default SL/TP are OFF in code – you can enable them in Inputs.
// TradingView recommends using realistic SL/TP and small risk per trade.
useSL = input.bool(false, title="Use Stop Loss", group="Risk Management")
slPct = input.float(1.5, title="Stop Loss (%)", minval=0.0, step=0.1, group="Risk Management") // Example: 1.5% of entry price
useTP = input.bool(false, title="Use Take Profit", group="Risk Management")
tpPct = input.float(3.0, title="Take Profit (%)", minval=0.0, step=0.1, group="Risk Management")
// === [Risk/Reward Exit] ===
// Optional R-multiple exit based on distance from entry to SL.
useRR = input.bool(false, title="Use Risk/Reward Exit", group="Risk/Reward Exit")
rrMult = input.float(1.5, title="Reward/Risk Multiplier", minval=0.1, step=0.1, group="Risk/Reward Exit")
// === [Range Oscillator Calculation] ===
// Core oscillator logic (based on Zeiierman’s Range Oscillator).
atrRaw = nz(ta.atr(2000), ta.atr(200))
rangeATR = atrRaw * mult
sumWeightedClose = 0.0
sumWeights = 0.0
for i = 0 to length - 1
delta = math.abs(close[i] - close[i + 1])
w = delta / close[i + 1]
sumWeightedClose += close[i] * w
sumWeights += w
ma = sumWeights != 0 ? sumWeightedClose / sumWeights : na
distances = array.new_float(length)
for i = 0 to length - 1
array.set(distances, i, math.abs(close[i] - ma))
maxDist = array.max(distances)
osc = rangeATR != 0 ? 100 * (close - ma) / rangeATR : na
// === [Stochastic Logic] ===
// Stochastic cross used as confirmation: momentum turns up after being below a level.
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
stochCondition = k < crossLevel and ta.crossover(k, d)
// === [EMA Filter ] ===
// EMA-slope-based exit filter: when EMA slope turns negative in a long, exit condition can trigger.
ema = ta.ema(close, emaLength)
chg = ema - ema[1]
pct = ema[1] != 0 ? (chg / ema[1]) * 100.0 : 0.0
isDown = pct < 0
magicExitCond = useMagicExit and isDown and strategy.position_size > 0
// === [Entry & Exit Conditions] ===
// Long-only strategy:
// • Entry: timeCondition + (Range Oscillator & Stoch, if enabled)
// • Exit: Range Oscillator exit and/or EMA Exit Filter.
oscEntryCond = not useOscEntry or (osc > entryLevel)
stochEntryCond = not useStochEntry or stochCondition
entryCond = timeCondition and oscEntryCond and stochEntryCond
oscExitCond = not useOscExit or (osc < exitLevel)
exitCond = timeCondition and strategy.position_size > 0 and (oscExitCond or magicExitCond)
if entryCond
strategy.entry("Long", strategy.long)
if exitCond
strategy.close("Long")
// === [Risk Management Exits] ===
// Optional SL/TP and RR exits (OCO). They sit on top of the main exit logic.
// Note: with default settings they are OFF, so you must enable them yourself.
ap = strategy.position_avg_price
slPrice = useSL ? ap * (1 - slPct / 100) : na
tpPrice = useTP ? ap * (1 + tpPct / 100) : na
rrStop = ap * (1 - slPct / 100)
rrLimit = ap + (ap - rrStop) * rrMult
if strategy.position_size > 0
if useSL or useTP
strategy.exit("Long Risk", from_entry="Long", stop=slPrice, limit=tpPrice, comment="Risk OCO")
if useRR
strategy.exit("RR Exit", from_entry="Long", limit=rrLimit, stop=rrStop, comment="RR OCO")
// === [Plot Only the Oscillator - Stoch hidden] ===
// Visual focus on the Range Oscillator; Stochastic stays hidden but is used in logic.
inTrade = strategy.position_size > 0
oscColor = inTrade ? color.green : color.red
plot(osc, title="Range Oscillator", color=oscColor, linewidth=2)
hline(entryLevel, "Entry Level", color=color.green, linestyle=hline.style_dotted)
hline(exitLevel, "Exit Level", color=color.red, linestyle=hline.style_dotted)
plot(k, title="%K", color=color.blue, display=display.none)
plot(d, title="%D", color=color.orange, display=display.none)
// Plot EMA (hidden) so it is available but not visible on the chart.
plot(ema, title="EMA Exit Filter", display=display.none)