
इस रणनीति का उपयोग मुख्य रूप से समानांतर क्रॉसिंग सिद्धांत का उपयोग करता है, आरएसआई सूचक रिवर्स सिग्नल के साथ, और अनुकूलित द्वि-लाइन ट्रैकिंग एल्गोरिथ्म समानांतर क्रॉसिंग ट्रेडों को प्राप्त करने के लिए। रणनीति दो अलग-अलग अवधि के समानांतर क्रॉसिंग को ट्रैक करती है, एक तेज़ समानांतर ट्रेंड को ट्रैक करती है, दूसरी धीमी समानांतर ट्रेंड को ट्रैक करती है। जब तेज़ समानांतर ट्रेंड धीमी समानांतर को पार करता है, तो यह संकेत देता है कि अल्पकालिक ट्रेंड ऊपर है, और खरीदा जा सकता है; जब तेज़ समानांतर ट्रेंड धीमी समानांतर को पार करता है, तो यह संकेत देता है कि अल्पकालिक ट्रेंड समाप्त हो गया है, और इसे बंद कर दिया जाना चाहिए।
दीर्घकालिक और अल्पकालिक रुझानों का प्रतिनिधित्व करने वाले विभिन्न मापदंडों के दो सेटों के लिए VWAP औसत की गणना करना
धीमी औसत रेखा और तेज़ औसत रेखा के रूप में क्रमशः दो सेटों के बीच का औसत लें
बुलिन बैंड के सूचकांक की गणना करने के लिए
टीएसवी सूचकांक की गणना करें
आरएसआई सूचकांक को ओवरबॉट और ओवरसोल्ड के रूप में गणना करें
प्रवेश की शर्तें:
खेल की शर्तें:
एक द्वि-समान-रेखा प्रणाली का उपयोग करना जो एक साथ दीर्घकालिक और अल्पकालिक रुझानों को पकड़ता है
आरएसआई सूचकांक ने ओवरबॉट क्षेत्र में खरीदने और ओवरबॉट क्षेत्र में बेचने से परहेज किया
टीएसवी सूचकांक प्रवृत्ति का समर्थन करने के लिए पर्याप्त लेनदेन सुनिश्चित करता है
ब्रिन बैंड का उपयोग करते हुए महत्वपूर्ण सफलताएं
कई सूचकांक संयोजनों के साथ, एक प्रभावी फ़िल्टर
सम-रेखा प्रणाली गलत संकेतों के लिए अतिसंवेदनशील है और सहायक सूचक फ़िल्टरिंग की आवश्यकता होती है
आरएसआई के पैरामीटर को अनुकूलित करने की आवश्यकता है, अन्यथा यह खरीद और बिक्री के बिंदु को याद कर सकता है
टीएसवी सूचकांक भी पैरामीटर के प्रति संवेदनशील है और सावधानीपूर्वक परीक्षण की आवश्यकता है
ब्रेकिंग ब्रिन को पटरी पर लाना एक झूठी सफलता हो सकती है, जिसे सत्यापित करने की आवश्यकता है
बहु-सूचक संयोजन, पैरामीटर अनुकूलन मुश्किल है, अति-अनुकूलन के लिए आसान है
अपर्याप्त प्रशिक्षण और परीक्षण डेटा के कारण वक्रता मिलान संभव है
सबसे अच्छा संयोजन खोजने के लिए अधिक चक्रों का परीक्षण करें
अन्य संकेतकों की कोशिश करें जैसे कि MACD, KD विकल्प या RSI संयोजन
पैरामीटर का अनुकूलन करने के लिए वाकल फॉरवर्ड विश्लेषण का लाभ उठाएं
एकल हानि को नियंत्रित करने के लिए अतिरिक्त स्टॉप-लॉस रणनीति
मशीन लर्निंग मॉडल में सहायक सिग्नल निर्णय को शामिल करने पर विचार करें
विभिन्न बाजारों के लिए मापदंडों को समायोजित करें, एकल मापदंडों के संयोजन पर अत्यधिक निर्भर न हों
इस रणनीति के माध्यम से द्वि-समान रेखा प्रणाली लंबी और छोटी अवधि के रुझान को पकड़ने के लिए, और आरएसआई, टीएसवी, और ब्लिंडिंग जैसे कई संकेतकों का उपयोग कर संकेतों को फ़िल्टर. रणनीति का लाभ यह है कि यह लंबे समय तक बढ़ती लहरों को पकड़ने के लिए अनुक्रमिक रूप से किया जा सकता है. लेकिन कुछ झूठे संकेत जोखिम भी हैं, जो जोखिम को कम करने के लिए पैरामीटर को और अधिक अनुकूलित करने और रोक को नियंत्रित करने की आवश्यकता है. कुल मिलाकर, यह रणनीति प्रवृत्ति ट्रैकिंग और उलटा संकेतकों के संयोजन में है, जो लंबी लाइन पर बाजार में बढ़ते समय अधिक प्रभावी होती है, लेकिन विभिन्न बाजारों के लिए पैरामीटर को समायोजित करने की आवश्यकता होती है।
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Credits
// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.
// "Vidya" code which used in this strategy was written by "everget" active on https://tr.tradingview.com/u/everget/
strategy("HYE Combo Market [Strategy] (Vwap Mean Reversion + Trend Hunter)", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)
//Strategy inputs
source = input(title = "Source", defval = close, group = "Mean Reversion Strategy Inputs")
smallcumulativePeriod = input(title = "Small VWAP", defval = 8, group = "Mean Reversion Strategy Inputs")
bigcumulativePeriod = input(title = "Big VWAP", defval = 10, group = "Mean Reversion Strategy Inputs")
meancumulativePeriod = input(title = "Mean VWAP", defval = 50, group = "Mean Reversion Strategy Inputs")
percentBelowToBuy = input(title = "Percent below to buy %", defval = 2, group = "Mean Reversion Strategy Inputs")
rsiPeriod = input(title = "Rsi Period", defval = 2, group = "Mean Reversion Strategy Inputs")
rsiEmaPeriod = input(title = "Rsi Ema Period", defval = 5, group = "Mean Reversion Strategy Inputs")
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30, group = "Mean Reversion Strategy Inputs")
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
slowkijunsenPeriod = input(13, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
fasttenkansenPeriod = input(3, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
fastkijunsenPeriod = input(7, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Trend Hunter Strategy Inputs")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Trend Hunter Strategy Inputs")
tsvlength = input(20, minval=1, title="TSV Length", group = "Trend Hunter Strategy Inputs")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Trend Hunter Strategy Inputs")
length = input(title="Vidya Length", type=input.integer, defval=20, group = "Trend Hunter Strategy Inputs")
src = input(title="Vidya Source", type=input.source, defval= hl2 , group = "Trend Hunter Strategy Inputs")
// Vidya Calculation
getCMO(src, length) =>
mom = change(src)
upSum = sum(max(mom, 0), length)
downSum = sum(-min(mom, 0), length)
out = (upSum - downSum) / (upSum + downSum)
out
cmo = abs(getCMO(src, length))
alpha = 2 / (length + 1)
vidya = 0.0
vidya := src * alpha * cmo + nz(vidya[1]) * (1 - alpha * cmo)
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31, group = "Strategy Date Range")
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12, group = "Strategy Date Range")
startYear = input(title="Start Year", type=input.integer,
defval=2000, minval=1800, maxval=2100, group = "Strategy Date Range")
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31, group = "Strategy Date Range")
endMonth = input(title="End Month", type=input.integer,
defval=12, minval=1, maxval=12, group = "Strategy Date Range")
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100, group = "Strategy Date Range")
inDateRange = true
// Mean Reversion Strategy Calculation
typicalPriceS = (high + low + close) / 3
typicalPriceVolumeS = typicalPriceS * volume
cumulativeTypicalPriceVolumeS = sum(typicalPriceVolumeS, smallcumulativePeriod)
cumulativeVolumeS = sum(volume, smallcumulativePeriod)
smallvwapValue = cumulativeTypicalPriceVolumeS / cumulativeVolumeS
typicalPriceB = (high + low + close) / 3
typicalPriceVolumeB = typicalPriceB * volume
cumulativeTypicalPriceVolumeB = sum(typicalPriceVolumeB, bigcumulativePeriod)
cumulativeVolumeB = sum(volume, bigcumulativePeriod)
bigvwapValue = cumulativeTypicalPriceVolumeB / cumulativeVolumeB
typicalPriceM = (high + low + close) / 3
typicalPriceVolumeM = typicalPriceM * volume
cumulativeTypicalPriceVolumeM = sum(typicalPriceVolumeM, meancumulativePeriod)
cumulativeVolumeM = sum(volume, meancumulativePeriod)
meanvwapValue = cumulativeTypicalPriceVolumeM / cumulativeVolumeM
rsiValue = rsi(source, rsiPeriod)
rsiEMA = ema(rsiValue, rsiEmaPeriod)
buyMA = ((100 - percentBelowToBuy) / 100) * bigvwapValue[0]
inTrade = strategy.position_size > 0
notInTrade = strategy.position_size <= 0
if(crossunder(smallvwapValue, buyMA) and rsiEMA < rsiLevelforBuy and close < meanvwapValue and inDateRange and notInTrade)
strategy.entry("BUY-M", strategy.long)
if(close > meanvwapValue or not inDateRange)
strategy.close("BUY-M")
// Trend Hunter Strategy Calculation
// Slow Tenkan Sen Calculation
typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS
// Slow Kijun Sen Calculation
typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS
// Fast Tenkan Sen Calculation
typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF
// Fast Kijun Sen Calculation
typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF
// Slow LeadLine Calculation
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)
lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)
slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)
// Fast LeadLine Calculation
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)
lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)
fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)
// BBleadLine Calculation
BBleadLine = avg(fastleadLine, slowleadLine)
// Bollinger Band Calculation
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev
// TSV Calculation
tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)
// Rules for Entry & Exit
if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and close > vidya and inDateRange and notInTrade)
strategy.entry("BUY-T", strategy.long)
if((fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1]) or not inDateRange)
strategy.close("BUY-T")
// Plots
plot(meanvwapValue, title="MEAN VWAP", linewidth=2, color=color.yellow)
//plot(vidya, title="VIDYA", linewidth=2, color=color.green)
//colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
//plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)
//colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
//plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)
//p1 = plot(upper, "Upper BB", color=#2962FF)
//p2 = plot(lower, "Lower BB", color=#2962FF)
//fill(p1, p2, title = "Background", color=color.blue)
//plot(smallvwapValue, color=#13C425, linewidth=2)
//plot(bigvwapValue, color=#CA1435, linewidth=2)