
یہ حکمت عملی ڈرکوڈاکارامی کی اسکیل انٹیگریٹڈ ویکٹر حکمت عملی میں بہتری ہے ، جس میں حکمت عملی کی کارکردگی کو بہتر بنانے کے لئے ایکٹیویشن فنکشن کا اضافہ کیا گیا ہے۔ حکمت عملی مارکیٹ میں تبدیلی کی شرح کا حساب لگانے کے لئے ٹائم ایشز کے فرق کا استعمال کرتی ہے ، اور کم قیمت کے فیصلے کے ذریعہ زیادہ خالی سگنل کرتی ہے۔ اس کے علاوہ ، اس حکمت عملی میں سویش ، ری ایل یو اور اسٹیپ ایکٹیویشن فنکشن متعارف کرایا گیا ہے ، جس میں سگنل فیصلے کی درستگی کو بہتر بنانے کے لئے مختلف ترتیب کو ہموار کیا جاسکتا ہے۔
حل:
یہ حکمت عملی drkhodakarami پر مبنی ہے ، جس میں ایکٹیویشن فنکشن کو متعارف کرایا گیا ہے تاکہ کارکردگی کو بہتر بنایا جاسکے ، پیرامیٹرز کو بہتر بنانے کے لئے جگہ کو وسعت دی جاسکے ، تاکہ مارکیٹ میں تبدیلیوں کو بہتر طور پر ایڈجسٹ کیا جاسکے۔ اس کے ساتھ ساتھ بصری طور پر بہترین ڈیزائن کیا گیا ہے ، جس میں تجارتی مواقع کو بصری طور پر ظاہر کیا گیا ہے۔ اس کے بعد ایکٹیویشن فنکشن کو بہتر بنانے اور اس کی حد مقرر کرنے کے لئے آگے بڑھایا جاسکتا ہے ، اور اسٹاپ لوجسٹک اور مزید سگنل فلٹرنگ کو شامل کیا جاسکتا ہے ، تاکہ بہتر حکمت عملی کے نتائج حاصل کیے جاسکیں۔
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// author: capissimo
strategy("Scaled Normalized Vector Strategy, ver.4", precision=2, overlay=false)
// This is a modification of my Scaled Normalized Vector Strategy
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)
price = input(close, "Price Data")
tf = input(18, "Timeframe", minval=1, maxval=1440)
thresh = input(14., "Threshold", minval=.1, step=.1)
div = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
mmx = input(233, "Minimax Lookback", options=[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584])
showVol = input(false, "Volume")
useold = input(true, "Use Old System")
method = input("Swish", "Activation", options=["Step", "LReLU", "Swish", "None"])
scaleMinimax(X, p, min, max) =>
hi = highest(X, p), lo = lowest(X, p)
(max - min) * (X - lo)/(hi - lo) + min
getdiff(prc, tf) =>
prev = scaleMinimax((useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on)
: security(syminfo.tickerid, tostring(tf), prc[1])), tf, 0, 1)
curr = scaleMinimax((useold ? security(syminfo.tickerid, tostring(tf), hlc3, barmerge.gaps_off, barmerge.lookahead_on)
: security(syminfo.tickerid, tostring(tf), hlc3)), tf, 0, 1)
(curr/prev) - 1
relu(x) => max(x, 0)
lrelu(x, alpha) => relu(x) - alpha * relu(-x)
step(x) => x >= 0 ? 1 : -1
log2(x) => log(x) / log(2)
sigmoid(x) => 1 / (1 + exp(-x))
swish(x) => x * sigmoid(x)
f(m) => method==m
vol = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on)
: security(syminfo.tickerid, tostring(tf), volume)
obv = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
x = getdiff(prix, tf)
p = f("Swish") ? swish(x) : f("Step") ? step(x) : f("LReLU") ? lrelu(x, .8) : x
th = thresh/div
long = crossover(p, th)
short= crossunder(p, -th)
lime = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10),
black = color.new(color.black, 100), gray = color.new(color.gray, 50)
bg = long ? lime : short ? fuchsia : black
cl = p > th ? color.green : p < -th ? color.red : color.silver
bgcolor(bg, editable=false)
plot(scaleMinimax(th, mmx, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(-th, mmx, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, mmx, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, mmx, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)
strategy.entry("L", true, 1, when=long)
strategy.entry("S", false, 1, when=short)
alertcondition(long, title='Long', message='Long Signal!')
alertcondition(short, title='Short', message='Short Signal!')
//*** Karobein Oscillator
per = input(8, "Karobein Osc Lookback")
prix2 = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1
plot(scaleMinimax(d, mmx, -1, 1), color=color.orange, transp=0)