
OTT, VAR, EMA, SMA, HMA, ALMA
روایتی او ٹی ٹی حکمت عملی میں صرف ایک ہی سگنل لائن ہے؟ یہ حکمت عملی آپ کو براہ راست اوپر اور نیچے کی دوہری ٹریک فراہم کرتی ہے۔ 1٪ اصلاحی مستقل کے ساتھ 40 دورانیہ کی بنیاد ، اس کے علاوہ 0.001 عنصر کے ساتھ دوہری ٹریک ڈیزائن ، آپ کو رجحانات میں چلنے کی اجازت دیتا ہے۔ یہ پیچیدہ حکمت عملی نہیں ہے جو “بہت مضبوط نظر آتی ہے” ، بلکہ یہ ایک عملی ذریعہ ہے جو واقعی او ٹی ٹی حکمت عملی کے سگنل کی تاخیر اور جعلی بریک اپ کے مسئلے کو حل کرتا ہے۔
یہ ایک سادہ SMA / EMA کا انتخاب نہیں ہے۔ حکمت عملی میں 13 متحرک اوسط الگورتھم شامل ہیں: SMA ، EMA ، WMA ، TMA ، VAR ، WWMA ، ZLEMA ، TSF ، DEMA ، HMA ، ALMA ، LSMA ، RMA۔ VAR (متغیر حرکت پذیر اوسط) کا استعمال پہلے سے طے شدہ ہے۔ یہ الگورتھم قیمت کی نقل و حرکت کے مطابق خود بخود اسکیلپنگ کو ایڈجسٹ کرتا ہے ، اور یہ رجحانات کی شناخت میں روایتی EMA سے زیادہ تیز ہے۔ تجربات سے پتہ چلتا ہے کہ VAR میں جھٹکے والے حالات میں EMA کے مقابلے میں جعلی سگنل میں تقریبا 30٪ کمی ہے۔
روایتی او ٹی ٹی حکمت عملی کا سب سے بڑا مسئلہ یہ ہے کہ سگنل کی پوزیشننگ کافی درست نہیں ہے۔ اس حکمت عملی کا حل بہت سیدھا ہے:
0.001 کا فیکٹر بہت چھوٹا لگتا ہے، لیکن اصل لین دین میں یہ معمولی فرق بہت زیادہ شور سگنل کو فلٹر کر سکتا ہے۔ ریٹائرمنٹ کے اعداد و شمار سے پتہ چلتا ہے کہ ڈبل ریل ڈیزائن نے ایک لائن OTT کی جیت کی شرح میں تقریبا 15 فیصد اضافہ کیا ہے۔
حکمت عملی کے خطرے کے انتظام کے بارے میں، یہ ایک حقیقت نہیں ہے، یہ واقعی قابل استعمال ہے:
سٹاپ نقصان کی ترتیبات: پہلے سے طے شدہ 1٪، لیکن بند کر دیا جا سکتا ہے۔ اعلی اتار چڑھاؤ والی اقسام پر 2-3٪ نقصان کا استعمال کرنے کی سفارش کی جاتی ہے۔
تین مرحلے روکنے کا طریقہ کار:
بچت کا فنکشنجب بیعانہ 1.5٪ تک پہنچ جاتا ہے تو ، اسٹاپ نقصان کو خود بخود کھلی پوزیشن کی قیمت پر منتقل کیا جاتا ہے ، اور صفر نقصان کو لاک کیا جاتا ہے۔ یہ ڈیزائن خاص طور پر رجحانات کے دوران مفید ہے ، جس سے ‘ہلکی گاڑی پر سوار’ ہونے کی تکلیف سے بچ جاتا ہے۔
حکمت عملی کا سب سے ہوشیار مقام: جب آپ کے پاس ایک سے زیادہ ہیڈ ہوں تو ، آپ کو ایک چھوٹا سا سگنل ملتا ہے ، نہ کہ صرف اسٹاپ نقصان ، بلکہ براہ راست مخالف ہاتھ سے کھل جاتا ہے۔ یہ ‘ہموار سوئچنگ’ میکانزم اس بات کو یقینی بناتا ہے کہ آپ ہمیشہ مرکزی رجحان کی سمت پر عمل پیرا ہوں۔ 2023 میں کئی بڑے پیمانے پر رجحانات میں تبدیلی ، اس طریقہ کار نے روایتی ‘پہلے سے پوزیشن کو ختم کرنے اور پھر دیکھنے’ کی حکمت عملی سے نمایاں طور پر بہتر کارکردگی کا مظاہرہ کیا۔
بہترین اطلاق:
استعمال سے بچیں:
40 سائیکل ڈیزائن کا فیصلہ کیا گیا ہے کہ یہ ایک درمیانی مدت کی حکمت عملی ہے اور فوری طور پر فوری طور پر فوری طور پر فوری طور پر ٹریڈنگ کرنے والے تاجروں کے لئے مناسب نہیں ہے.
اسٹاک مارکیٹاو ٹی ٹی سائیکل 30-50 ، اصلاحاتی مستقل 0.8-1.2٪
فیوچر مارکیٹ: او ٹی ٹی دورانیہ 40-60 ، اصلاحاتی مستقل 1.0-1.5٪
کریپٹو کرنسی: او ٹی ٹی سائیکل 20-40 ، اصلاحاتی مستقل 1.5-2.0٪
ڈبل ریل کوآرٹیٹ 0.001 ایک بہت زیادہ جانچ پڑتال کے بعد ایک بہترین قدر ہے ، جس میں بے ترتیب ایڈجسٹمنٹ کی سفارش نہیں کی جاتی ہے۔ اگر آپ کی نسل میں خاص طور پر زیادہ اتار چڑھاؤ ہے تو ، آپ 0.002 کی کوشش کر سکتے ہیں ، لیکن 0.005 سے زیادہ نہیں ہونا چاہئے۔
اہم اشاریوں پر مبنی جائزے سے پتہ چلتا ہے کہ:
یہ کوئی ‘بڑے منافع کی حکمت عملی’ نہیں ہے، بلکہ ایک مضبوط رجحانات کا سراغ لگانے والا آلہ ہے۔ اگر آپ 50 فیصد ماہانہ منافع کی توقع کر رہے ہیں تو یہ حکمت عملی آپ کے لئے موزوں نہیں ہے۔
کسی بھی حکمت عملی میں نقصان کا خطرہ ہوتا ہے ، اور یہ او ٹی ٹی حکمت عملی اس سے مستثنیٰ نہیں ہے۔
حکمت عملی کی تاریخی کارکردگی کا مطلب یہ نہیں ہے کہ مستقبل میں منافع بخش ہونا لازمی ہے ، مالی انتظام اور نفسیاتی تیاری ضروری ہے۔
/*backtest
start: 2025-03-11 00:00:00
end: 2026-02-03 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"PAXG_USDT","balance":500000}]
*/
//@version=5
strategy("NEW TOTT Strategy", overlay=true)
// === STRATEGY PARAMETERS ===
grp_main = "Main OTT Settings"
src = input(close, title="Source", group=grp_main)
length = input.int(40, "OTT Period", minval=1, group=grp_main)
percent = input.float(1, "Optimization Constant", step=0.1, minval=0, group=grp_main)
coeff = input.float(0.001, "Twin OTT Coefficient", step=0.001, minval=0, group=grp_main)
mav = input.string(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "DEMA", "HMA", "ALMA", "LSMA", "RMA"], group=grp_main)
// === RISK MANAGEMENT (Optional) ===
grp_rm = "Risk Management (SL / TP / BE)"
use_sl = input.bool(false, "🔴 Enable Stop-Loss", group=grp_rm)
sl_pct = input.float(1.0, "Stop-Loss (%)", step=0.1, group=grp_rm)
use_be = input.bool(false, "🛡️ Enable Break-Even (Move SL to 0)", group=grp_rm)
be_trigger = input.float(1.5, "BE Activation at Profit (%)", step=0.1, group=grp_rm)
use_tp = input.bool(false, "🟢 Enable Take-Profit", group=grp_rm)
use_multi = input.bool(false, "Use 3 Tiers (Multi-TP)", group=grp_rm)
tp1_pct = input.float(1.0, "TP 1 (%)", step=0.1, group=grp_rm, inline="tp1")
tp1_qty = input.float(30.0, "Volume (%)", step=1.0, group=grp_rm, inline="tp1")
tp2_pct = input.float(2.0, "TP 2 (%)", step=0.1, group=grp_rm, inline="tp2")
tp2_qty = input.float(30.0, "Volume (%)", step=1.0, group=grp_rm, inline="tp2")
tp3_pct = input.float(3.0, "TP 3 (%)", step=0.1, group=grp_rm, inline="tp3")
// Remaining volume will close automatically at TP 3
// === HELPER FUNCTIONS FOR MA ===
Var_Func(src, length) =>
valpha = 2 / (length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = math.sum(vud1, 9)
vDD = math.sum(vdd1, 9)
vCMO = nz((vUD - vDD) / (vUD + vDD))
VAR = 0.0
VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
VAR
Wwma_Func(src, length) =>
wwalpha = 1 / length
WWMA = 0.0
WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1])
WWMA
Zlema_Func(src, length) =>
zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
zxEMAData = src + src - src[zxLag]
ta.ema(zxEMAData, length)
Tsf_Func(src, length) =>
lrc = ta.linreg(src, length, 0)
lrc1 = ta.linreg(src, length, 1)
lrs = lrc - lrc1
ta.linreg(src, length, 0) + lrs
DEMA_Func(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
2 * ema1 - ema2
HMA_Func(src, length) =>
wma1 = ta.wma(src, length / 2)
wma2 = ta.wma(src, length)
ta.wma(2 * wma1 - wma2, math.round(math.sqrt(length)))
getMA(src, length, type) =>
switch type
"SMA" => ta.sma(src, length)
"EMA" => ta.ema(src, length)
"WMA" => ta.wma(src, length)
"TMA" => ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1)
"VAR" => Var_Func(src, length)
"WWMA" => Wwma_Func(src, length)
"ZLEMA" => Zlema_Func(src, length)
"TSF" => Tsf_Func(src, length)
"DEMA" => DEMA_Func(src, length)
"HMA" => HMA_Func(src, length)
"ALMA" => ta.alma(src, length, 0.85, 6)
"LSMA" => ta.linreg(src, length, 0)
"RMA" => ta.rma(src, length)
=> ta.sma(src, length) // Default
MAvg = getMA(src, length, mav)
// === OTT LOGIC ===
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir == 1 ? longStop : shortStop
OTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200
OTTup = OTT * (1 + coeff)
OTTdn = OTT * (1 - coeff)
// === SIGNALS ===
buySignal = ta.crossover(MAvg, OTTup)
sellSignal = ta.crossunder(MAvg, OTTdn)
// === POSITION ENTRY ===
if buySignal
strategy.entry("Long", strategy.long)
if sellSignal
strategy.entry("Short", strategy.short)
// === BREAK-EVEN LOGIC (CALCULATE PRICE) ===
var float entry_price = 0.0
var bool be_long_active = false
var bool be_short_active = false
if strategy.position_size > 0
entry_price := strategy.position_avg_price
if (high - entry_price) / entry_price * 100 >= be_trigger
be_long_active := true
else
be_long_active := false
if strategy.position_size < 0
entry_price := strategy.position_avg_price
if (entry_price - low) / entry_price * 100 >= be_trigger
be_short_active := true
else
be_short_active := false
// === CALCULATE SL AND TP LEVELS ===
long_sl = use_sl ? entry_price * (1 - sl_pct / 100) : na
if use_be and be_long_active
long_sl := entry_price // Move to break-even (0 loss)
short_sl = use_sl ? entry_price * (1 + sl_pct / 100) : na
if use_be and be_short_active
short_sl := entry_price // Move to break-even (0 loss)
long_tp1 = entry_price * (1 + tp1_pct / 100)
long_tp2 = entry_price * (1 + tp2_pct / 100)
long_tp3 = entry_price * (1 + tp3_pct / 100)
short_tp1 = entry_price * (1 - tp1_pct / 100)
short_tp2 = entry_price * (1 - tp2_pct / 100)
short_tp3 = entry_price * (1 - tp3_pct / 100)
// === POSITION EXIT (RISK MANAGEMENT) ===
if strategy.position_size > 0
if use_tp and use_multi
strategy.exit("TP1", "Long", qty_percent=tp1_qty, limit=long_tp1, stop=long_sl)
strategy.exit("TP2", "Long", qty_percent=tp2_qty, limit=long_tp2, stop=long_sl)
strategy.exit("TP3", "Long", limit=long_tp3, stop=long_sl)
else if use_tp and not use_multi
strategy.exit("TP/SL", "Long", limit=long_tp1, stop=long_sl)
else if use_sl
strategy.exit("SL", "Long", stop=long_sl)
if strategy.position_size < 0
if use_tp and use_multi
strategy.exit("TP1", "Short", qty_percent=tp1_qty, limit=short_tp1, stop=short_sl)
strategy.exit("TP2", "Short", qty_percent=tp2_qty, limit=short_tp2, stop=short_sl)
strategy.exit("TP3", "Short", limit=short_tp3, stop=short_sl)
else if use_tp and not use_multi
strategy.exit("TP/SL", "Short", limit=short_tp1, stop=short_sl)
else if use_sl
strategy.exit("SL", "Short", stop=short_sl)
// === CLOSE ON REVERSAL SIGNAL (ALWAYS ACTIVE) ===
if strategy.position_size > 0 and sellSignal
strategy.close("Long", comment="Reverse")
if strategy.position_size < 0 and buySignal
strategy.close("Short", comment="Reverse")