
اس حکمت عملی کا بنیادی خیال یہ ہے کہ رینڈم مضبوط اور کمزور اشاریہ پر عملدرآمد کرنے کے لئے ایلرز سپر ہموار فلٹر کا استعمال کیا جائے ، جس سے بہت سے جعلی سگنل کو فلٹر کیا جاسکے ، اور زیادہ قابل اعتماد تجارتی سگنل حاصل کیے جائیں۔ بنیادی اصول یہ ہے کہ پہلے رینڈم مضبوط اور کمزور اشاریہ کا حساب لگایا جائے ، پھر ایلرز سپر ہموار فلٹر کا استعمال کرکے اس پر ہموار عملدرآمد کیا جائے ، اور آخر میں اس کی اپنی چلتی اوسط کے ساتھ کراس ڈپلیکیٹ کیا جائے۔
اس حکمت عملی میں سب سے پہلے RSI اشارے کا حساب لگایا جاتا ہے جس کی تاریخ کی اختتامی قیمت ہے ، اور پھر اسٹاکسٹک اشارے کا حساب لگایا جاتا ہے جو RSI اشارے پر مبنی ہے ، جو کہ ایک عام نسبتا strong مضبوط اشارے ہے۔ جعلی سگنل کو فلٹر کرنے کے لئے ، اسٹاکسٹک RSI کو ایلس سپر فلیٹ سلیکٹر کا استعمال کرتے ہوئے پروسیس کیا جاتا ہے ، اور آخر میں اسٹاکسٹک RSI لائن کو اپنی حرکت پذیری اوسط سے گولڈ کراس کیا جاتا ہے ، اور کراس خالی ہوجاتا ہے۔ لہذا اس حکمت عملی کے لئے کلیدی نکات یہ ہیں: 1) اسٹاکسٹک RSI اشارے کا حساب لگائیں؛ 2) ایلس سپر فلیٹ سلیکٹر کا استعمال کریں؛ 3) اور ایک ٹریڈنگ سگنل تشکیل دیں۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں ایلس سپر ہموار فلٹر کا استعمال کیا گیا ہے ، جو بہت سارے جھوٹے سگنل کو مؤثر طریقے سے فلٹر کرتا ہے ، جس سے تجارتی سگنل زیادہ قابل اعتماد ہوجاتے ہیں۔ اس کے علاوہ ، اسٹوکاسٹک آر ایس آئی اشارے میں خود ہی بہت اچھی توڑنے اور رجحان کی پیروی کرنے کی صلاحیت ہے۔ لہذا یہ حکمت عملی رجحانات کو صحیح طریقے سے پہچان سکتی ہے ، جب مناسب ہو تو پوزیشن کھڑی کرسکتی ہے ، اور جب مناسب ہو تو پوزیشن کو ختم کرسکتی ہے۔
اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ مارکیٹ میں بڑے پیمانے پر اتار چڑھاؤ کے دوران غلط سگنل پیدا کرنے کا خطرہ ہے۔ اسٹوکاسٹک آر ایس آئی اشارے میں بہت سارے اچھال اور کمی کے جھوٹے سگنل پیدا ہوتے ہیں جب قیمتوں میں ایک تنگ رینج میں بڑے پیمانے پر اتار چڑھاؤ ہوتا ہے ، اس وقت ایلس الٹرا ہموار فلٹر کا اثر بھی چھوٹ جاتا ہے۔ اس کے علاوہ ، کچھ شدید حالات میں ، اشارے کی پسماندگی بھی کچھ خطرہ لاحق ہوسکتی ہے۔
ان خطرات کو کم کرنے کے لئے ، پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے ، جیسے اسٹوکاسٹک اشارے کا دورانیہ بڑھانا ، ہموار کو کم کرنا وغیرہ ، تاکہ جعلی سگنل کو مزید فلٹر کیا جاسکے۔ اس کے علاوہ ، دوسرے اشارے یا شکلوں کے ساتھ مجموعہ کرنے پر بھی غور کیا جاسکتا ہے ، جس سے متعدد فلٹرنگ کے حالات پیدا ہوسکتے ہیں ، تاکہ غلط سگنل کے خطرات سے بچا جاسکے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
پیرامیٹرز کو بہتر بنانے کے لئے۔ آپ اسٹاکسٹک آر ایس آئی اشارے کی لمبائی ، ہموار مستقل اور دیگر پیرامیٹرز کی جانچ پڑتال کر سکتے ہیں تاکہ بہترین پیرامیٹرز کا مجموعہ تلاش کیا جاسکے۔
اضافی روکنے کا طریقہ کار۔ منافع کو لاک کرنے اور واپسی کو کم کرنے کے لئے ایک متحرک رکاوٹ یا لٹکا ہوا رکاوٹ طے کی جاسکتی ہے۔
دوسرے اشارے یا شکل کے ساتھ مجموعہ۔ اس کے علاوہ ، اتار چڑھاؤ کے اشارے ، چلتی اوسط وغیرہ کے ساتھ مجموعہ پر غور کیا جاسکتا ہے ، جس سے متعدد فلٹرنگ کے حالات پیدا ہوسکتے ہیں ، اور اس طرح خطرے کو مزید کم کیا جاسکتا ہے۔
بڑے دورانیہ کے تجزیہ کے نتائج کے مطابق پوزیشن کو ایڈجسٹ کریں۔ اعلی ٹائم پیریڈ کے رجحانات کے تجزیہ کے نتائج کے مطابق ، ہر تجارت کے لئے پوزیشن کے سائز کو متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔
یہ حکمت عملی پہلے اسٹوکاسٹک آر ایس آئی اشارے کا حساب لگاتی ہے ، پھر اس پر ایلس سپر ہموار فلٹر کا استعمال کرتے ہوئے اس پر کارروائی کرتی ہے ، اور آخر میں اپنی حرکت پذیر اوسط کے ساتھ تجارتی سگنل بناتی ہے ، تاکہ رجحان کا صحیح فیصلہ کیا جاسکے۔ حکمت عملی کا فائدہ یہ ہے کہ اشارے اور فلٹر کا مجموعہ استعمال کیا جاتا ہے ، جعلی سگنل کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے ، اور اعلی امکانات کے ساتھ تجارت کے مواقع حاصل کیے جاسکتے ہیں۔ خطرہ بنیادی طور پر پیرامیٹرز کی غلط ترتیب اور نقصان کو روکنے کے طریقہ کار کی کمی سے آتا ہے۔ پیرامیٹرز کی اصلاح ، نقصان کو روکنے اور مجموعہ کی اصلاح جیسے طریقوں سے حکمت عملی کی استحکام اور منافع کی سطح کو مزید بہتر بنایا جاسکتا ہے۔
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("ES Stoch RSI Strategy [krypt]", overlay=true, calc_on_order_fills=true, calc_on_every_tick=true, initial_capital=10000, currency='USD')
//Backtest Range
FromMonth = input(defval = 06, title = "From Month", minval = 1)
FromDay = input(defval = 1, title = "From Day", minval = 1)
FromYear = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth = input(defval = 7, title = "To Month", minval = 1)
ToDay = input(defval = 30, title = "To Day", minval = 1)
ToYear = input(defval = 2018, title = "To Year", minval = 2014)
PI = 3.14159265359
drop1st(src) =>
x = na
x := na(src[1]) ? na : src
xlowest(src, len) =>
x = src
for i = 1 to len - 1
v = src[i]
if (na(v))
break
x := min(x, v)
x
xhighest(src, len) =>
x = src
for i = 1 to len - 1
v = src[i]
if (na(v))
break
x := max(x, v)
x
xstoch(c, h, l, len) =>
xlow = xlowest(l, len)
xhigh = xhighest(h, len)
100 * (c - xlow) / (xhigh - xlow)
Stochastic(c, h, l, length) =>
rawsig = xstoch(c, h, l, length)
min(max(rawsig, 0.0), 100.0)
xrma(src, len) =>
sum = na
sum := (src + (len - 1) * nz(sum[1], src)) / len
xrsi(src, len) =>
msig = nz(change(src, 1), 0.0)
up = xrma(max(msig, 0.0), len)
dn = xrma(max(-msig, 0.0), len)
rs = up / dn
100.0 - 100.0 / (1.0 + rs)
EhlersSuperSmoother(src, lower) =>
a1 = exp(-PI * sqrt(2) / lower)
coeff2 = 2 * a1 * cos(sqrt(2) * PI / lower)
coeff3 = -pow(a1, 2)
coeff1 = (1 - coeff2 - coeff3) / 2
filt = na
filt := nz(coeff1 * (src + nz(src[1], src)) + coeff2 * filt[1] + coeff3 * filt[2], src)
smoothK = input(7, minval=1, title="K")
smoothD = input(2, minval=1, title="D")
lengthRSI = input(10, minval=1, title="RSI Length")
lengthStoch = input(3, minval=1, title="Stochastic Length")
showsignals = input(true, title="Buy/Sell Signals")
src = input(close, title="Source")
ob = 80
os = 20
midpoint = 50
price = log(drop1st(src))
rsi1 = xrsi(price, lengthRSI)
rawsig = Stochastic(rsi1, rsi1, rsi1, lengthStoch)
sig = EhlersSuperSmoother(rawsig, smoothK)
ma = sma(sig, smoothD)
plot(sig, color=#0094ff, title="K", transp=0)
plot(ma, color=#ff6a00, title="D", transp=0)
lineOB = hline(ob, title="Upper Band", color=#c0c0c0)
lineOS = hline(os, title="Lower Band", color=#c0c0c0)
fill(lineOB, lineOS, color=purple, title="Background")
// Buy/Sell Signals
// use curvature information to filter out some false positives
mm1 = change(change(ma, 1), 1)
mm2 = change(change(ma, 2), 2)
ms1 = change(change(sig, 1), 1)
ms2 = change(change(sig, 2), 2)
sellsignals = showsignals and (mm1 + ms1 < 0 and mm2 + ms2 < 0) and crossunder(sig, ma) and sig[1] > ob
buysignals = showsignals and (mm1 + ms1 > 0 and mm2 + ms2 > 0) and crossover(sig, ma) and sig[1] < os
ploff = 4
plot(buysignals ? sig[1] - ploff : na, style=circles, color=#008fff, linewidth=3, title="Buy Signal", transp=0)
plot(sellsignals ? sig[1] + ploff : na, style=circles, color=#ff0000, linewidth=3, title="Sell Signal", transp=0)
longCondition = buysignals
if (longCondition)
strategy.entry("L", strategy.long, comment="Long", when=(buysignals))
shortCondition = sellsignals
if (shortCondition)
strategy.entry("S", strategy.short, comment="Short", when=(sellsignals))