
यह रणनीति drkhodakarami के स्केल एकीकरण वेक्टर रणनीति में सुधार है, मुख्य रूप से रणनीति की दक्षता बढ़ाने के लिए सक्रियण फ़ंक्शन को जोड़ना। रणनीति समय-अक्ष अंतर का उपयोग बाजार में परिवर्तन की दर की गणना करने के लिए करती है, और थ्रेड मूल्य निर्णय के माध्यम से अधिक शून्य संकेत करती है। साथ ही, रणनीति में स्विस, ReLU और कदम सक्रियण फ़ंक्शन की शुरुआत की गई है, जो सिग्नल निर्णय की सटीकता को बढ़ाने के लिए क्रमबद्धता को समतल करता है।
समाधान:
यह रणनीति 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)