اس حکمت عملی کے لئے اصلاح کی اہم سمتیں یہ ہیں:
پیرامیٹر کی ترتیبات کو بہتر بنائیں۔ وسیع پیمانے پر بیک ٹیسٹنگ کے ذریعے اسٹوکاسٹک آر ایس آئی کی لمبائی اور ہموار کنسٹنٹس جیسے پیرامیٹرز کو بہتر بنائیں۔
دوسرے اشارے یا نمونوں کے ساتھ مل کر۔ متعدد فلٹر حالات شامل کرنے اور خطرات کو مزید کم کرنے کے لئے اتار چڑھاؤ کے اشارے ، چلتی اوسط وغیرہ کے ساتھ مل کر غور کریں۔
اعلی ٹائم فریم کے تجزیے کی بنیاد پر پوزیشن سائزنگ کو ایڈجسٹ کریں۔ اعلی ٹائم فریم کے رجحان تجزیہ کے نتائج کی بنیاد پر ہر تجارت کے پوزیشن سائز کو متحرک طور پر ایڈجسٹ کریں۔
/*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))