डायनेमिक रेंज फ़िल्टर के साथ संयुक्त उन्नत मात्रात्मक प्रवृत्ति कैप्चर रणनीति

EMA MA RF VOL SMA HA
निर्माण तिथि: 2024-12-17 14:31:11 अंत में संशोधित करें: 2024-12-17 14:31:11
कॉपी: 4 क्लिक्स: 420
1
ध्यान केंद्रित करना
1617
समर्थक

डायनेमिक रेंज फ़िल्टर के साथ संयुक्त उन्नत मात्रात्मक प्रवृत्ति कैप्चर रणनीति

अवलोकन

यह रणनीति एक उन्नत मात्रात्मक ट्रेडिंग प्रणाली है जिसमें चलती औसत और गतिशील रेंज फ़िल्टर शामिल हैं। यह मुख्य रूप से मूल्य परिवर्तन और लेनदेन की मात्रा के बीच संबंधों का विश्लेषण करके बाजार की प्रवृत्ति की पहचान करता है, जबकि रेंज फ़िल्टर का उपयोग करके झूठे संकेतों को फ़िल्टर करता है, जिससे ट्रेडिंग की सटीकता में सुधार होता है। रणनीति बाजार की तरलता सीमाओं को निर्धारित करने के लिए अनुकूलित गणना विधियों का उपयोग करती है, और प्रवृत्ति की दिशा की पुष्टि करने के लिए तेज और धीमी गति से चलती औसत के साथ संयुक्त है।

रणनीति सिद्धांत

इस रणनीति का मूल तर्क निम्नलिखित प्रमुख गणनाओं पर आधारित हैः

  1. तरलता विश्लेषण: बाजार की तरलता का आकलन करें और गतिशील तरलता सीमाएं निर्धारित करें।
  2. प्रवृत्ति की पुष्टिः प्रवृत्ति की दिशा की पुष्टि करने के लिए 50 चक्र और 100 चक्र की सूचकांक चलती औसत (ईएमए) का उपयोग करें
  3. रेंज फ़िल्टरिंगः गतिशील ट्रेडिंग क्षेत्र बनाने के लिए 50 चक्रों के नमूने चक्र और 3 गुना रेंज गुणक का उपयोग करें।
  4. सिग्नल जनरेशनः जब कीमत रेंज फ़िल्टर को तोड़ती है और ईएमए संकेतक एक समान प्रवृत्ति दिखाते हैं, तो एक ट्रेडिंग सिग्नल उत्पन्न होता है।

रणनीतिक लाभ

  1. अनुकूलनशीलता: रणनीति बाजार की स्थितियों के अनुसार पैरामीटर को गतिशील रूप से समायोजित करने में सक्षम है, जो विभिन्न बाजार स्थितियों के अनुकूल है।
  2. सिग्नल विश्वसनीयताः कई तकनीकी संकेतकों और फिल्टर के संयोजन के माध्यम से, झूठे संकेतों को प्रभावी ढंग से कम करें।
  3. जोखिम प्रबंधन में सुधारः स्टॉपलॉस की स्वचालित गणना को एकीकृत करके जोखिम को प्रभावी ढंग से नियंत्रित किया जा सकता है।
  4. पूर्ण फीडबैकः विस्तृत फीडबैक सेटिंग्स शामिल हैं जो रणनीति अनुकूलन में मदद करते हैं।

रणनीतिक जोखिम

  1. पैरामीटर संवेदनशीलता: रणनीति के कई पैरामीटरों को बारीकी से समायोजित करने की आवश्यकता होती है और ओवर-ऑप्टिमाइज़ेशन के लिए आसान है।
  2. स्लिप इफेक्टः उच्च अस्थिरता वाले बाजारों में, स्लिप इफेक्ट का जोखिम अधिक हो सकता है।
  3. बाजार अनुकूलनशीलता: बाज़ारों में अक्सर गलत संकेत मिल सकते हैं।
  4. निधि प्रबंधन: निश्चित निधि का आवंटन सभी बाजार स्थितियों के लिए उपयुक्त नहीं हो सकता है।

रणनीति अनुकूलन दिशा

  1. पैरामीटर अनुकूलनः एक अनुकूलन पैरामीटर समायोजन तंत्र को पेश किया जा सकता है, जिससे बाजार की स्थिति के अनुसार पैरामीटर स्वचालित रूप से समायोजित हो सकें।
  2. बाजार की स्थिति की पहचानः विभिन्न बाजार स्थितियों में विभिन्न व्यापारिक रणनीतियों को लागू करने के लिए बाजार की स्थिति का आकलन करने के लिए एक मॉड्यूल जोड़ा गया।
  3. धन प्रबंधन का अनुकूलनः गतिशील पोजीशन प्रबंधन की शुरूआत, बाजार की अस्थिरता के अनुसार व्यापार के आकार को समायोजित करना।
  4. सिग्नल फ़िल्टरिंग में सुधारः झूठे सिग्नल को फ़िल्टर करने के लिए अधिक तकनीकी संकेतकों को जोड़ा जा सकता है।

संक्षेप

