
यह रणनीति कई संकेतकों के संयोजन के साथ एक व्यापक विश्लेषण प्रणाली है, जो मुख्य रूप से बाजार की प्रवृत्ति और संभावित उलट बिंदुओं का न्याय करने के लिए VAWSI (वॉल्यूम और एटीआर भारित ताकत सूचकांक), ट्रेंड निरंतरता सूचकांक और संशोधित एटीआर पर आधारित है। यह रणनीति विभिन्न बाजार स्थितियों के अनुकूल गतिशील लंबाई गणना भी पेश करती है। यह गतिशीलता के स्टॉप और रिटर्न को सेट करके जोखिम का प्रबंधन करती है और संभावित रिवर्स सिग्नल की पहचान करते समय व्यापार करती है।
इस रणनीति का मूल यह है कि बाजार की प्रवृत्ति की ताकत, अवधि और अस्थिरता को कई कस्टम संकेतकों के माध्यम से मापा जाता है, ताकि सबसे अच्छा व्यापार समय का पता लगाया जा सके। यह विशेष रूप से स्पष्ट रूप से प्रवृत्तियों वाले बाजारों के लिए उपयुक्त है, लेकिन इसमें विभिन्न बाजार स्थितियों से निपटने के लिए एक अनुकूलन तंत्र भी शामिल है।
VAWSI सूचक: यह आरएसआई के समान एक मूल सूचक है, लेकिन आरएमए के बजाय VAWMA (वॉल्यूम और एटीआर भारित मूविंग एवरेज) का उपयोग करता है। यह उभरते रुझानों की ताकत को मापता है।
रुझान निरंतरता सूचकांकः एक अन्य मूल सूचकांक जो रुझानों की अवधि को मापता है। यह स्रोत डेटा को निर्दिष्ट लंबाई के भीतर उच्चतम / निम्नतम बिंदुओं से अधिकतम विचलन की गणना करता है, और फिर इस विचलन को जमा करता है और एक शक्ति सूचकांक बनाता है।
संशोधित एटीआरः उच्च-निम्न और निर्देशांक स्रोत-पिछले स्रोत के अधिकतम मान, और फिर उनके परिवर्तनों के निरपेक्ष मान और स्रोत डेटा के साथ समेकन।
गतिशील लंबाई की गणनाः BlackCat1402 की गतिशील लंबाई की गणना विधि का उपयोग करके, बाजार की स्थिति के अनुसार सूचक के लंबाई पैरामीटर को समायोजित करें।
समग्र विश्लेषणः एक समग्र सूचक उत्पन्न करने के लिए VAWSI, रुझान निरंतरता और एटीआर की रीडिंग को एक साथ जोड़ना। निचले अंतिम आंकड़े का मतलब है कि एक पलटाव होने वाला है, उच्च आंकड़े का मतलब है कि बाजार अस्थिर या अस्थिर है।
गतिशील हानि/लाभः गतिशील हानि और लाभ का स्तर, जो समग्र सूचकांक और वर्तमान रुझान की दिशा के आधार पर गणना की जाती है।
ट्रेडिंग सिग्नलः जब कीमत पूरी तरह से गणना की गई सीमा रेखा को पार कर जाती है, तो सिस्टम क्रॉसिंग की पुष्टि करता है और ट्रेडिंग सिग्नल उत्पन्न करता है।
बहुआयामी विश्लेषणः कई संकेतकों के संयोजन के माध्यम से, रणनीति विभिन्न कोणों से बाजार का विश्लेषण करने में सक्षम है, जो निर्णय की सटीकता को बढ़ाता है।
अनुकूलनशीलताः गतिशील लंबाई की गणना रणनीति को विभिन्न बाजार स्थितियों के अनुकूल बनाने में सक्षम बनाती है, जिससे रणनीति की लचीलापन बढ़ जाती है।
जोखिम प्रबंधनः गतिशील स्टॉप-लॉस और लाभ लेने की सेटिंग्स बाजार में बदलाव के लिए जोखिम को बेहतर ढंग से नियंत्रित करने में मदद करती हैं।
मौलिक संकेतक: VAWSI और रुझान निरंतरता संकेतक अद्वितीय बाजार अंतर्दृष्टि प्रदान करते हैं और उन संकेतों को पकड़ सकते हैं जिन्हें पारंपरिक संकेतक अनदेखा करते हैं।
बारस्टेट.isconfirmed का उपयोग करके, यह सुनिश्चित किया जाता है कि सिग्नल को फिर से तैयार नहीं किया गया है, जिससे प्रतिक्रिया की सटीकता में सुधार होता है।
अनुकूलनशीलताः कई मापदंडों को अनुकूलित किया जा सकता है ताकि रणनीति विभिन्न प्रकार के व्यापार और समय सीमाओं के लिए अनुकूल हो सके।
अत्यधिक अनुकूलनः बहुत सारे पैरामीटर के कारण अत्यधिक अनुकूलन हो सकता है, जो वास्तविक समय में खराब प्रदर्शन कर सकता है।
बाजार अनुकूलनशीलता: हालांकि कुछ बाजारों में अच्छा प्रदर्शन किया, यह सभी बाजार स्थितियों के लिए लागू नहीं हो सकता है, खासकर कम अस्थिरता वाले बाजारों में।
जटिलताः रणनीतियों की जटिलता उन्हें समझने और बनाए रखने के लिए कठिन बना सकती है, जिससे ऑपरेशन की गलतियों का खतरा बढ़ जाता है।
कम्प्यूटेशन गहन: कई कस्टम मापदंडों और गतिशील गणना से उच्च कंप्यूटिंग भार हो सकता है, जिससे निष्पादन की गति प्रभावित होती है।
ऐतिहासिक डेटा पर निर्भरता: रणनीतियाँ बड़ी मात्रा में ऐतिहासिक डेटा का उपयोग करके गणना करती हैं, जो कुछ मामलों में विलंबता का कारण बन सकती हैं।
पैरामीटर अनुकूलनः विभिन्न बाजार स्थितियों में रणनीति के प्रदर्शन को बेहतर बनाने के लिए विभिन्न भार और लंबाई पैरामीटर को अनुकूलित करने के लिए मशीन सीखने के एल्गोरिदम का उपयोग करें।
बाजार की स्थिति की पहचानः एक बाजार की स्थिति की पहचान मॉड्यूल जोड़ा गया है ताकि विभिन्न बाजार स्थितियों में रणनीति पैरामीटर को स्वचालित रूप से समायोजित किया जा सके।
सिग्नल फ़िल्टरिंगः झूठे सिग्नल को कम करने के लिए ट्रेंड की ताकत थ्रेड जैसे अतिरिक्त फ़िल्टरिंग तंत्र की शुरुआत करना
लेन-देन विश्लेषणः लेन-देन की गहनता का विश्लेषण, लेन-देन की पहचान को लागू करने के लिए, संकेत की विश्वसनीयता को बढ़ाने के लिए।
मल्टी-टाइम फ्रेम एनालिसिसः ट्रेडिंग निर्णयों की स्थिरता को बढ़ाने के लिए कई टाइम फ्रेम के संकेतों को एकीकृत करना।
जोखिम प्रबंधन का अनुकूलनः अधिक जटिल जोखिम प्रबंधन रणनीतियों को लागू करना, जैसे कि गतिशील स्थिति आकार और बहु-स्तरीय रोक।
कम्प्यूटेशनल दक्षता: कम्प्यूटेशनल दक्षता बढ़ाने के लिए कोड को अनुकूलित करना, विशेष रूप से जब बड़ी मात्रा में ऐतिहासिक डेटा को संसाधित करना।
VAWSI और ट्रेंड कंटीन्यूएबिलिटी रिवर्स रणनीति एक जटिल और व्यापक ट्रेडिंग सिस्टम है जिसमें कई अभिनव संकेतकों और गतिशील पैरामीटर समायोजन शामिल हैं। इसकी ताकत बहुआयामी बाजार विश्लेषण और आत्म-अनुकूलन में निहित है, जो इसे विभिन्न बाजार स्थितियों में संभावित रिवर्स अवसरों की तलाश करने में सक्षम बनाता है। हालांकि, रणनीति की जटिलता भी ओवर-ऑप्टिमाइज़ेशन और अनुकूलन के लिए चुनौतियों के साथ आती है।
आगे के अनुकूलन के माध्यम से, विशेष रूप से पैरामीटर समायोजन, बाजार की स्थिति की पहचान और जोखिम प्रबंधन के लिए, इस रणनीति में एक शक्तिशाली व्यापारिक उपकरण बनने की क्षमता है। हालांकि, उपयोगकर्ताओं को यह ध्यान रखना चाहिए कि कोई भी रणनीति सही नहीं है, निरंतर निगरानी और समायोजन आवश्यक है। वास्तविक अनुप्रयोगों में, यह अनुशंसा की जाती है कि व्यापारिक निर्णय लेने के लिए सिमुलेशन खातों पर पर्याप्त परीक्षण किया जाए और अन्य विश्लेषणात्मक उपकरणों और बाजार ज्ञान के साथ जोड़ा जाए।
/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("VAWSI and Trend Persistance Reversal", overlay=true, max_bars_back = 4999, process_orders_on_close = true)
//INPUTS
sltp = input.float(title = "Minimum SL/TP", defval = 5.0)
rsi_weight = input.float(title = "Wawsi weight", defval = 100.0)
half_weight= input.float(title = "Trend Persistence Weight", defval = 79.0)
atr_weight = input.float(title = "ATR Weight", defval = 20.0)
com_mult = input.float(title = "Combination Mult", defval = 1, step = .001)
smoothing = input.int(title = "Trend Persistence smooth length", defval = 3)
CycPart = input.float(1.1, step = .001, title = "Length Cycle Decimal")
src = close
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//BlackCat1402's Dynamic Length Calculation
EhlersHoDyDC(Price, CycPart) =>
// Vars:
Smooth = 0.00
Detrender = 0.00
I1 = 0.00
Q1 = 0.00
jI = 0.00
jQ = 0.00
I2 = 0.00
Q2 = 0.00
Re = 0.00
Im = 0.00
Period = 0.00
SmoothPeriod = 0.00
pi = 2 * math.asin(1)
DomCycle = 0.0
//Hilbert Transform
Smooth := bar_index > 5 ? (4 * Price + 3 * nz(Price[1]) + 2 * nz(Price[2]) + nz(Price[3])) / 10 : Smooth
Detrender := bar_index > 5 ? (.0962 * Smooth + .5769 * nz(Smooth[2]) - .5769 * nz(Smooth[4]) - .0962 * nz(Smooth[6])) * (.075 * nz(Period[1]) + .54) : Detrender
//Compute InPhase and Quadrature components
Q1 := bar_index > 5 ? (.0962 * Detrender + .5769 * nz(Detrender[2]) - .5769 * nz(Detrender[4]) - .0962 * nz(Detrender[6])) * (.075 * nz(Period[1]) + .54) : Q1
I1 := bar_index > 5 ? nz(Detrender[3]) : I1
//Advance the phase of I1 and Q1 by 90 degrees
jI := (.0962 * I1 + .5769 * nz(I1[2]) - .5769 * nz(I1[4]) - .0962 * nz(I1[6])) * (.075 * nz(Period[1]) + .54)
jQ := (.0962 * Q1 + .5769 * nz(Q1[2]) - .5769 * nz(Q1[4]) - .0962 * nz(Q1[6])) * (.075 * nz(Period[1]) + .54)
//Phasor addition for 3 bar averaging
I2 := I1 - jQ
Q2 := Q1 + jI
//Smooth the I and Q components before applying the discriminator
I2 := .2 * I2 + .8 * nz(I2[1])
Q2 := .2 * Q2 + .8 * nz(Q2[1])
//Homodyne Discriminator
Re := I2 * nz(I2[1]) + Q2 * nz(Q2[1])
Im := I2 * nz(Q2[1]) - Q2 * nz(I2[1])
Re := .2 * Re + .8 * nz(Re[1])
Im := .2 * Im + .8 * nz(Im[1])
Period := Im != 0 and Re != 0 ? 2 * pi / math.atan(Im / Re) : Period
Period := Period > 1.5 * nz(Period[1]) ? 1.5 * nz(Period[1]) : Period
Period := Period < .67 * nz(Period[1]) ? .67 * nz(Period[1]) : Period
//Limit Period to be within the bounds of 6 bar and 50 bar cycles
Period := Period < 6 ? 6 : Period
Period := Period > 50 ? 50 : Period
Period := .2 * Period + .8 * nz(Period[1])
SmoothPeriod := .33 * Period + .67 * nz(SmoothPeriod[1])
//it can add filter to Period here
DomCycle := math.ceil(CycPart * SmoothPeriod) > 34 ? 34 : math.ceil(CycPart * SmoothPeriod) < 1 ? 1 : math.ceil(CycPart * SmoothPeriod)
DomCycle
wma(src, length) =>
wma = 0.0
sum = 0.0
norm = length * (length + 1) / 2
for i = 0 to length - 1
sum := sum + src[i] * (length - i)
wma := sum / norm
length = math.round(math.ceil(EhlersHoDyDC(hclose,CycPart)))
// Traditional Function initialization
highest_custom(src, length) =>
x = src
for i = 0 to math.min(length, 4999)
if src[i] > x
x := src[i]
x
lowest_custom(src, length) =>
x = src
for i = 0 to math.min(length, 4999)
if src[i] < x
x := src[i]
x
rma(src, len) =>
sum = 0.0
for i = 0 to len - 1
math.min(1, len)
sum += src[i]
rma = sum / len
rma := nz(rma[1]) * (len - 1) / len + src / len
sma(src, length) =>
math.sum(src, length) / length
hln(src, length) =>
TR = math.max(math.abs(src - src[1]), high - low)
TR := src / math.abs(ta.change(rma(TR, length)))
TR := (1 / TR) * 100
vawma(src, length) =>
atr = ta.atr(1)
aavg = sma(atr, length)
vavg = sma(volume, length)
weighted_sum = 0.0
sum_weights = 0.0
weighted = 0.0
for i = 0 to length
weight = ((volume[i] / vavg + (atr[i]) / aavg) / 2)
weighted_sum += src[i] * weight
sum_weights += weight
a = (weighted_sum / sum_weights)
vawsi(src, len) =>
rmaUp = vawma(math.max(ta.change(src), 0), len)
rmaDown = vawma(-math.min(ta.change(src), 0), len)
rsi = 100 - (100 / (1 + rmaUp / rmaDown))
trendPersistence(src, length, smoothing) =>
trendu = math.abs(src - highest_custom(src, length))
trendd = math.abs(src - lowest_custom(src, length))
trendu := wma(trendu, smoothing)
trendd := wma(trendd, smoothing)
trendu := ta.change(ta.cum(trendu))
trendd := ta.change(ta.cum(trendd))
trend = wma(math.max(trendu, trendd), smoothing)
rmaUp = rma(math.max(ta.change(trend), 0), length)
rmaDown = rma(-math.min(ta.change(trend), 0), length)
rsi = 100 - (100 / (1 + rmaUp / rmaDown))
//Strategy Calculations
sl = ((100 - sltp) / 100) * close
tp = ((100 + sltp) / 100) * close
var bool crossup = na
var bool crossdown = na
var float dir = na
var float BearGuy = 0
BullGuy = ta.barssince(crossup or crossdown)
if na(BullGuy)
BearGuy += 1
else
BearGuy := math.min(BullGuy, 4999)
rsiw = rsi_weight / 100
cew = half_weight / 100
atrw = atr_weight / 100
atr = hln(hclose, length) * atrw
ce = 1 / trendPersistence(hclose, length, smoothing)
com = 1 / math.max(math.abs(vawsi(hclose, length) - 50) * 2, 20)
comfin = (((com * rsiw) + (ce * cew) - atr)) * com_mult
lower = highest_custom(math.min((math.max(highest_custom(src, BearGuy) * (1 - comfin), sl)), src[1]), BearGuy)
upper = lowest_custom(math.max((math.min(lowest_custom(src, BearGuy) * (1 + comfin), tp)), src[1]), BearGuy)
var float thresh = na
if na(thresh)
thresh := lower
if na(dir)
dir := 1
if crossdown
dir := -1
if crossup
dir := 1
if dir == 1
thresh := lower
if dir == -1
thresh := upper
crossup := ta.crossover(hclose, thresh) and barstate.isconfirmed
crossdown := ta.crossunder(hclose, thresh) and barstate.isconfirmed
//STRATEGY
if crossup
strategy.entry("long", strategy.long)
if crossdown
strategy.entry("Short", strategy.short)
//PLOTTING
col = hclose > thresh ? color.lime : color.red
plot(thresh, linewidth = 2, color = color.new(col[1], 0))