
यह रणनीति एक ट्रेड वॉल्यूम और मूल्य परिवर्तन पर आधारित ट्रेंड ट्रैकिंग सिस्टम है, जो बाजार की दिशा की भविष्यवाणी करने के लिए नेट ट्रेड वॉल्यूम ऑब्जेक्टिव इंडिकेटर (एनवीओ) की गणना करती है। रणनीति कई प्रकार के चलती औसत (ईएमए, डब्ल्यूएमए, एसएमए, एचएमए) को जोड़ती है, जो बाजार के रुझानों को निर्धारित करने के लिए ऑब्जेक्टिव इंडिकेटर की तुलना करता है और इसके ईएमए ओवरले लाइन के साथ स्थितियों के संबंध में, और उचित समय पर व्यापार करता है। रणनीति में जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए स्टॉप-लॉस और स्टॉप-स्टॉप तंत्र भी शामिल हैं।
रणनीति का मूल यह है कि बाजार की भावना को दैनिक शुद्ध लेनदेन की मात्रा के उतार-चढ़ाव के मूल्य की गणना करके निर्धारित किया जाए।
ट्रेडिंग सिग्नल निम्नलिखित नियमों के आधार पर उत्पन्न होते हैंः
जोखिम नियंत्रण सुझाव:
सिग्नल सत्यापन तंत्र का अनुकूलन:
जोखिम प्रबंधन अनुकूलन:
पैरामीटर अनुकूलित करेंः
इस रणनीति के माध्यम से एक व्यापक विश्लेषण के लेन-देन और मूल्य डेटा, एक अधिक पूर्ण प्रवृत्ति ट्रैकिंग व्यापार प्रणाली का निर्माण. रणनीति की मुख्य विशेषता यह है कि यह कई तकनीकी संकेतकों के संयोजन और लचीला पैरामीटर विन्यास विकल्प प्रदान करता है. हालांकि कुछ जोखिम है, उचित जोखिम नियंत्रण और निरंतर अनुकूलन के माध्यम से, रणनीति वास्तविक व्यापार में स्थिर रिटर्न प्राप्त करने की उम्मीद है. यह सलाह दी जाती है कि व्यापारियों को वास्तविक उपयोग से पहले पर्याप्त प्रतिक्रिया दी जाए और विशिष्ट बाजार स्थितियों के अनुसार पैरामीटर को उचित रूप से समायोजित किया जाए.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("EMA-Based Net Volume Oscillator with Trend Change", shorttitle="NVO Trend Change", overlay=false, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Input parameters
maType = input.string("WMA", "Moving Average Type", options=["WMA", "EMA", "SMA", "HMA"])
maLength = input.int(21, "MA Length", minval=1)
emaOverlayLength = input.int(9, "EMA Overlay Length", minval=1)
oscillatorMultiplier = input.float(1.0, "Oscillator Multiplier", minval=0.1, step=0.1)
showHistogram = input.bool(true, "Show Histogram")
stopLossPerc = input.float(1.0, "Stop Loss (%)", tooltip="Set 999 to disable")
takeProfitPerc = input.float(2.0, "Take Profit (%)", tooltip="Set 999 to disable")
// Calculate Net Volume Oscillator
priceRange = high - low
multiplier = priceRange > 0 ? (close - low) / priceRange : 0.5
var float effectiveUpVol = 0.0
var float effectiveDownVol = 0.0
if close > close[1]
effectiveUpVol := volume * multiplier
effectiveDownVol := volume * (1 - multiplier)
else if close < close[1]
effectiveUpVol := volume * multiplier
effectiveDownVol := volume * (1 - multiplier)
else
effectiveUpVol := 0.0
effectiveDownVol := 0.0
netVolume = effectiveUpVol - effectiveDownVol
dailyNetOscillator = volume > 0 ? (netVolume / volume) * 100 : 0
// Apply selected Moving Average
var float oscillator = na
if maType == "WMA"
oscillator := ta.wma(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "EMA"
oscillator := ta.ema(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "SMA"
oscillator := ta.sma(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "HMA"
oscillator := ta.hma(dailyNetOscillator, maLength) * oscillatorMultiplier
// EMA Overlay
emaOverlay = ta.ema(oscillator, emaOverlayLength)
// Rate of Change (ROC) for Oscillator
roc = ta.roc(oscillator, 1) // 1-period rate of change
// Trading logic
longCondition = oscillator > emaOverlay
shortCondition = oscillator < emaOverlay
// Exit conditions
exitLong = oscillator < emaOverlay and strategy.position_size > 0
exitShort = oscillator > emaOverlay and strategy.position_size < 0
// Execute trades
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
if exitLong
strategy.close("Long")
if shortCondition and strategy.position_size >= 0
strategy.entry("Short", strategy.short)
if exitShort
strategy.close("Short")
// Stop Loss and Take Profit
stopLossLong = stopLossPerc != 999 ? strategy.position_avg_price * (1 - stopLossPerc/100) : na
takeProfitLong = takeProfitPerc != 999 ? strategy.position_avg_price * (1 + takeProfitPerc/100) : na
stopLossShort = stopLossPerc != 999 ? strategy.position_avg_price * (1 + stopLossPerc/100) : na
takeProfitShort = takeProfitPerc != 999 ? strategy.position_avg_price * (1 - takeProfitPerc/100) : na
if (not na(stopLossLong) and not na(takeProfitLong) and strategy.position_size > 0)
strategy.exit("Long SL/TP", "Long", stop=stopLossLong, limit=takeProfitLong)
if (not na(stopLossShort) and not na(takeProfitShort) and strategy.position_size < 0)
strategy.exit("Short SL/TP", "Short", stop=stopLossShort, limit=takeProfitShort)
// Plotting
plot(oscillator, "Net Volume Oscillator", color.blue)
plot(emaOverlay, "EMA Overlay", color.orange)
hline(0, "Zero Line", color.gray)
// Histogram with Trend Change Visualization
var color histogramColor = na
if oscillator > 0
histogramColor := roc >= 0 ? color.new(color.green, 70) : color.new(color.lime, 70) // Green for bullish, light green for weakening
else if oscillator < 0
histogramColor := roc >= 0 ? color.new(color.red, 70) : color.new(color.maroon, 70) // Red for bearish, light red for weakening
plot(showHistogram ? oscillator : na, style=plot.style_histogram, color=histogramColor, title="Histogram")