यह रणनीति तरलता विश्लेषण, रुझान ट्रैकिंग और रेंज फिल्टर के संयोजन के माध्यम से एक पूर्ण मात्रात्मक ट्रेडिंग प्रणाली का निर्माण करती है। इसकी ताकत बाजार में बदलाव के लिए अनुकूलन करने और विश्वसनीय ट्रेडिंग सिग्नल प्रदान करने में है, लेकिन इसके साथ ही पैरामीटर अनुकूलन और जोखिम प्रबंधन पर ध्यान देने की आवश्यकता है। निरंतर अनुकूलन और सुधार के माध्यम से, यह रणनीति विभिन्न बाजार स्थितियों में स्थिर प्रदर्शन बनाए रखने की उम्मीद करती है।

रणनीति स्रोत कोड
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Killer Coin V2 + Range Filter Strategy", shorttitle="KC-RF Strategy", overlay=true
         )

// === INPUT BACKTEST RANGE ===
useDate = input(true, title='---------------- Use Date ----------------', group="Backtest Settings")
FromMonth = input.int(7, title="From Month", minval=1, maxval=12, group="Backtest Settings")
FromDay = input.int(25, title="From Day", minval=1, maxval=31, group="Backtest Settings")
FromYear = input.int(2019, title="From Year", minval=2017, group="Backtest Settings")
ToMonth = input.int(1, title="To Month", minval=1, maxval=12, group="Backtest Settings")
ToDay = input.int(1, title="To Day", minval=1, maxval=31, group="Backtest Settings")
ToYear = input.int(9999, title="To Year", minval=2017, group="Backtest Settings")
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish

// === KILLER COIN V2 INPUTS ===
outlierThreshold = input.int(10, "Outlier Threshold Length", group="Killer Coin Settings")
fastMovingAverageLength = input.int(50, "Fast MA length", group="Killer Coin Settings")
slowMovingAverageLength = input.int(100, "Slow MA length", group="Killer Coin Settings")

// === RANGE FILTER INPUTS ===
sources = input(close, "Source", group="Range Filter Settings")
isHA = input(false, "Use HA Candles", group="Range Filter Settings")
per = input.int(50, "Sampling Period", minval=1, group="Range Filter Settings")
mult = input.float(3.0, "Range Multiplier", minval=0.1, group="Range Filter Settings")

// === KILLER COIN V2 CALCULATIONS ===
priceMovementLiquidity = volume / math.abs(close - open)
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)
var liquidityValues = array.new_float(5)

if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)

fastEMA = ta.ema(array.get(liquidityValues, 0), fastMovingAverageLength)
slowEMA = ta.ema(array.get(liquidityValues, 0), slowMovingAverageLength)

// === RANGE FILTER CALCULATIONS ===
src = isHA ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, sources) : sources

// Smooth Average Range
smoothrng(x, t, m) =>
    wper = (t*2) - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper)*m
    smoothrng

smrng = smoothrng(src, per, mult)

// Range Filter
rngfilt(x, r) =>
    rngfilt = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt

filt = rngfilt(src, smrng)

// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands
hband = filt + smrng
lband = filt - smrng

// === PLOTTING ===
// Killer Coin V2 Plots
bullColor = color.new(#00ffbb, 50)
bearColor = color.new(#800080, 50)
fastPlot = plot(fastEMA, "Fast EMA", color = fastEMA > slowEMA ? bullColor : bearColor)
slowPlot = plot(slowEMA, "Slow EMA", color = fastEMA > slowEMA ? bullColor : bearColor)
fill(fastPlot, slowPlot, color = fastEMA > slowEMA ? bullColor : bearColor)

// Range Filter Plots
filtcolor = upward > 0 ? color.new(color.lime, 0) : downward > 0 ? color.new(color.red, 0) : color.new(color.orange, 0)
filtplot = plot(filt, "Range Filter", color=filtcolor, linewidth=3)
hbandplot = plot(hband, "High Target", color=color.new(color.aqua, 90))
lbandplot = plot(lband, "Low Target", color=color.new(color.fuchsia, 90))
fill(hbandplot, filtplot, color=color.new(color.aqua, 90))
fill(lbandplot, filtplot, color=color.new(color.fuchsia, 90))

// === STRATEGY CONDITIONS ===
// Range Filter Conditions
longCond = ((src > filt) and (src > src[1]) and (upward > 0)) or ((src > filt) and (src < src[1]) and (upward > 0))
shortCond = ((src < filt) and (src < src[1]) and (downward > 0)) or ((src < filt) and (src > src[1]) and (downward > 0))

CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1

// Combined Conditions
finalLongSignal = longCondition and fastEMA > slowEMA and window()
finalShortSignal = shortCondition and fastEMA < slowEMA and window()

// === PLOTTING SIGNALS ===
plotshape(finalLongSignal, "Buy Signal", text="BUY", textcolor=color.white, 
         style=shape.labelup, size=size.normal, location=location.belowbar, 
         color=color.new(color.green, 0))
         
plotshape(finalShortSignal, "Sell Signal", text="SELL", textcolor=color.white, 
         style=shape.labeldown, size=size.normal, location=location.abovebar, 
         color=color.new(color.red, 0))

// === STRATEGY ENTRIES ===
if finalLongSignal
    strategy.entry("Long", strategy.long, stop=hband)
    
if finalShortSignal
    strategy.entry("Short", strategy.short, stop=lband)

// === ALERTS ===
alertcondition(finalLongSignal, "Strong Buy Signal", "🚨 Buy - Both Indicators Aligned!")
alertcondition(finalShortSignal, "Strong Sell Signal", "🚨 Sell - Both Indicators Aligned!")